From 81a1a48b8d09ad509660dac7e7c973628804f730 Mon Sep 17 00:00:00 2001 From: iNPUTmice Date: Fri, 21 Nov 2014 20:02:13 +0100 Subject: [PATCH] update action bar with conversations updates as well --- .../conversations/parser/PresenceParser.java | 35 +++-------- .../ui/ConversationActivity.java | 62 +++++++++++-------- 2 files changed, 45 insertions(+), 52 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java index 8b367970..12167a1e 100644 --- a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java +++ b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java @@ -22,30 +22,15 @@ public class PresenceParser extends AbstractParser implements public void parseConferencePresence(PresencePacket packet, Account account) { PgpEngine mPgpEngine = mXmppConnectionService.getPgpEngine(); - if (packet.hasChild("x", "http://jabber.org/protocol/muc#user")) { - final Conversation muc = packet.getFrom() == null ? null : mXmppConnectionService.find( - account, - packet.getFrom().toBareJid()); - if (muc != null) { - boolean before = muc.getMucOptions().online(); - muc.getMucOptions().processPacket(packet, mPgpEngine); - if (before != muc.getMucOptions().online()) { - mXmppConnectionService.updateConversationUi(); - } - mXmppConnectionService.getAvatarService().clear(muc); - } - } else if (packet.hasChild("x", "http://jabber.org/protocol/muc")) { - final Conversation conversation = mXmppConnectionService.find(account, - packet.getFrom().toBareJid()); - if (conversation != null) { - final MucOptions mucOptions = conversation.getMucOptions(); - boolean before = mucOptions.online(); - int count = mucOptions.getUsers().size(); - mucOptions.processPacket(packet, mPgpEngine); - mXmppConnectionService.getAvatarService().clear(conversation); - if (before != mucOptions.online() || (mucOptions.online() && count != mucOptions.getUsers().size())) { - mXmppConnectionService.updateConversationUi(); - } + final Conversation conversation = packet.getFrom() == null ? null : mXmppConnectionService.find(account, packet.getFrom().toBareJid()); + if (conversation != null) { + final MucOptions mucOptions = conversation.getMucOptions(); + boolean before = mucOptions.online(); + int count = mucOptions.getUsers().size(); + mucOptions.processPacket(packet, mPgpEngine); + mXmppConnectionService.getAvatarService().clear(conversation); + if (before != mucOptions.online() || (mucOptions.online() && count != mucOptions.getUsers().size())) { + mXmppConnectionService.updateConversationUi(); } } } @@ -56,7 +41,7 @@ public class PresenceParser extends AbstractParser implements if (packet.getFrom() == null) { return; } - final Jid from = packet.getFrom(); + final Jid from = packet.getFrom(); String type = packet.getAttribute("type"); if (from.toBareJid().equals(account.getJid().toBareJid())) { if (!from.isBareJid()) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index 423b0640..f4be412b 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -181,7 +181,6 @@ public class ConversationActivity extends XmppActivity implements hideConversationsOverview(); } }); - //registerForContextMenu(listView); mContentView = findViewById(R.id.content_view_spl); if (mContentView == null) { mContentView = findViewById(R.id.content_view_ll); @@ -196,12 +195,7 @@ public class ConversationActivity extends XmppActivity implements @Override public void onPanelOpened(View arg0) { - ActionBar ab = getActionBar(); - if (ab != null) { - ab.setDisplayHomeAsUpEnabled(false); - ab.setHomeButtonEnabled(false); - ab.setTitle(R.string.app_name); - } + updateActionBarTitle(); invalidateOptionsMenu(); hideKeyboard(); if (xmppConnectionServiceBound) { @@ -237,20 +231,32 @@ public class ConversationActivity extends XmppActivity implements }); } - public void openConversation() { + private void updateActionBarTitle() { + updateActionBarTitle(isConversationsOverviewHideable() && !isConversationsOverviewVisable()); + } + + private void updateActionBarTitle(boolean titleShouldBeName) { ActionBar ab = getActionBar(); if (ab != null) { - ab.setDisplayHomeAsUpEnabled(true); - ab.setHomeButtonEnabled(true); - if (getSelectedConversation().getMode() == Conversation.MODE_SINGLE - || ConversationActivity.this - .useSubjectToIdentifyConference()) { - ab.setTitle(getSelectedConversation().getName()); + if (titleShouldBeName) { + ab.setDisplayHomeAsUpEnabled(true); + ab.setHomeButtonEnabled(true); + if (getSelectedConversation().getMode() == Conversation.MODE_SINGLE || useSubjectToIdentifyConference()) { + ab.setTitle(getSelectedConversation().getName()); + } else { + ab.setTitle(getSelectedConversation().getContactJid().toBareJid().toString()); + } } else { - ab.setTitle(getSelectedConversation().getContactJid().toBareJid().toString()); + ab.setDisplayHomeAsUpEnabled(false); + ab.setHomeButtonEnabled(false); + ab.setTitle(R.string.app_name); } } - invalidateOptionsMenu(); + } + + private void openConversation() { + this.updateActionBarTitle(); + this.invalidateOptionsMenu(); if (xmppConnectionServiceBound) { xmppConnectionService.getNotificationService().setOpenConversation(getSelectedConversation()); if (!getSelectedConversation().isRead()) { @@ -739,8 +745,9 @@ public class ConversationActivity extends XmppActivity implements this.mConversationFragment.appendText(text); } hideConversationsOverview(); + openConversation(); if (mContentView instanceof SlidingPaneLayout) { - openConversation(); + updateActionBarTitle(true); //fixes bug where slp isn't properly closed yet } } @@ -928,17 +935,15 @@ public class ConversationActivity extends XmppActivity implements @Override public void onAccountUpdate() { - final ConversationFragment fragment = (ConversationFragment) getFragmentManager() - .findFragmentByTag("conversation"); - if (fragment != null) { - runOnUiThread(new Runnable() { + runOnUiThread(new Runnable() { - @Override - public void run() { - fragment.updateMessages(); - } - }); - } + @Override + public void run() { + updateConversationList(); + ConversationActivity.this.mConversationFragment.updateMessages(); + updateActionBarTitle(); + } + }); } @Override @@ -954,6 +959,7 @@ public class ConversationActivity extends XmppActivity implements finish(); } ConversationActivity.this.mConversationFragment.updateMessages(); + updateActionBarTitle(); } }); } @@ -964,7 +970,9 @@ public class ConversationActivity extends XmppActivity implements @Override public void run() { + updateConversationList(); ConversationActivity.this.mConversationFragment.updateMessages(); + updateActionBarTitle(); } }); }