android/source/src/java/org/libreoffice/SettingsActivity.java         |    4 +
 android/source/src/java/org/libreoffice/ToolbarController.java        |   24 
++--------
 android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java |    5 ++
 3 files changed, 16 insertions(+), 17 deletions(-)

New commits:
commit ceda3ddeefc77bcd715405826036814b9be12b60
Author:     Michael Weghorn <[email protected]>
AuthorDate: Tue Nov 25 23:18:22 2025 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Fri Nov 28 10:43:57 2025 +0100

    android: Hide settings menu entry if there are no settings
    
    All settings displayed in the SettingsActivity
    are related to editing, and only displayed
    if the build includes the editing feature.
    
    Therefore, don't show the settings menu item when
    using a build config that doesn't include that feature,
    i.e. only show the item for the strippedUIEditing
    product flavor, but not the strippedUI or quest
    ones. For the latter two, an activity only displaying the
    "General" heading would be shown, but nothing
    else could be done, which was rather confusing.
    
    Change-Id: I2a1a616c1faee18583320ccb16e717dc933d6565
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194534
    Code-Style: Michael Weghorn <[email protected]>
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>
    (cherry picked from commit 5bd9b087c24d29b76e7fac6a991ef6fda2ef8d9f)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194541
    Code-Style: Xisco Fauli <[email protected]>
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194632

diff --git a/android/source/src/java/org/libreoffice/SettingsActivity.java 
b/android/source/src/java/org/libreoffice/SettingsActivity.java
index db715cf8b0cc..c37cdec3f9b5 100644
--- a/android/source/src/java/org/libreoffice/SettingsActivity.java
+++ b/android/source/src/java/org/libreoffice/SettingsActivity.java
@@ -41,5 +41,9 @@ public class SettingsActivity extends FragmentActivity {
             }
         }
     }
+
+    public static boolean hasSettings() {
+        return BuildConfig.ALLOW_EDITING;
+    }
 }
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/android/source/src/java/org/libreoffice/ToolbarController.java 
b/android/source/src/java/org/libreoffice/ToolbarController.java
index 466de485489e..d5e6937c5e8b 100644
--- a/android/source/src/java/org/libreoffice/ToolbarController.java
+++ b/android/source/src/java/org/libreoffice/ToolbarController.java
@@ -240,6 +240,8 @@ public class ToolbarController implements 
Toolbar.OnMenuItemClickListener {
 
         final boolean enablePrint = 
mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_PRINTING);
         setItemVisible(R.id.action_print, enablePrint);
+
+        setItemVisible(R.id.action_settings, SettingsActivity.hasSettings());
     }
 
     public void setItemVisible(final int item, boolean visible) {
diff --git 
a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java 
b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java
index 69bf430dd6b0..99dccfdfa232 100644
--- a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java
+++ b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java
@@ -310,6 +310,11 @@ public class LibreOfficeUIActivity extends 
AppCompatActivity implements View.OnC
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.view_menu, menu);
 
+        final MenuItem settingsItem = menu.findItem(R.id.action_settings);
+        final boolean enableSettingsItem = SettingsActivity.hasSettings();
+        settingsItem.setVisible(enableSettingsItem);
+        settingsItem.setEnabled(enableSettingsItem);
+
         return true;
     }
 
commit 4a88115f072c15913306553da6e046ee1552b938
Author:     Michael Weghorn <[email protected]>
AuthorDate: Tue Nov 25 23:06:02 2025 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Fri Nov 28 10:43:49 2025 +0100

    android: Have a single method for menu item (de)activation
    
    Instead of having one method that enables/disables a menu
    item and one that shows/hides it, let
    ToolbarController.setItemVisible take care of both.
    Use that method also where ToolbarController.enableMenuItem
    was used before and drop that now unused method.
    
    The way that hiding/disabling menu items was and is used
    is to do that when they are not applicable, in which case
    it seems reasonable to consistently both hide and disable
    them at the same time.
    
    Quoting from the MenuItem.setVisible doc [1]:
    
    > Sets the visibility of the menu item. Even if a menu item is not
    > visible, it may still be invoked via its shortcut (to completely disable
    > an item, set it to invisible and disabled).
    
    [1] 
https://developer.android.com/reference/android/view/MenuItem#setVisible(boolean)
    
    Change-Id: I5d05f5324a1fb5c69e38302b59b2ad56a45342ff
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194533
    Tested-by: Jenkins
    Code-Style: Michael Weghorn <[email protected]>
    Reviewed-by: Michael Weghorn <[email protected]>
    (cherry picked from commit 8d015346d0ac21da7a4908ea35d2f736e9a0cc97)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194540
    Reviewed-by: Xisco Fauli <[email protected]>
    Code-Style: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194631

diff --git a/android/source/src/java/org/libreoffice/ToolbarController.java 
b/android/source/src/java/org/libreoffice/ToolbarController.java
index 6e88d90aa7ca..466de485489e 100644
--- a/android/source/src/java/org/libreoffice/ToolbarController.java
+++ b/android/source/src/java/org/libreoffice/ToolbarController.java
@@ -46,19 +46,6 @@ public class ToolbarController implements 
Toolbar.OnMenuItemClickListener {
         clipboardManager = 
(ClipboardManager)mContext.getSystemService(Context.CLIPBOARD_SERVICE);
     }
 
-    private void enableMenuItem(final int menuItemId, final boolean enabled) {
-        LOKitShell.getMainHandler().post(new Runnable() {
-            public void run() {
-                MenuItem menuItem = mMainMenu.findItem(menuItemId);
-                if (menuItem != null) {
-                    menuItem.setEnabled(enabled);
-                } else {
-                    Log.e(LOGTAG, "MenuItem not found.");
-                }
-            }
-        });
-    }
-
     public void setEditModeOn(boolean enabled) {
         isEditModeOn = enabled;
     }
@@ -240,7 +227,7 @@ public class ToolbarController implements 
Toolbar.OnMenuItemClickListener {
     void setupToolbars() {
         if (LibreOfficeMainActivity.isExperimentalMode()) {
             boolean enableSaveEntry = 
!LibreOfficeMainActivity.isReadOnlyMode() && mContext.hasLocationForSave();
-            enableMenuItem(R.id.action_save, enableSaveEntry);
+            setItemVisible(R.id.action_save, enableSaveEntry);
             if (LibreOfficeMainActivity.isReadOnlyMode()) {
                 // show message in case experimental mode is enabled (i.e. 
editing is supported in general),
                 // but current document is readonly
@@ -252,15 +239,16 @@ public class ToolbarController implements 
Toolbar.OnMenuItemClickListener {
         setItemVisible(R.id.action_parts, mContext.isDrawerEnabled());
 
         final boolean enablePrint = 
mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_PRINTING);
-        enableMenuItem(R.id.action_print, enablePrint);
         setItemVisible(R.id.action_print, enablePrint);
     }
 
-    public void setItemVisible(final int item, boolean visible){
+    public void setItemVisible(final int item, boolean visible) {
         LOKitShell.getMainHandler().post(new Runnable() {
             @Override
             public void run() {
-                mMainMenu.findItem(item).setVisible(visible);
+                final MenuItem menuItem = mMainMenu.findItem(item);
+                menuItem.setEnabled(visible);
+                menuItem.setVisible(visible);
             }
         });
     }

Reply via email to