properly remove conversations context menu

iNPUTmice created

Change summary

src/main/java/eu/siacs/conversations/ui/ConversationActivity.java | 56 
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java |  5 
src/main/res/menu/conversations.xml                               |  7 
src/main/res/menu/conversations_context.xml                       | 11 
4 files changed, 27 insertions(+), 52 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/ConversationActivity.java 🔗

@@ -75,7 +75,6 @@ public class ConversationActivity extends XmppActivity implements
 
 	private List<Conversation> conversationList = new ArrayList<>();
 	private Conversation mSelectedConversation = null;
-	private Conversation mSelectedConversationForContext = null;
 	private ListView listView;
 	private ConversationFragment mConversationFragment;
 
@@ -226,42 +225,6 @@ public class ConversationActivity extends XmppActivity implements
 		}
 	}
 
-	/*@Override
-	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
-		getMenuInflater().inflate(R.menu.conversations_context, menu);
-		AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) menuInfo;
-		this.mSelectedConversationForContext = this.conversationList.get(acmi.position);
-		menu.setHeaderTitle(this.mSelectedConversationForContext.getName());
-		MenuItem enableNotifications = menu.findItem(R.id.action_unmute);
-		MenuItem disableNotifications = menu.findItem(R.id.action_mute);
-		if (this.mSelectedConversationForContext.isMuted()) {
-			disableNotifications.setVisible(false);
-		} else {
-			enableNotifications.setVisible(false);
-		}
-		super.onCreateContextMenu(menu,v,menuInfo);
-	}
-
-	@Override
-	public boolean onContextItemSelected(MenuItem item) {
-		switch (item.getItemId()) {
-			case R.id.action_archive:
-				endConversation(mSelectedConversationForContext);
-				return true;
-			case R.id.action_mute:
-				muteConversationDialog(mSelectedConversationForContext);
-				return true;
-			case R.id.action_unmute:
-				mSelectedConversationForContext.setMutedTill(0);
-				xmppConnectionService.updateConversation(mSelectedConversationForContext);
-				updateConversationList();
-				ConversationActivity.this.mConversationFragment.updateMessages();
-				return true;
-			default:
-				return super.onContextItemSelected(item);
-		}
-	}*/
-
 	public void openConversation() {
 		ActionBar ab = getActionBar();
 		if (ab != null) {
@@ -298,6 +261,7 @@ public class ConversationActivity extends XmppActivity implements
 		MenuItem menuAdd = menu.findItem(R.id.action_add);
 		MenuItem menuInviteContact = menu.findItem(R.id.action_invite);
 		MenuItem menuMute = menu.findItem(R.id.action_mute);
+		MenuItem menuUnmute = menu.findItem(R.id.action_unmute);
 
 		if (isConversationsOverviewVisable()
 				&& isConversationsOverviewHideable()) {
@@ -309,6 +273,7 @@ public class ConversationActivity extends XmppActivity implements
 			menuAttach.setVisible(false);
 			menuClearHistory.setVisible(false);
 			menuMute.setVisible(false);
+			menuUnmute.setVisible(false);
 		} else {
 			menuAdd.setVisible(!isConversationsOverviewHideable());
 			if (this.getSelectedConversation() != null) {
@@ -323,6 +288,11 @@ public class ConversationActivity extends XmppActivity implements
 					menuMucDetails.setVisible(false);
 					menuInviteContact.setVisible(false);
 				}
+				if (this.getSelectedConversation().isMuted()) {
+					menuMute.setVisible(false);
+				} else {
+					menuUnmute.setVisible(false);
+				}
 			}
 		}
 		return true;
@@ -464,6 +434,9 @@ public class ConversationActivity extends XmppActivity implements
 				case R.id.action_mute:
 					muteConversationDialog(getSelectedConversation());
 					break;
+				case R.id.action_unmute:
+					unmuteConversation(getSelectedConversation());
+					break;
 				default:
 					break;
 			}
@@ -639,11 +612,20 @@ public class ConversationActivity extends XmppActivity implements
 								.updateConversation(conversation);
 						updateConversationList();
 						ConversationActivity.this.mConversationFragment.updateMessages();
+						invalidateOptionsMenu();
 					}
 				});
 		builder.create().show();
 	}
 
+	public void unmuteConversation(final Conversation conversation) {
+		conversation.setMutedTill(0);
+		this.xmppConnectionService.databaseBackend.updateConversation(conversation);
+		updateConversationList();
+		ConversationActivity.this.mConversationFragment.updateMessages();
+		invalidateOptionsMenu();
+	}
+
 	@Override
 	public boolean onKeyDown(final int keyCode, final KeyEvent event) {
 		if (keyCode == KeyEvent.KEYCODE_BACK) {

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -525,10 +525,7 @@ public class ConversationFragment extends Fragment {
 
 							@Override
 							public void onClick(View v) {
-								conversation.setMutedTill(0);
-								activity.xmppConnectionService.databaseBackend
-										.updateConversation(conversation);
-								updateMessages();
+								activity.unmuteConversation(conversation);
 							}
 						});
 			} else if (!contact.showInRoster()

src/main/res/menu/conversations.xml 🔗

@@ -49,6 +49,13 @@
         android:orderInCategory="70"
         android:showAsAction="never"
         android:title="@string/disable_notifications"/>
+
+    <item
+        android:id="@+id/action_unmute"
+        android:orderInCategory="71"
+        android:showAsAction="never"
+        android:title="@string/enable_notifications"/>
+
     <item
         android:id="@+id/action_accounts"
         android:orderInCategory="90"

src/main/res/menu/conversations_context.xml 🔗

@@ -1,11 +0,0 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item
-        android:id="@+id/action_archive"
-        android:title="@string/action_end_conversation"/>
-    <item
-        android:id="@+id/action_mute"
-        android:title="@string/disable_notifications"/>
-    <item
-        android:id="@+id/action_unmute"
-        android:title="@string/enable_notifications"/>
-</menu>