diff options
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure')
4 files changed, 31 insertions, 15 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java index 36483ebc9..d1a5dca07 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java @@ -247,6 +247,7 @@ public class EncryptAsymmetricFragment extends Fragment {      private void selectSecretKey() {          Intent intent = new Intent(getActivity(), SelectSecretKeyActivity.class); +        intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_SIGN, true);          startActivityForResult(intent, REQUEST_CODE_SECRET_KEYS);      } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java index 0ff88d97c..9160d57de 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java @@ -28,10 +28,10 @@ import org.sufficientlysecure.keychain.R;  public class SelectSecretKeyActivity extends ActionBarActivity {      public static final String EXTRA_FILTER_CERTIFY = "filter_certify"; +    public static final String EXTRA_FILTER_SIGN = "filter_sign";      public static final String RESULT_EXTRA_MASTER_KEY_ID = "master_key_id"; -    private boolean mFilterCertify;      private SelectSecretKeyFragment mSelectFragment;      @Override @@ -45,7 +45,8 @@ public class SelectSecretKeyActivity extends ActionBarActivity {          actionBar.setDisplayHomeAsUpEnabled(false);          actionBar.setHomeButtonEnabled(false); -        mFilterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false); +        boolean filterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false); +        boolean filterSign = getIntent().getBooleanExtra(EXTRA_FILTER_SIGN, false);          // Check that the activity is using the layout version with          // the fragment_container FrameLayout @@ -59,7 +60,7 @@ public class SelectSecretKeyActivity extends ActionBarActivity {              }              // Create an instance of the fragment -            mSelectFragment = SelectSecretKeyFragment.newInstance(mFilterCertify); +            mSelectFragment = SelectSecretKeyFragment.newInstance(filterCertify, filterSign);              // Add the fragment to the 'fragment_container' FrameLayout              getSupportFragmentManager().beginTransaction() diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java index 118449b9b..6de03198e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java @@ -41,18 +41,22 @@ public class SelectSecretKeyFragment extends ListFragment implements      private SelectSecretKeyActivity mActivity;      private SelectKeyCursorAdapter mAdapter; -    private boolean mFilterCertify; +    private boolean mFilterCertify, mFilterSign;      private static final String ARG_FILTER_CERTIFY = "filter_certify"; +    private static final String ARG_FILTER_SIGN = "filter_sign";      /**       * Creates new instance of this fragment +     * +     * filterCertify and filterSign must not both be set!       */ -    public static SelectSecretKeyFragment newInstance(boolean filterCertify) { +    public static SelectSecretKeyFragment newInstance(boolean filterCertify, boolean filterSign) {          SelectSecretKeyFragment frag = new SelectSecretKeyFragment();          Bundle args = new Bundle();          args.putBoolean(ARG_FILTER_CERTIFY, filterCertify); +        args.putBoolean(ARG_FILTER_CERTIFY, filterSign);          frag.setArguments(args);          return frag; @@ -63,6 +67,7 @@ public class SelectSecretKeyFragment extends ListFragment implements          super.onCreate(savedInstanceState);          mFilterCertify = getArguments().getBoolean(ARG_FILTER_CERTIFY); +        mFilterSign = getArguments().getBoolean(ARG_FILTER_SIGN);      }      /** @@ -115,9 +120,10 @@ public class SelectSecretKeyFragment extends ListFragment implements                  KeyRings.USER_ID,                  KeyRings.EXPIRY,                  KeyRings.IS_REVOKED, +                // can certify info only related to master key                  KeyRings.CAN_CERTIFY, +                // has sign may be any subkey                  KeyRings.HAS_SIGN, -                KeyRings.HAS_SECRET,                  KeyRings.HAS_ANY_SECRET          }; @@ -152,7 +158,7 @@ public class SelectSecretKeyFragment extends ListFragment implements      private class SelectSecretKeyCursorAdapter extends SelectKeyCursorAdapter { -        private int mIndexHasSecret, mIndexHasSign, mIndexCanCertify; +        private int mIndexHasSign, mIndexCanCertify;          public SelectSecretKeyCursorAdapter(Context context, Cursor c, int flags, ListView listView) {              super(context, c, flags, listView); @@ -162,7 +168,6 @@ public class SelectSecretKeyFragment extends ListFragment implements          protected void initIndex(Cursor cursor) {              super.initIndex(cursor);              if (cursor != null) { -                mIndexHasSecret = cursor.getColumnIndexOrThrow(KeyRings.HAS_SECRET);                  mIndexCanCertify = cursor.getColumnIndexOrThrow(KeyRings.CAN_CERTIFY);                  mIndexHasSign = cursor.getColumnIndexOrThrow(KeyRings.HAS_SIGN);              } @@ -179,23 +184,26 @@ public class SelectSecretKeyFragment extends ListFragment implements              // Special from superclass: Te              boolean enabled = false;              if((Boolean) h.status.getTag()) { -                if (cursor.getInt(mIndexHasSecret) == 0) { -                    h.status.setText(R.string.no_subkey);                  // Check if key is viable for our purposes (certify or sign) -                } else if(mFilterCertify) { +                if(mFilterCertify) { +                    // Only enable if can certify                      if (cursor.getInt(mIndexCanCertify) == 0) {                          h.status.setText(R.string.can_certify_not);                      } else {                          h.status.setText(R.string.can_certify);                          enabled = true;                      } -                } else { +                } else if(mFilterSign) { +                    // Only enable if can sign                      if (cursor.getInt(mIndexHasSign) == 0) { -                        h.status.setText(R.string.no_key); +                        h.status.setText(R.string.can_sign_not);                      } else {                          h.status.setText(R.string.can_sign);                          enabled = true;                      } +                } else { +                    // No filters, just enable +                    enabled = true;                  }              }              h.setEnabled(enabled); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java index a0aa97567..8db750917 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java @@ -45,7 +45,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan      private TextView mKeyMasterKeyIdHex;      private TextView mNoKeySelected;      private BootstrapButton mSelectKeyButton; -    private Boolean mFilterCertify; +    private Boolean mFilterCertify, mFilterSign;      private Uri mReceivedUri = null; @@ -72,10 +72,14 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan          mCallback = callback;      } -    public void setFilterCertify(Boolean filterCertify) { +    public void setFilterCertify(boolean filterCertify) {          mFilterCertify = filterCertify;      } +    public void setFilterSign(boolean filterSign) { +        mFilterSign = filterSign; +    } +      public void setNoKeySelected() {          mNoKeySelected.setVisibility(View.VISIBLE);          mKeyUserId.setVisibility(View.GONE); @@ -115,6 +119,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan          mSelectKeyButton = (BootstrapButton) view                  .findViewById(R.id.select_secret_key_select_key_button);          mFilterCertify = false; +        mFilterSign = false;          mSelectKeyButton.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) { @@ -135,6 +140,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan      private void startSelectKeyActivity() {          Intent intent = new Intent(getActivity(), SelectSecretKeyActivity.class);          intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_CERTIFY, mFilterCertify); +        intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_SIGN, mFilterSign);          startActivityForResult(intent, REQUEST_CODE_SELECT_KEY);      }  | 
