Add block/unblock to contact details menu

Sam Whited created

See #889

Change summary

src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java | 17 
src/main/java/eu/siacs/conversations/ui/ConversationActivity.java   |  4 
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java   |  3 
src/main/res/menu/contact_details.xml                               | 13 
4 files changed, 28 insertions(+), 9 deletions(-)

Detailed changes

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

@@ -201,7 +201,7 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
 
 	@Override
 	public boolean onOptionsItemSelected(final MenuItem menuItem) {
-		AlertDialog.Builder builder = new AlertDialog.Builder(this);
+		final AlertDialog.Builder builder = new AlertDialog.Builder(this);
 		builder.setNegativeButton(getString(R.string.cancel), null);
 		switch (menuItem.getItemId()) {
 			case android.R.id.home:
@@ -237,13 +237,25 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
 					startActivity(intent);
 				}
 				break;
+			case R.id.action_block:
+				BlockContactDialog.show(this, xmppConnectionService, contact);
+				break;
+			case R.id.action_unblock:
+				BlockContactDialog.show(this, xmppConnectionService, contact);
+				break;
 		}
 		return super.onOptionsItemSelected(menuItem);
 	}
 
 	@Override
-	public boolean onCreateOptionsMenu(Menu menu) {
+	public boolean onCreateOptionsMenu(final Menu menu) {
 		getMenuInflater().inflate(R.menu.contact_details, menu);
+		if (this.contact.isBlocked()) {
+			menu.findItem(R.id.action_block).setVisible(false);
+		} else {
+			menu.findItem(R.id.action_unblock).setVisible(false);
+		}
+
 		return true;
 	}
 
@@ -424,6 +436,7 @@ public class ContactDetailsActivity extends XmppActivity implements OnAccountUpd
 
 			@Override
 			public void run() {
+				invalidateOptionsMenu();
 				populateView();
 			}
 		});

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

@@ -1075,10 +1075,6 @@ public class ConversationActivity extends XmppActivity
 		xmppConnectionService.sendUnblockRequest(conversation);
 	}
 
-	public void blockConversation(final Blockable conversation) {
-		xmppConnectionService.sendBlockRequest(conversation);
-	}
-
 	public boolean enterIsSend() {
 		return getPreferences().getBoolean("enter_is_send",false);
 	}

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

@@ -17,6 +17,19 @@
         android:id="@+id/action_show_qr_code"
         android:title="@string/show_qr_code"
         android:showAsAction="never" />
+
+    <item
+        android:id="@+id/action_block"
+        android:orderInCategory="72"
+        android:showAsAction="never"
+        android:title="@string/action_block_contact"/>
+
+    <item
+        android:id="@+id/action_unblock"
+        android:orderInCategory="73"
+        android:showAsAction="never"
+        android:title="@string/action_unblock_contact"/>
+
     <item
         android:id="@+id/action_accounts"
         android:orderInCategory="90"