aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-08-16 13:42:55 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-08-16 13:42:55 +0200
commitccf58a92fa915f948709fffde17f834bb1a88cdd (patch)
tree897df170ed54cc6225f6fab2a228ff6e5eaaeeee /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java
parentc1f9c5e4b5378f6c98f96e85ae82137c93f5009f (diff)
downloadopen-keychain-ccf58a92fa915f948709fffde17f834bb1a88cdd.tar.gz
open-keychain-ccf58a92fa915f948709fffde17f834bb1a88cdd.tar.bz2
open-keychain-ccf58a92fa915f948709fffde17f834bb1a88cdd.zip
Fix flags UI in add subkey dialog
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java47
1 files changed, 43 insertions, 4 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java
index 2b8768596..c35afd4fe 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java
@@ -76,6 +76,8 @@ public class AddSubkeyDialogFragment extends DialogFragment {
private CheckBox mFlagEncrypt;
private CheckBox mFlagAuthenticate;
+ private boolean mWillBeMasterKey;
+
public void setOnAlgorithmSelectedListener(OnAlgorithmSelectedListener listener) {
mAlgorithmSelectedListener = listener;
}
@@ -96,7 +98,7 @@ public class AddSubkeyDialogFragment extends DialogFragment {
final FragmentActivity context = getActivity();
final LayoutInflater mInflater;
- final boolean willBeMasterKey = getArguments().getBoolean(ARG_WILL_BE_MASTER_KEY);
+ mWillBeMasterKey = getArguments().getBoolean(ARG_WILL_BE_MASTER_KEY);
mInflater = context.getLayoutInflater();
CustomAlertDialogBuilder dialog = new CustomAlertDialogBuilder(context);
@@ -136,7 +138,7 @@ public class AddSubkeyDialogFragment extends DialogFragment {
ArrayList<Choice> choices = new ArrayList<Choice>();
choices.add(new Choice(PublicKeyAlgorithmTags.DSA, getResources().getString(
R.string.dsa)));
- if (!willBeMasterKey) {
+ if (!mWillBeMasterKey) {
choices.add(new Choice(PublicKeyAlgorithmTags.ELGAMAL_ENCRYPT, getResources().getString(
R.string.elgamal)));
}
@@ -246,7 +248,7 @@ public class AddSubkeyDialogFragment extends DialogFragment {
mAlgorithmSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- setKeyLengthSpinnerValuesForAlgorithm(((Choice) parent.getSelectedItem()).getId());
+ updateUiForAlgorithm(((Choice) parent.getSelectedItem()).getId());
setCustomKeyVisibility();
setOkButtonAvailability(alertDialog);
@@ -348,7 +350,7 @@ public class AddSubkeyDialogFragment extends DialogFragment {
}
}
- private void setKeyLengthSpinnerValuesForAlgorithm(int algorithmId) {
+ private void updateUiForAlgorithm(int algorithmId) {
final ArrayAdapter<CharSequence> keySizeAdapter = (ArrayAdapter<CharSequence>) mKeySizeSpinner.getAdapter();
final Object selectedItem = mKeySizeSpinner.getSelectedItem();
keySizeAdapter.clear();
@@ -356,14 +358,51 @@ public class AddSubkeyDialogFragment extends DialogFragment {
case PublicKeyAlgorithmTags.RSA_GENERAL:
replaceArrayAdapterContent(keySizeAdapter, R.array.rsa_key_size_spinner_values);
mCustomKeyInfoTextView.setText(getResources().getString(R.string.key_size_custom_info_rsa));
+ // allowed flags:
+ mFlagSign.setEnabled(true);
+ mFlagEncrypt.setEnabled(true);
+ mFlagAuthenticate.setEnabled(true);
+
+ if (mWillBeMasterKey) {
+ mFlagCertify.setEnabled(true);
+
+ mFlagCertify.setChecked(true);
+ mFlagSign.setChecked(false);
+ mFlagEncrypt.setChecked(false);
+ } else {
+ mFlagCertify.setEnabled(false);
+
+ mFlagCertify.setChecked(false);
+ mFlagSign.setChecked(true);
+ mFlagEncrypt.setChecked(true);
+ }
+ mFlagAuthenticate.setChecked(false);
break;
case PublicKeyAlgorithmTags.ELGAMAL_ENCRYPT:
replaceArrayAdapterContent(keySizeAdapter, R.array.elgamal_key_size_spinner_values);
mCustomKeyInfoTextView.setText(""); // ElGamal does not support custom key length
+ // allowed flags:
+ mFlagCertify.setChecked(false);
+ mFlagCertify.setEnabled(false);
+ mFlagSign.setChecked(false);
+ mFlagSign.setEnabled(false);
+ mFlagEncrypt.setChecked(true);
+ mFlagEncrypt.setEnabled(true);
+ mFlagAuthenticate.setChecked(false);
+ mFlagAuthenticate.setEnabled(false);
break;
case PublicKeyAlgorithmTags.DSA:
replaceArrayAdapterContent(keySizeAdapter, R.array.dsa_key_size_spinner_values);
mCustomKeyInfoTextView.setText(getResources().getString(R.string.key_size_custom_info_dsa));
+ // allowed flags:
+ mFlagCertify.setChecked(false);
+ mFlagCertify.setEnabled(false);
+ mFlagSign.setChecked(true);
+ mFlagSign.setEnabled(true);
+ mFlagEncrypt.setChecked(false);
+ mFlagEncrypt.setEnabled(false);
+ mFlagAuthenticate.setChecked(false);
+ mFlagAuthenticate.setEnabled(false);
break;
}
keySizeAdapter.notifyDataSetChanged();