android: Hide menu items depending on managed configuration

Hide and disable menu items when disabled by the managed configuration.
This commit is contained in:
Markus Pfeiffer
2024-02-21 12:24:53 +01:00
committed by Tobias Brunner
parent 4bfeb3b000
commit fe13782e3c
3 changed files with 57 additions and 0 deletions
@@ -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)
{
@@ -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)
{
@@ -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)
{