From ab3e365fec77fa49294bde344c0be4fa212ea4f6 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Thu, 3 May 2018 22:02:38 +0200 Subject: hide record audio feature if mircophone is not available hide share location feature if location service is not available --- .../pixart/messenger/ui/ConversationsActivity.java | 2 ++ .../ui/util/ConversationMenuConfigurator.java | 23 ++++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'src/main/java/de/pixart/messenger/ui') diff --git a/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java index c49e78d81..5f8b0c18a 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java @@ -83,6 +83,7 @@ import de.pixart.messenger.ui.interfaces.OnConversationRead; import de.pixart.messenger.ui.interfaces.OnConversationSelected; import de.pixart.messenger.ui.interfaces.OnConversationsListItemUpdated; import de.pixart.messenger.ui.util.ActivityResult; +import de.pixart.messenger.ui.util.ConversationMenuConfigurator; import de.pixart.messenger.ui.util.PendingItem; import de.pixart.messenger.utils.ExceptionHelper; import de.pixart.messenger.utils.MenuDoubleTabUtil; @@ -428,6 +429,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ConversationMenuConfigurator.reloadFeatures(this); OmemoSetting.load(this); new EmojiService(this).init(useBundledEmoji()); this.binding = DataBindingUtil.setContentView(this, R.layout.activity_conversations); diff --git a/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java b/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java index c82b34760..eb7217b95 100644 --- a/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java +++ b/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java @@ -29,6 +29,8 @@ package de.pixart.messenger.ui.util; +import android.content.Context; +import android.content.pm.PackageManager; import android.support.annotation.NonNull; import android.view.Menu; import android.view.MenuItem; @@ -42,18 +44,29 @@ import de.pixart.messenger.entities.Message; public class ConversationMenuConfigurator { + private static boolean microphoneAvailable = false; + private static boolean locationAvailable = false; + + public static void reloadFeatures(Context context) { + microphoneAvailable = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MICROPHONE); + locationAvailable = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS) || context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION_NETWORK); + } + public static void configureAttachmentMenu(@NonNull Conversation conversation, Menu menu) { final MenuItem menuAttach = menu.findItem(R.id.action_attach_file); final boolean visible; - if (OmemoSetting.isAlways()) { - visible = false; - } else if (conversation.getMode() == Conversation.MODE_MULTI) { + if (conversation.getMode() == Conversation.MODE_MULTI) { visible = conversation.getAccount().httpUploadAvailable() && conversation.getMucOptions().participating(); } else { visible = true; } menuAttach.setVisible(visible); + if (!visible) { + return; + } + menu.findItem(R.id.attach_record_voice).setVisible(microphoneAvailable); + menu.findItem(R.id.attach_location).setVisible(locationAvailable); } public static void configureEncryptionMenu(@NonNull Conversation conversation, Menu menu) { @@ -64,7 +77,9 @@ public class ConversationMenuConfigurator { final MenuItem axolotl = menu.findItem(R.id.encryption_choice_axolotl); boolean visible; - if (conversation.getMode() == Conversation.MODE_MULTI) { + if (OmemoSetting.isAlways()) { + visible = false; + } else if (conversation.getMode() == Conversation.MODE_MULTI) { visible = (Config.supportOpenPgp() || Config.supportOmemo()) && Config.multipleEncryptionChoices(); } else { visible = Config.multipleEncryptionChoices(); -- cgit v1.2.3