From 4c109297087f194e34a3e86b18285112fbec33fc Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sat, 24 Mar 2018 22:45:55 +0100 Subject: made select work --- .../messenger/ui/ConversationsMainActivity.java | 42 +++++++++++++++++----- 1 file changed, 34 insertions(+), 8 deletions(-) (limited to 'src/main/java/de/pixart/messenger/ui/ConversationsMainActivity.java') 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 -- cgit v1.2.3