diff options
Diffstat (limited to 'OpenKeychain/src/main/java/org')
| -rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java | 112 | 
1 files changed, 74 insertions, 38 deletions
| 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 1b4fc503c..c94b29bac 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -89,6 +89,8 @@ public class ViewKeyActivity extends BaseActivity implements          LoaderManager.LoaderCallbacks<Cursor> {      static final int REQUEST_QR_FINGERPRINT = 1; +    static final int REQUEST_DELETE= 2; +    static final int REQUEST_EXPORT= 3;      ExportHelper mExportHelper;      ProviderHelper mProviderHelper; @@ -298,48 +300,63 @@ public class ViewKeyActivity extends BaseActivity implements      @Override      public boolean onOptionsItemSelected(MenuItem item) { -        try { -            switch (item.getItemId()) { -                case android.R.id.home: { -                    Intent homeIntent = new Intent(this, MainActivity.class); -                    homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); -                    startActivity(homeIntent); -                    return true; -                } -                case R.id.menu_key_view_export_file: { -                    exportToFile(mDataUri, mExportHelper, mProviderHelper); -                    return true; -                } -                case R.id.menu_key_view_delete: { -                    deleteKey(mDataUri, mExportHelper); -                    return true; -                } -                case R.id.menu_key_view_advanced: { -                    Intent advancedIntent = new Intent(this, ViewKeyAdvActivity.class); -                    advancedIntent.setData(mDataUri); -                    startActivity(advancedIntent); -                    return true; -                } -                case R.id.menu_key_view_refresh: { -                    try { -                        updateFromKeyserver(mDataUri, mProviderHelper); -                    } catch (ProviderHelper.NotFoundException e) { -                        Notify.showNotify(this, R.string.error_key_not_found, Notify.Style.ERROR); -                    } -                    return true; +        switch (item.getItemId()) { +            case android.R.id.home: { +                Intent homeIntent = new Intent(this, MainActivity.class); +                homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); +                startActivity(homeIntent); +                return true; +            } +            case R.id.menu_key_view_export_file: { +                Intent mIntent = new Intent(this,PassphraseDialogActivity.class); +                long keyId=0; +                try { +                    keyId = new ProviderHelper(this) +                            .getCachedPublicKeyRing(mDataUri) +                            .extractOrGetMasterKeyId(); +                } catch (PgpKeyNotFoundException e) { +                    e.printStackTrace();                  } -                case R.id.menu_key_view_edit: { -                    editKey(mDataUri); -                    return true; +                mIntent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID,keyId); +                startActivityForResult(mIntent,REQUEST_EXPORT); +                return true; +            } +            case R.id.menu_key_view_delete: { +                Intent mIntent = new Intent(this,PassphraseDialogActivity.class); +                long keyId=0; +                try { +                    keyId = new ProviderHelper(this) +                            .getCachedPublicKeyRing(mDataUri) +                            .extractOrGetMasterKeyId(); +                } catch (PgpKeyNotFoundException e) { +                    e.printStackTrace();                  } -                case R.id.menu_key_view_certify_fingerprint: { -                    certifyFingeprint(mDataUri); -                    return true; +                mIntent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID,keyId); +                startActivityForResult(mIntent,REQUEST_DELETE); +                return true; +            } +            case R.id.menu_key_view_advanced: { +                Intent advancedIntent = new Intent(this, ViewKeyAdvActivity.class); +                advancedIntent.setData(mDataUri); +                startActivity(advancedIntent); +                return true; +            } +            case R.id.menu_key_view_refresh: { +                try { +                    updateFromKeyserver(mDataUri, mProviderHelper); +                } catch (ProviderHelper.NotFoundException e) { +                    Notify.showNotify(this, R.string.error_key_not_found, Notify.Style.ERROR);                  } +                return true; +            } +            case R.id.menu_key_view_edit: { +                editKey(mDataUri); +                return true; +            } +            case R.id.menu_key_view_certify_fingerprint: { +                certifyFingeprint(mDataUri); +                return true;              } -        } catch (ProviderHelper.NotFoundException e) { -            Notify.showNotify(this, R.string.error_key_not_found, Notify.Style.ERROR); -            Log.e(Constants.TAG, "Key not found", e);          }          return super.onOptionsItemSelected(item);      } @@ -427,6 +444,12 @@ public class ViewKeyActivity extends BaseActivity implements          startActivityForResult(intent, 0);      } +    @Override +    protected void onSaveInstanceState(Bundle outState) { +        //Note:-Done due to the same weird crashes as for commitAllowingStateLoss() +        //super.onSaveInstanceState(outState); +    } +      private void showQrCodeDialog() {          Intent qrCodeIntent = new Intent(this, QrCodeViewActivity.class); @@ -500,6 +523,19 @@ public class ViewKeyActivity extends BaseActivity implements              return;          } +        if (requestCode == REQUEST_DELETE && resultCode == Activity.RESULT_OK){ +            deleteKey(mDataUri, mExportHelper); +        } +        if (requestCode == REQUEST_EXPORT && resultCode == Activity.RESULT_OK){ +            try { +                exportToFile(mDataUri, mExportHelper, mProviderHelper); +            } catch (ProviderHelper.NotFoundException e) { +                Notify.showNotify(this, R.string.error_key_not_found, Notify.Style.ERROR); +                Log.e(Constants.TAG, "Key not found", e); +            } +        } + +          if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) {              OperationResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT);              result.createNotify(this).show(); | 
