Disable MUC PM by default

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/util/MucDetailsContextMenuHelper.java | 8 
src/main/res/values/defaults.xml                                              | 1 
src/main/res/xml/preferences_interface.xml                                    | 6 
3 files changed, 12 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/util/MucDetailsContextMenuHelper.java 🔗

@@ -111,6 +111,7 @@ public final class MucDetailsContextMenuHelper {
     public static void configureMucDetailsContextMenu(XmppActivity activity, Menu menu, Conversation conversation, User user) {
         final MucOptions mucOptions = conversation.getMucOptions();
         final boolean advancedMode = PreferenceManager.getDefaultSharedPreferences(activity).getBoolean("advanced_muc_mode", false);
+        final boolean showMucPm = PreferenceManager.getDefaultSharedPreferences(activity).getBoolean("show_muc_pm", false);
         final boolean isGroupChat = mucOptions.isPrivateAndNonAnonymous();
         MenuItem sendPrivateMessage = menu.findItem(R.id.send_private_message);
         MenuItem shareContactDetails = menu.findItem(R.id.share_contact_details);
@@ -170,12 +171,13 @@ public final class MucDetailsContextMenuHelper {
                 }
             }
             managePermissions.setVisible(managePermissionsVisible);
-            sendPrivateMessage.setVisible(user.isOnline() && !isGroupChat && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR));
+            sendPrivateMessage.setVisible(showMucPm && user.isOnline() && !isGroupChat && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR));
             shareContactDetails.setVisible(user.isOnline() && !isGroupChat && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR));
         } else {
-            sendPrivateMessage.setVisible(user != null && user.isOnline());
+            sendPrivateMessage.setVisible(showMucPm && user != null && user.isOnline());
             sendPrivateMessage.setEnabled(user != null && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR));
-            shareContactDetails.setVisible(user != null && user.isOnline() && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR));
+            shareContactDetails.setVisible(user != null && user.isOnline());
+            shareContactDetails.setEnabled(user != null && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR));
         }
     }
 

src/main/res/values/defaults.xml 🔗

@@ -58,4 +58,5 @@
     <string name="default_chat_requests">spam</string>
     <bool name="default_custom_tab">true</bool>
     <bool name="default_nomedia">true</bool>
+    <bool name="show_muc_pm">false</bool>
 </resources>

src/main/res/xml/preferences_interface.xml 🔗

@@ -160,6 +160,12 @@
             android:key="compose_rich_text"
             android:summary="The message editor will show formatting as you type"
             android:title="Compose using rich text" />
+        <SwitchPreferenceCompat
+            android:icon="@drawable/ic_announcement_24dp"
+            android:defaultValue="@bool/show_muc_pm"
+            android:key="show_muc_pm"
+            android:summary="Allow starting semi-private chats inside a channel"
+            android:title="Show Channel PM" />
     </PreferenceCategory>
     <PreferenceCategory android:title="@string/pref_keyboard_options">
         <SwitchPreferenceCompat