diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-09-11 04:51:55 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2015-09-11 04:51:55 +0200 |
commit | fd6141f0d2564eee1e6c87fe6db5bf3bbb1c4bcf (patch) | |
tree | 36f25b2c5262ac7ffded61e6045915182b26950c /OpenKeychain/src/main/java | |
parent | 486117d9de8618c1ecfb2a592c781fc43f1cc886 (diff) | |
download | open-keychain-fd6141f0d2564eee1e6c87fe6db5bf3bbb1c4bcf.tar.gz open-keychain-fd6141f0d2564eee1e6c87fe6db5bf3bbb1c4bcf.tar.bz2 open-keychain-fd6141f0d2564eee1e6c87fe6db5bf3bbb1c4bcf.zip |
add share item to decrypt file list (#1524)
Diffstat (limited to 'OpenKeychain/src/main/java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java | 74 |
1 files changed, 39 insertions, 35 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java index 9c0122b7b..92470218b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java @@ -375,7 +375,7 @@ public class DecryptListFragment onFileClick = new OnClickListener() { @Override public void onClick(View view) { - displayWithViewIntent(uri); + displayWithViewIntent(uri, false); } }; } @@ -400,7 +400,7 @@ public class DecryptListFragment } - public void displayWithViewIntent(final Uri uri) { + public void displayWithViewIntent(final Uri uri, boolean share) { Activity activity = getActivity(); if (activity == null || mCurrentInputUri != null) { return; @@ -419,49 +419,50 @@ public class DecryptListFragment // OpenKeychain's internal viewer if ("text/plain".equals(metadata.getMimeType())) { - // this is a significant i/o operation, use an asynctask - new AsyncTask<Void,Void,Intent>() { + if (share) { + try { + String plaintext = FileHelper.readTextFromUri(activity, outputUri, result.getCharset()); - @Override - protected Intent doInBackground(Void... params) { - - Activity activity = getActivity(); - if (activity == null) { - return null; - } + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType(metadata.getMimeType()); + intent.putExtra(Intent.EXTRA_TEXT, plaintext); + startActivity(intent); - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(outputUri, "text/plain"); - intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - return intent; + } catch (IOException e) { + Notify.create(activity, R.string.error_preparing_data, Style.ERROR).show(); } - @Override - protected void onPostExecute(Intent intent) { - // for result so we can possibly get a snackbar error from internal viewer - Activity activity = getActivity(); - if (intent == null || activity == null) { - return; - } + return; + } - LabeledIntent internalIntent = new LabeledIntent( - new Intent(intent) - .setClass(activity, DisplayTextActivity.class) - .putExtra(DisplayTextActivity.EXTRA_METADATA, result), - BuildConfig.APPLICATION_ID, R.string.view_internal, R.mipmap.ic_launcher); + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setDataAndType(outputUri, metadata.getMimeType()); - Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); - chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, - new Parcelable[] { internalIntent }); + // for result so we can possibly get a snackbar error from internal viewer + LabeledIntent internalIntent = new LabeledIntent( + new Intent(intent) + .setClass(activity, DisplayTextActivity.class) + .putExtra(DisplayTextActivity.EXTRA_METADATA, result), + BuildConfig.APPLICATION_ID, R.string.view_internal, R.mipmap.ic_launcher); - activity.startActivity(chooserIntent); - } + Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); + chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, + new Parcelable[] { internalIntent }); - }.execute(); + activity.startActivity(chooserIntent); } else { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(outputUri, metadata.getMimeType()); + + Intent intent; + if (share) { + intent = new Intent(Intent.ACTION_SEND); + intent.setType(metadata.getMimeType()); + intent.putExtra(Intent.EXTRA_STREAM, outputUri); + } else { + intent = new Intent(Intent.ACTION_VIEW); + intent.setDataAndType(outputUri, metadata.getMimeType()); + } + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); @@ -515,6 +516,9 @@ public class DecryptListFragment intent.putExtra(LogDisplayFragment.EXTRA_RESULT, result); activity.startActivity(intent); return true; + case R.id.decrypt_share: + displayWithViewIntent(model.mInputUri, true); + return true; case R.id.decrypt_save: OpenPgpMetadata metadata = result.getDecryptionMetadata(); if (metadata == null) { |