From: Markus Pfeiffer Date: Tue, 21 Nov 2023 14:37:22 +0000 (+0100) Subject: android: Hide menu items depending on managed configuration X-Git-Tag: android-2.5.0^2~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe13782e3c58d2f4b47472a347040243ca416857;p=thirdparty%2Fstrongswan.git android: Hide menu items depending on managed configuration Hide and disable menu items when disabled by the managed configuration. --- diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java index a836ffbcc7..603dedef94 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java @@ -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) { diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java index c32ec5d827..0a0b26a8a4 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java @@ -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 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) { diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java index 051604f3e9..6a22fdf5b1 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java @@ -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 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) {