diff options
Diffstat (limited to 'OpenKeychain/src/main/java/org')
4 files changed, 87 insertions, 49 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java index c75f6d838..b7c80c1ed 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java @@ -17,14 +17,12 @@  package org.sufficientlysecure.keychain.ui; -import android.content.Intent;  import android.net.Uri;  import android.os.Bundle;  import android.view.View;  import org.sufficientlysecure.keychain.Constants;  import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.operations.results.OperationResult;  import org.sufficientlysecure.keychain.util.Log;  public class CertifyFingerprintActivity extends BaseActivity { @@ -79,14 +77,4 @@ public class CertifyFingerprintActivity extends BaseActivity {          getSupportFragmentManager().executePendingTransactions();      } -    @Override -    protected void onActivityResult(int requestCode, int resultCode, Intent data) { -        // if a result has been returned, display a notify -        if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) { -            setResult(RESULT_OK, data); -            finish(); -        } else { -            super.onActivityResult(requestCode, resultCode, data); -        } -    }  } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintFragment.java index aef705ee9..a6b8a0e85 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintFragment.java @@ -41,6 +41,8 @@ import org.sufficientlysecure.keychain.util.Log;  public class CertifyFingerprintFragment extends LoaderFragment implements          LoaderManager.LoaderCallbacks<Cursor> { +    static final int REQUEST_CERTIFY = 1; +      public static final String ARG_DATA_URI = "uri";      private TextView mFingerprint; @@ -177,8 +179,20 @@ public class CertifyFingerprintFragment extends LoaderFragment implements              Log.e(Constants.TAG, "key not found!", e);          }          Intent certifyIntent = new Intent(getActivity(), CertifyKeyActivity.class); +        certifyIntent.putExtras(getActivity().getIntent());          certifyIntent.putExtra(CertifyKeyActivity.EXTRA_KEY_IDS, new long[]{keyId}); -        startActivityForResult(certifyIntent, 0); +        startActivityForResult(certifyIntent, REQUEST_CERTIFY); +    } + +    @Override +    public void onActivityResult(int requestCode, int resultCode, Intent data) { +        // always just pass this one through +        if (requestCode == REQUEST_CERTIFY) { +            getActivity().setResult(resultCode, data); +            getActivity().finish(); +            return; +        } +        super.onActivityResult(requestCode, resultCode, data);      }  } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java index 50d5e3229..e1467ec61 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java @@ -31,6 +31,7 @@ import android.os.Bundle;  import android.os.Message;  import android.os.Messenger;  import android.os.Parcel; +import android.os.Parcelable;  import android.support.v4.app.LoaderManager;  import android.support.v4.content.CursorLoader;  import android.support.v4.content.Loader; @@ -94,6 +95,7 @@ public class CertifyKeyFragment extends LoaderFragment      private static final int INDEX_IS_REVOKED = 4;      private MultiUserIdsAdapter mUserIdsAdapter; +    private Messenger mPassthroughMessenger;      @Override      public void onActivityCreated(Bundle savedInstanceState) { @@ -109,6 +111,9 @@ public class CertifyKeyFragment extends LoaderFragment              return;          } +        mPassthroughMessenger = getActivity().getIntent().getParcelableExtra( +                KeychainIntentService.EXTRA_MESSENGER); +          // preselect certify key id if given          long certifyKeyId = getActivity().getIntent().getLongExtra(CertifyKeyActivity.EXTRA_CERTIFY_KEY_ID, Constants.key.none);          if (certifyKeyId != Constants.key.none) { @@ -332,7 +337,6 @@ public class CertifyKeyFragment extends LoaderFragment          }      } -      @Override      public void onActivityResult(int requestCode, int resultCode, Intent data) {          switch (requestCode) { @@ -362,51 +366,63 @@ public class CertifyKeyFragment extends LoaderFragment              return;          } +        Bundle data = new Bundle(); +        { +            // fill values for this action +            CertifyActionsParcel parcel = new CertifyActionsParcel(mSignMasterKeyId); +            parcel.mCertifyActions.addAll(certifyActions); + +            data.putParcelable(KeychainIntentService.CERTIFY_PARCEL, parcel); +            if (mUploadKeyCheckbox.isChecked()) { +                String keyserver = Preferences.getPreferences(getActivity()).getPreferredKeyserver(); +                data.putString(KeychainIntentService.UPLOAD_KEY_SERVER, keyserver); +            } +        } +          // Send all information needed to service to sign key in other thread          Intent intent = new Intent(getActivity(), KeychainIntentService.class); -          intent.setAction(KeychainIntentService.ACTION_CERTIFY_KEYRING); - -        // fill values for this action -        CertifyActionsParcel parcel = new CertifyActionsParcel(mSignMasterKeyId); -        parcel.mCertifyActions.addAll(certifyActions); - -        Bundle data = new Bundle(); -        data.putParcelable(KeychainIntentService.CERTIFY_PARCEL, parcel); -        if (mUploadKeyCheckbox.isChecked()) { -            String keyserver = Preferences.getPreferences(getActivity()).getPreferredKeyserver(); -            data.putString(KeychainIntentService.UPLOAD_KEY_SERVER, keyserver); -        }          intent.putExtra(KeychainIntentService.EXTRA_DATA, data); -        // Message is received after signing is done in KeychainIntentService -        KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(getActivity(), -                getString(R.string.progress_certifying), ProgressDialog.STYLE_SPINNER, true) { -            public void handleMessage(Message message) { -                // handle messages by standard KeychainIntentServiceHandler first -                super.handleMessage(message); - -                if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) { -                    Bundle data = message.getData(); -                    CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT); - -                    Intent intent = new Intent(); -                    intent.putExtra(CertifyResult.EXTRA_RESULT, result); -                    getActivity().setResult(Activity.RESULT_OK, intent); -                    getActivity().finish(); +        if (mPassthroughMessenger != null) { +            intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, mPassthroughMessenger); +        } else { + +            // Message is received after signing is done in KeychainIntentService +            KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(getActivity(), +                    getString(R.string.progress_certifying), ProgressDialog.STYLE_SPINNER, true) { +                public void handleMessage(Message message) { +                    // handle messages by standard KeychainIntentServiceHandler first +                    super.handleMessage(message); + +                    if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) { +                        Bundle data = message.getData(); +                        CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT); + +                        Intent intent = new Intent(); +                        intent.putExtra(CertifyResult.EXTRA_RESULT, result); +                        getActivity().setResult(Activity.RESULT_OK, intent); +                        getActivity().finish(); +                    }                  } -            } -        }; +            }; -        // Create a new Messenger for the communication back -        Messenger messenger = new Messenger(saveHandler); -        intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); +            // Create a new Messenger for the communication back +            Messenger messenger = new Messenger(saveHandler); +            intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); -        // show progress dialog -        saveHandler.showProgressDialog(getActivity()); +            // show progress dialog +            saveHandler.showProgressDialog(getActivity()); +        }          // start service with intent          getActivity().startService(intent); + +        if (mPassthroughMessenger != null) { +            getActivity().setResult(Activity.RESULT_OK); +            getActivity().finish(); +        } +      }  } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index bbf35e497..f7d402c0b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -21,11 +21,11 @@ package org.sufficientlysecure.keychain.ui;  import android.animation.ArgbEvaluator;  import android.animation.ObjectAnimator;  import android.annotation.TargetApi; +import android.app.Activity;  import android.app.ActivityOptions;  import android.content.Intent;  import android.database.Cursor;  import android.graphics.Bitmap; -import android.graphics.Color;  import android.net.Uri;  import android.nfc.NdefMessage;  import android.nfc.NdefRecord; @@ -62,6 +62,7 @@ import com.getbase.floatingactionbutton.FloatingActionButton;  import org.sufficientlysecure.keychain.Constants;  import org.sufficientlysecure.keychain.R;  import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing; +import org.sufficientlysecure.keychain.operations.results.CertifyResult;  import org.sufficientlysecure.keychain.operations.results.ImportKeyResult;  import org.sufficientlysecure.keychain.operations.results.OperationResult;  import org.sufficientlysecure.keychain.pgp.KeyRing; @@ -385,6 +386,25 @@ public class ViewKeyActivity extends BaseActivity implements      private void certifyFingeprint(Uri dataUri) {          Intent intent = new Intent(this, CertifyFingerprintActivity.class);          intent.setData(dataUri); + +        // Message is received after signing is done in KeychainIntentService +        KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(this) { +            public void handleMessage(Message message) { +                // handle messages by standard KeychainIntentServiceHandler first +                super.handleMessage(message); + +                if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) { +                    Bundle data = message.getData(); +                    CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT); + +                    result.createNotify(ViewKeyActivity.this).show(); +                } +            } +        }; +        // Create a new Messenger for the communication back +        Messenger messenger = new Messenger(saveHandler); +        intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); +          startActivityForResult(intent, 0);      }  | 
