]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
android: Hide menu items depending on managed configuration
authorMarkus Pfeiffer <markus.pfeiffer@relution.io>
Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 21 Feb 2024 11:24:53 +0000 (12:24 +0100)
Hide and disable menu items when disabled by the managed configuration.

src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java

index a836ffbcc7a88489f528394a256b9634787f2826..603dedef94c05e4bad2329f15c7c29011c0a4a1a 100644 (file)
@@ -28,6 +28,8 @@ import android.view.MenuItem;
 import android.widget.Toast;
 
 import org.strongswan.android.R;
+import org.strongswan.android.data.ManagedConfiguration;
+import org.strongswan.android.data.ManagedConfigurationService;
 import org.strongswan.android.data.VpnProfile;
 import org.strongswan.android.logic.StrongSwanApplication;
 import org.strongswan.android.logic.TrustedCertificateManager;
@@ -57,6 +59,8 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec
 
        private static final String DIALOG_TAG = "Dialog";
 
+       private ManagedConfigurationService mManagedConfigurationService;
+
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
@@ -72,6 +76,8 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec
                ((StrongSwanApplication)getApplication()).getExecutor().execute(() -> {
                        TrustedCertificateManager.getInstance().load();
                });
+
+               mManagedConfigurationService = StrongSwanApplication.getInstance().getManagedConfigurationService();
        }
 
        @Override
@@ -81,6 +87,19 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec
                return true;
        }
 
+       @Override
+       public boolean onPrepareOptionsMenu(Menu menu)
+       {
+               final MenuItem importProfile = menu.findItem(R.id.menu_import_profile);
+               if (importProfile != null)
+               {
+                       final ManagedConfiguration managedConfiguration = mManagedConfigurationService.getManagedConfiguration();
+                       importProfile.setVisible(managedConfiguration.isAllowProfileImport());
+                       importProfile.setEnabled(managedConfiguration.isAllowProfileImport());
+               }
+               return true;
+       }
+
        @Override
        public boolean onOptionsItemSelected(MenuItem item)
        {
index c32ec5d827ef3220b0159cbef588986833dec985..0a0b26a8a46273914f56f6a12ff8bda3e1e36404 100644 (file)
@@ -25,7 +25,10 @@ import com.google.android.material.tabs.TabLayout;
 import com.google.android.material.tabs.TabLayoutMediator;
 
 import org.strongswan.android.R;
+import org.strongswan.android.data.ManagedConfiguration;
+import org.strongswan.android.data.ManagedConfigurationService;
 import org.strongswan.android.data.VpnProfileDataSource;
+import org.strongswan.android.logic.StrongSwanApplication;
 import org.strongswan.android.logic.TrustedCertificateManager;
 import org.strongswan.android.logic.TrustedCertificateManager.TrustedCertificateSource;
 import org.strongswan.android.security.TrustedCertificateEntry;
@@ -51,6 +54,8 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
        private ViewPager2 mPager;
        private boolean mSelect;
 
+       private ManagedConfigurationService mManagedConfigurationService;
+
        private final ActivityResultLauncher<Intent> mImportCertificate = registerForActivityResult(
                new ActivityResultContracts.StartActivityForResult(),
                result -> {
@@ -81,6 +86,7 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
                }).attach();
 
                mSelect = SELECT_CERTIFICATE.equals(getIntent().getAction());
+               mManagedConfigurationService = StrongSwanApplication.getInstance().getManagedConfigurationService();
        }
 
        @Override
@@ -90,6 +96,19 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
                return true;
        }
 
+       @Override
+       public boolean onPrepareOptionsMenu(Menu menu)
+       {
+               final MenuItem importCertificate = menu.findItem(R.id.menu_import_certificate);
+               if (importCertificate != null)
+               {
+                       final ManagedConfiguration managedConfiguration = mManagedConfigurationService.getManagedConfiguration();
+                       importCertificate.setVisible(managedConfiguration.isAllowCertificateImport());
+                       importCertificate.setEnabled(managedConfiguration.isAllowCertificateImport());
+               }
+               return true;
+       }
+
        @Override
        public boolean onOptionsItemSelected(MenuItem item)
        {
index 051604f3e947c51134e4ae0de410a697ffc9fc16..6a22fdf5b17105d2d5020c1197cafbd152f8da14 100644 (file)
@@ -40,9 +40,12 @@ import android.widget.ListView;
 import android.widget.Toast;
 
 import org.strongswan.android.R;
+import org.strongswan.android.data.ManagedConfiguration;
+import org.strongswan.android.data.ManagedConfigurationService;
 import org.strongswan.android.data.VpnProfile;
 import org.strongswan.android.data.VpnProfileDataSource;
 import org.strongswan.android.data.VpnProfileSource;
+import org.strongswan.android.logic.StrongSwanApplication;
 import org.strongswan.android.ui.adapter.VpnProfileAdapter;
 import org.strongswan.android.utils.Constants;
 
@@ -69,6 +72,8 @@ public class VpnProfileListFragment extends Fragment
        private Set<Integer> mSelected;
        private boolean mReadOnly;
 
+       private ManagedConfigurationService mManagedConfigurationService;
+
        private final BroadcastReceiver mProfilesChanged = new BroadcastReceiver()
        {
                @Override
@@ -175,6 +180,8 @@ public class VpnProfileListFragment extends Fragment
                mDataSource = new VpnProfileSource(this.getActivity());
                mDataSource.open();
 
+               mManagedConfigurationService = StrongSwanApplication.getInstance().getManagedConfigurationService();
+
                /* cached list of profiles used as backend for the ListView */
                mVpnProfiles = mDataSource.getAllVpnProfiles();
 
@@ -216,6 +223,18 @@ public class VpnProfileListFragment extends Fragment
                inflater.inflate(R.menu.profile_list, menu);
        }
 
+       @Override
+       public void onPrepareOptionsMenu(Menu menu)
+       {
+               final MenuItem addProfile = menu.findItem(R.id.add_profile);
+               if (addProfile != null)
+               {
+                       final ManagedConfiguration managedConfiguration = mManagedConfigurationService.getManagedConfiguration();
+                       addProfile.setVisible(managedConfiguration.isAllowProfileCreation());
+                       addProfile.setEnabled(managedConfiguration.isAllowProfileCreation());
+               }
+       }
+
        @Override
        public boolean onOptionsItemSelected(MenuItem item)
        {