浏览代码

Fix a menu issue

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 6 年之前
父节点
当前提交
e1edf954e9

+ 16 - 9
app/src/main/java/com/nextcloud/talk/controllers/ChatController.java

@@ -433,18 +433,14 @@ public class ChatController extends BaseController implements MessagesListAdapte
                 messageInput.setHint(R.string.nc_readonly_hint);
 
                 conversationVoiceCallMenuItem.getIcon().setAlpha(99);
-                conversationVoiceCallMenuItem.setEnabled(false);
                 conversationVideoMenuItem.getIcon().setAlpha(99);
-                conversationVideoMenuItem.setEnabled(false);
 
                 setChildrenState(messageInputView, false);
             } else {
                 messageInput.setHint("");
 
                 conversationVoiceCallMenuItem.getIcon().setAlpha(255);
-                conversationVoiceCallMenuItem.setEnabled(true);
                 conversationVideoMenuItem.getIcon().setAlpha(255);
-                conversationVideoMenuItem.setEnabled(true);
 
                 setChildrenState(messageInputView, true);
             }
@@ -1048,7 +1044,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
     }
 
     @Override
-    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+    public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
         super.onCreateOptionsMenu(menu, inflater);
         inflater.inflate(R.menu.menu_conversation, menu);
         if (conversationUser.getUserId().equals("?")) {
@@ -1058,6 +1054,11 @@ public class ChatController extends BaseController implements MessagesListAdapte
             conversationVoiceCallMenuItem = menu.findItem(R.id.conversation_voice_call);
             conversationVideoMenuItem = menu.findItem(R.id.conversation_video_call);
         }
+    }
+
+    @Override
+    public void onPrepareOptionsMenu(@NonNull Menu menu) {
+        super.onPrepareOptionsMenu(menu);
 
         if (conversationUser.hasSpreedCapabilityWithName("read-only-rooms")) {
             checkReadOnlyState();
@@ -1072,11 +1073,17 @@ public class ChatController extends BaseController implements MessagesListAdapte
                 getRouter().popCurrentController();
                 return true;
             case R.id.conversation_video_call:
-                startACall(false);
-                return true;
+                if (conversationVideoMenuItem.getIcon().getAlpha() == 255) {
+                    startACall(false);
+                    return true;
+                }
+                return false;
             case R.id.conversation_voice_call:
-                startACall(true);
-                return true;
+                if (conversationVoiceCallMenuItem.getIcon().getAlpha() == 255) {
+                    startACall(true);
+                    return true;
+                }
+                return false;
             case R.id.conversation_info:
                 showConversationInfoScreen();
                 return true;

+ 0 - 2
app/src/main/res/menu/menu_conversation.xml

@@ -25,7 +25,6 @@
         android:id="@+id/conversation_voice_call"
         android:icon="@drawable/ic_call_white_24dp"
         android:orderInCategory="0"
-        android:enabled="false"
         android:title="@string/nc_conversation_menu_voice_call"
         app:showAsAction="ifRoom" />
 
@@ -34,7 +33,6 @@
         android:icon="@drawable/ic_videocam_white_24px"
         android:orderInCategory="1"
         android:title="@string/nc_conversation_menu_video_call"
-        android:enabled="false"
         app:showAsAction="ifRoom" />
 
     <item