aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui/ConversationsMainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/ConversationsMainActivity.java')
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationsMainActivity.java42
1 files changed, 34 insertions, 8 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationsMainActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationsMainActivity.java
index 14570af97..9d2f491d8 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationsMainActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationsMainActivity.java
@@ -60,24 +60,38 @@ import static de.pixart.messenger.ui.SettingsActivity.USE_BUNDLED_EMOJIS;
public class ConversationsMainActivity extends XmppActivity implements OnConversationSelected, OnConversationArchived, OnConversationsListItemUpdated, OnConversationRead {
+ //secondary fragment (when holding the conversation, must be initialized before refreshing the overview fragment
+ private static final @IdRes
+ int[] FRAGMENT_ID_NOTIFICATION_ORDER = {R.id.secondary_fragment, R.id.main_fragment};
+
private ActivityConversationsBinding binding;
@Override
protected void refreshUiReal() {
-
+ for(@IdRes int id : FRAGMENT_ID_NOTIFICATION_ORDER) {
+ refreshFragment(id);
+ }
}
@Override
void onBackendConnected() {
- notifyFragment(R.id.main_fragment);
- notifyFragment(R.id.secondary_fragment);
+ for (@IdRes int id : FRAGMENT_ID_NOTIFICATION_ORDER) {
+ notifyFragmentOfBackendConnected(id);
+ }
invalidateActionBarTitle();
}
- private void notifyFragment(@IdRes int id) {
- Fragment mainFragment = getFragmentManager().findFragmentById(id);
- if (mainFragment != null && mainFragment instanceof XmppFragment) {
- ((XmppFragment) mainFragment).onBackendConnected();
+ private void notifyFragmentOfBackendConnected(@IdRes int id) {
+ final Fragment fragment = getFragmentManager().findFragmentById(id);
+ if (fragment != null && fragment instanceof XmppFragment) {
+ ((XmppFragment) fragment).onBackendConnected();
+ }
+ }
+
+ private void refreshFragment(@IdRes int id) {
+ final Fragment fragment = getFragmentManager().findFragmentById(id);
+ if (fragment != null && fragment instanceof XmppFragment) {
+ ((XmppFragment) fragment).refresh();
}
}
@@ -101,14 +115,21 @@ public class ConversationsMainActivity extends XmppActivity implements OnConvers
public void onConversationSelected(Conversation conversation) {
Log.d(Config.LOGTAG, "selected " + conversation.getName());
ConversationFragment conversationFragment = (ConversationFragment) getFragmentManager().findFragmentById(R.id.secondary_fragment);
+ final boolean mainNeedsRefresh;
if (conversationFragment == null) {
+ mainNeedsRefresh = false;
conversationFragment = new ConversationFragment();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_fragment, conversationFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
+ } else {
+ mainNeedsRefresh = true;
}
conversationFragment.reInit(conversation);
+ if (mainNeedsRefresh) {
+ refreshFragment(R.id.main_fragment);
+ }
}
@Override
@@ -160,6 +181,8 @@ public class ConversationsMainActivity extends XmppActivity implements OnConvers
} else {
transaction.replace(R.id.main_fragment, new ConversationsOverviewFragment());
}
+
+ //TODO, do this in backendConnected so we can actually decide what to display
if (binding.secondaryFragment != null) {
transaction.replace(R.id.secondary_fragment, new ConversationFragment());
}
@@ -229,7 +252,10 @@ public class ConversationsMainActivity extends XmppActivity implements OnConvers
@Override
public void onConversationsListItemUpdated() {
-
+ Fragment fragment = getFragmentManager().findFragmentById(R.id.main_fragment);
+ if (fragment != null && fragment instanceof ConversationsOverviewFragment) {
+ ((ConversationsOverviewFragment) fragment).refresh();
+ }
}
@Override