diff options
author | Christian S <christian@pix-art.de> | 2016-01-23 11:10:01 +0100 |
---|---|---|
committer | Christian S <christian@pix-art.de> | 2016-01-23 11:10:01 +0100 |
commit | 07d139decd7ed9f616b15539bbca00e244eb8a29 (patch) | |
tree | 339791f3e322529144f40e6953af7d1b2dd30722 | |
parent | 7dd587554f81a35a42a2fdc4cdd74785b28114bc (diff) |
make actionbar title/subtitle clickable
* show conference or contact details
* hide button to show conference or contact details
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/ConversationActivity.java | 93 | ||||
-rw-r--r-- | src/main/res/layout/ab_title.xml | 30 | ||||
-rw-r--r-- | src/main/res/menu/conversations.xml | 7 |
3 files changed, 104 insertions, 26 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index f9044fcf5..a432fc19d 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -34,6 +34,7 @@ import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.PopupMenu; import android.widget.PopupMenu.OnMenuItemClickListener; +import android.widget.TextView; import android.widget.Toast; import net.java.otr4j.session.SessionStatus; @@ -70,7 +71,7 @@ import eu.siacs.conversations.xmpp.jid.InvalidJidException; import eu.siacs.conversations.xmpp.jid.Jid; public class ConversationActivity extends XmppActivity - implements OnAccountUpdate, OnConversationUpdate, OnRosterUpdate, OnUpdateBlocklist, XmppConnectionService.OnShowErrorToast { + implements OnAccountUpdate, OnConversationUpdate, OnRosterUpdate, OnUpdateBlocklist, XmppConnectionService.OnShowErrorToast, View.OnClickListener { public static final String ACTION_DOWNLOAD = "eu.siacs.conversations.action.DOWNLOAD"; @@ -355,12 +356,12 @@ public class ConversationActivity extends XmppActivity public void switchToConversation(Conversation conversation) { setSelectedConversation(conversation); runOnUiThread(new Runnable() { - @Override - public void run() { - ConversationActivity.this.mConversationFragment.reInit(getSelectedConversation()); - openConversation(); - } - }); + @Override + public void run() { + ConversationActivity.this.mConversationFragment.reInit(getSelectedConversation()); + openConversation(); + } + }); } private void updateActionBarTitle() { @@ -374,31 +375,60 @@ public class ConversationActivity extends XmppActivity if (titleShouldBeName && conversation != null) { ab.setDisplayHomeAsUpEnabled(true); ab.setHomeButtonEnabled(true); + ab.setDisplayShowTitleEnabled(false); + ab.setDisplayShowCustomEnabled(true); + ab.setCustomView(R.layout.ab_title); if (conversation.getMode() == Conversation.MODE_SINGLE || useSubjectToIdentifyConference()) { - ab.setTitle(conversation.getName()); + //ab.setTitle(conversation.getName()); + TextView abtitle = (TextView) findViewById(android.R.id.text1); + abtitle.setText(conversation.getName()); + abtitle.setOnClickListener(this); if (conversation.getMode() == Conversation.MODE_SINGLE) { if (conversation.getContact().getPresences().getMostAvailableStatus() == Presences.OFFLINE) { - ab.setSubtitle(getString(R.string.account_status_offline)); + //ab.setSubtitle(getString(R.string.account_status_offline)); + TextView absubtitle = (TextView) findViewById(android.R.id.text2); + absubtitle.setText(getString(R.string.account_status_offline)); + absubtitle.setOnClickListener(this); } else { ChatState state = conversation.getIncomingChatState(); if (state == ChatState.COMPOSING) { - ab.setSubtitle(getString(R.string.is_typing)); + //ab.setSubtitle(getString(R.string.is_typing)); + TextView absubtitle = (TextView) findViewById(android.R.id.text2); + absubtitle.setText(getString(R.string.is_typing)); + absubtitle.setOnClickListener(this); } else if (state == ChatState.PAUSED) { - ab.setSubtitle(UIHelper.lastseen(getApplicationContext(), conversation.getContact().lastseen.time)); + //ab.setSubtitle(UIHelper.lastseen(getApplicationContext(), conversation.getContact().lastseen.time)); + TextView absubtitle = (TextView) findViewById(android.R.id.text2); + absubtitle.setText(UIHelper.lastseen(getApplicationContext(), conversation.getContact().lastseen.time)); + absubtitle.setOnClickListener(this); } else { - ab.setSubtitle(UIHelper.lastseen(getApplicationContext(), conversation.getContact().lastseen.time)); + //ab.setSubtitle(UIHelper.lastseen(getApplicationContext(), conversation.getContact().lastseen.time)); + TextView absubtitle = (TextView) findViewById(android.R.id.text2); + absubtitle.setText(UIHelper.lastseen(getApplicationContext(), conversation.getContact().lastseen.time)); + absubtitle.setOnClickListener(this); } } } else if (useSubjectToIdentifyConference()) { - ab.setSubtitle(conversation.getParticipants()); + //ab.setSubtitle(conversation.getParticipants()); + TextView absubtitle = (TextView) findViewById(android.R.id.text2); + absubtitle.setText(conversation.getParticipants()); + absubtitle.setOnClickListener(this); } } else { - ab.setTitle(conversation.getJid().toBareJid().toString()); - ab.setSubtitle(null); + //ab.setTitle(conversation.getJid().toBareJid().toString()); + TextView abtitle = (TextView) findViewById(android.R.id.text1); + abtitle.setText(conversation.getJid().toBareJid().toString()); + abtitle.setOnClickListener(this); + //ab.setSubtitle(null); + TextView absubtitle = (TextView) findViewById(android.R.id.text2); + absubtitle.setText(null); + absubtitle.setOnClickListener(this); } } else { - ab.setDisplayHomeAsUpEnabled(false); - ab.setHomeButtonEnabled(false); + ab.setDisplayHomeAsUpEnabled(false); + ab.setHomeButtonEnabled(false); + ab.setDisplayShowTitleEnabled(true); + ab.setDisplayShowCustomEnabled(false); ab.setTitle(R.string.app_name); ab.setSubtitle(null); } @@ -431,8 +461,8 @@ public class ConversationActivity extends XmppActivity getMenuInflater().inflate(R.menu.conversations, menu); final MenuItem menuSecure = menu.findItem(R.id.action_security); final MenuItem menuArchive = menu.findItem(R.id.action_archive); - final MenuItem menuMucDetails = menu.findItem(R.id.action_muc_details); - final MenuItem menuContactDetails = menu.findItem(R.id.action_contact_details); + //final MenuItem menuMucDetails = menu.findItem(R.id.action_muc_details); + //final MenuItem menuContactDetails = menu.findItem(R.id.action_contact_details); final MenuItem menuAttach = menu.findItem(R.id.action_attach_file); final MenuItem menuClearHistory = menu.findItem(R.id.action_clear_history); final MenuItem menuAdd = menu.findItem(R.id.action_add); @@ -445,8 +475,8 @@ public class ConversationActivity extends XmppActivity if (isConversationsOverviewVisable() && isConversationsOverviewHideable()) { menuArchive.setVisible(false); - menuMucDetails.setVisible(false); - menuContactDetails.setVisible(false); + //menuMucDetails.setVisible(false); + //menuContactDetails.setVisible(false); menuSecure.setVisible(false); menuInviteContact.setVisible(false); menuAttach.setVisible(false); @@ -470,13 +500,13 @@ public class ConversationActivity extends XmppActivity } } if (this.getSelectedConversation().getMode() == Conversation.MODE_MULTI) { - menuContactDetails.setVisible(false); + //menuContactDetails.setVisible(false); menuAttach.setVisible(getSelectedConversation().getAccount().httpUploadAvailable() && getSelectedConversation().getMucOptions().participating()); menuInviteContact.setVisible(getSelectedConversation().getMucOptions().canInvite()); menuSecure.setVisible(!Config.HIDE_ENCRYPTION_IN_UI); menuSecure.setVisible(!Config.HIDE_PGP_IN_UI && !Config.X509_VERIFICATION); //if pgp is hidden conferences have no choice of encryption } else { - menuMucDetails.setVisible(false); + //menuMucDetails.setVisible(false); } if (this.getSelectedConversation().isMuted()) { menuMute.setVisible(false); @@ -692,6 +722,7 @@ public class ConversationActivity extends XmppActivity case R.id.action_archive: this.endConversation(getSelectedConversation()); break; +/* case R.id.action_contact_details: switchToContactDetails(getSelectedConversation().getContact()); break; @@ -702,6 +733,7 @@ public class ConversationActivity extends XmppActivity intent.putExtra("uuid", getSelectedConversation().getUuid()); startActivity(intent); break; +*/ case R.id.action_invite: inviteToConversation(getSelectedConversation()); break; @@ -1665,4 +1697,19 @@ public class ConversationActivity extends XmppActivity public boolean highlightSelectedConversations() { return !isConversationsOverviewHideable() || this.conversationWasSelectedByKeyboard; } + + @Override + public void onClick(View view) { + final Conversation conversation = getSelectedConversation(); + Log.e("Con","Clicked Title"); + if (conversation.getMode() == Conversation.MODE_SINGLE) { + switchToContactDetails(getSelectedConversation().getContact()); + } else if (conversation.getMode() == Conversation.MODE_MULTI) { + Intent intent = new Intent(this, + ConferenceDetailsActivity.class); + intent.setAction(ConferenceDetailsActivity.ACTION_VIEW_MUC); + intent.putExtra("uuid", getSelectedConversation().getUuid()); + startActivity(intent); + } + } }
\ No newline at end of file diff --git a/src/main/res/layout/ab_title.xml b/src/main/res/layout/ab_title.xml new file mode 100644 index 000000000..5b22ad252 --- /dev/null +++ b/src/main/res/layout/ab_title.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" android:layout_width="match_parent" + android:layout_height="match_parent"> + + <TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@android:id/text1" + style="@style/Base.TextAppearance.AppCompat.Widget.ActionBar.Title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:singleLine="true" + android:gravity="center_vertical" + android:textColor="@color/grey200" + android:clickable="true" + android:onClick="onClick" /> + <TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@android:id/text2" + style="@style/Base.TextAppearance.AppCompat.Widget.ActionBar.Subtitle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:layout_below="@android:id/text1" + android:singleLine="true" + android:textSize="12dp" + android:textColor="@color/black54" + android:gravity="center_vertical" + android:onClick="onClick" + android:clickable="true" /> +</RelativeLayout>
\ No newline at end of file diff --git a/src/main/res/menu/conversations.xml b/src/main/res/menu/conversations.xml index 47214a6b7..8754f869c 100644 --- a/src/main/res/menu/conversations.xml +++ b/src/main/res/menu/conversations.xml @@ -18,18 +18,19 @@ android:orderInCategory="30" android:showAsAction="always" android:title="@string/attach_file"/> - <item +<!-- <item android:id="@+id/action_contact_details" android:icon="?attr/icon_group" android:orderInCategory="40" - android:showAsAction="always" + android:showAsAction="never" android:title="@string/action_contact_details"/> <item android:id="@+id/action_muc_details" android:icon="?attr/icon_group" android:orderInCategory="40" - android:showAsAction="always" + android:showAsAction="never" android:title="@string/action_muc_details"/> +--> <item android:id="@+id/action_invite" android:orderInCategory="45" |