From 4c8cbfe96644539fce44721ab79ba89b9a3e3100 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 24 Feb 2018 12:53:02 +0100 Subject: [PATCH] make archive menu item work --- .../ui/ConversationActivity.java | 30 +++++++++++++++---- .../ui/ConversationFragment.java | 9 +++++- .../ui/ConversationsOverviewFragment.java | 21 +++++++++++-- .../ui/adapter/ConversationAdapter.java | 4 --- 4 files changed, 52 insertions(+), 12 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index d5ebbca9d..cf2dcb89c 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -204,6 +204,15 @@ public class ConversationActivity extends XmppActivity implements OnConversation return super.onOptionsItemSelected(item); } + @Override + protected void onStart() { + final int theme = findTheme(); + if (this.mTheme != theme) { + recreate(); + } + super.onStart(); + } + @Override protected void onNewIntent(final Intent intent) { if (isViewIntent(intent)) { @@ -224,10 +233,6 @@ public class ConversationActivity extends XmppActivity implements OnConversation @Override public void onResume() { super.onResume(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } this.mActivityPaused = false; } @@ -291,7 +296,22 @@ public class ConversationActivity extends XmppActivity implements OnConversation @Override public void onConversationArchived(Conversation conversation) { - + //TODO; check if nothing more left; + Fragment mainFragment = getFragmentManager().findFragmentById(R.id.main_fragment); + if (mainFragment != null && mainFragment instanceof ConversationFragment) { + getFragmentManager().popBackStack(); + return; + } + Fragment secondaryFragment = getFragmentManager().findFragmentById(R.id.secondary_fragment); + if (secondaryFragment != null && secondaryFragment instanceof ConversationFragment) { + if (((ConversationFragment) secondaryFragment).getConversation() == conversation) { + Conversation suggestion = ConversationsOverviewFragment.getSuggestion(this, conversation); + if (suggestion != null) { + openConversation(suggestion, null); + return; + } + } + } } @Override diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 0334dbfae..10f32ad7d 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -149,6 +149,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke @Override public void onClick(View v) { + activity.xmppConnectionService.archiveConversation(conversation); activity.onConversationArchived(conversation); } }; @@ -1032,6 +1033,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke handleAttachmentSelection(item); break; case R.id.action_archive: + activity.xmppConnectionService.archiveConversation(conversation); activity.onConversationArchived(conversation); break; case R.id.action_contact_details: @@ -1239,6 +1241,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke builder.setPositiveButton(getString(R.string.delete_messages), (dialog, which) -> { this.activity.xmppConnectionService.clearConversationHistory(conversation); if (endConversationCheckBox.isChecked()) { + this.activity.xmppConnectionService.archiveConversation(conversation); this.activity.onConversationArchived(conversation); } else { activity.onConversationsListItemUpdated(); @@ -1353,7 +1356,11 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke @Override public void onResume() { new Handler().post(() -> { - final PackageManager packageManager = getActivity().getPackageManager(); + final Activity activity = getActivity(); + if (activity == null) { + return; + } + final PackageManager packageManager = activity.getPackageManager(); ConversationMenuConfigurator.updateAttachmentAvailability(packageManager); getActivity().invalidateOptionsMenu(); }); diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java index d3aa69b8d..3673065a5 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java @@ -60,11 +60,29 @@ public class ConversationsOverviewFragment extends XmppFragment implements Enhan private XmppActivity activity; public static Conversation getSuggestion(Activity activity) { + final Conversation exception; + Fragment fragment = activity.getFragmentManager().findFragmentById(R.id.main_fragment); + if (fragment != null && fragment instanceof ConversationsOverviewFragment) { + exception = ((ConversationsOverviewFragment) fragment).swipedConversation.peek(); + } else { + exception = null; + } + return getSuggestion(activity, exception); + } + + public static Conversation getSuggestion(Activity activity, Conversation exception) { Fragment fragment = activity.getFragmentManager().findFragmentById(R.id.main_fragment); if (fragment != null && fragment instanceof ConversationsOverviewFragment) { List conversations = ((ConversationsOverviewFragment) fragment).conversations; if (conversations.size() > 0) { - return conversations.get(0); + Conversation suggestion = conversations.get(0); + if (suggestion == exception) { + if (conversations.size() > 1) { + return conversations.get(1); + } + } else { + return suggestion; + } } } return null; @@ -74,7 +92,6 @@ public class ConversationsOverviewFragment extends XmppFragment implements Enhan @Override public void onAttach(Activity activity) { super.onAttach(activity); - Log.d(Config.LOGTAG, "on attach"); if (activity instanceof XmppActivity) { this.activity = (XmppActivity) activity; } else { diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java index 04e7ecabb..c54866bd5 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java @@ -173,10 +173,6 @@ public class ConversationAdapter extends ArrayAdapter { @Override public void notifyDataSetChanged() { this.selectedConversation = ConversationFragment.getConversation(activity); - Log.d(Config.LOGTAG,"notify data set changed"); - if (this.selectedConversation == null) { - Log.d(Config.LOGTAG,"selected conversation is null"); - } super.notifyDataSetChanged(); }