diff options
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java | 140 |
1 files changed, 37 insertions, 103 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 640755ef3..3dda47ac5 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java @@ -35,7 +35,6 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; -import android.os.Build; import android.os.Bundle; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; @@ -222,18 +221,6 @@ public class DecryptListFragment } } - private void askForOutputFilename(Uri inputUri, String originalFilename, String mimeType) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { - File file = new File(inputUri.getPath()); - File parentDir = file.exists() ? file.getParentFile() : Constants.Path.APP_DIR; - File targetFile = new File(parentDir, originalFilename); - FileHelper.saveFile(this, getString(R.string.title_decrypt_to_file), - getString(R.string.specify_file_to_decrypt_to), targetFile, REQUEST_CODE_OUTPUT); - } else { - FileHelper.saveDocument(this, mimeType, originalFilename, REQUEST_CODE_OUTPUT); - } - } - @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { @@ -388,7 +375,7 @@ public class DecryptListFragment onFileClick = new OnClickListener() { @Override public void onClick(View view) { - displayWithViewIntent(uri); + displayWithViewIntent(uri, false); } }; } @@ -413,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; @@ -432,104 +419,47 @@ public class DecryptListFragment // OpenKeychain's internal viewer if ("text/plain".equals(metadata.getMimeType())) { - parseMime(outputUri); - - // this is a significant i/o operation, use an asynctask -// new AsyncTask<Void,Void,Intent>() { -// -// @Override -// protected Intent doInBackground(Void... params) { -// -// Activity activity = getActivity(); -// if (activity == null) { -// return null; -// } -// -// Intent intent = new Intent(Intent.ACTION_VIEW); -// intent.setDataAndType(outputUri, "text/plain"); -// intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); -// return intent; -// } -// -// @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; -// } -// -// LabeledIntent internalIntent = new LabeledIntent( -// new Intent(intent) -// .setClass(activity, DisplayTextActivity.class) -// .putExtra(DisplayTextActivity.EXTRA_METADATA, result), -// BuildConfig.APPLICATION_ID, R.string.view_internal, R.drawable.ic_launcher); -// -// Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); -// chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, -// new Parcelable[] { internalIntent }); -// -// activity.startActivity(chooserIntent); -// } -// -// }.execute(); + if (share) { + try { + String plaintext = FileHelper.readTextFromUri(activity, outputUri, result.getCharset()); - } else { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(outputUri, metadata.getMimeType()); - intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType(metadata.getMimeType()); + intent.putExtra(Intent.EXTRA_TEXT, plaintext); + startActivity(intent); - Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); - chooserIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - activity.startActivity(chooserIntent); - } - - } - - private void parseMime(final Uri inputUri) { - - CryptoOperationHelper.Callback<MimeParsingParcel, MimeParsingResult> callback - = new CryptoOperationHelper.Callback<MimeParsingParcel, MimeParsingResult>() { - - @Override - public MimeParsingParcel createOperationInput() { - return new MimeParsingParcel(inputUri, null); - } + } catch (IOException e) { + Notify.create(activity, R.string.error_preparing_data, Style.ERROR).show(); + } - @Override - public void onCryptoOperationSuccess(MimeParsingResult result) { - handleResult(result); + return; } - @Override - public void onCryptoOperationCancelled() { + Intent intent = new Intent(activity, DisplayTextActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.setDataAndType(outputUri, metadata.getMimeType()); + intent.putExtra(DisplayTextActivity.EXTRA_METADATA, result); + activity.startActivity(intent); - } + } else { - @Override - public void onCryptoOperationError(MimeParsingResult result) { - handleResult(result); + 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()); } - public void handleResult(MimeParsingResult result) { - // TODO: merge with other log -// saveKeyResult.getLog().add(result, 0); - - mOutputUris = new HashMap<>(result.getTemporaryUris().size()); - for (Uri tempUri : result.getTemporaryUris()) { - // TODO: use same inputUri for all? - mOutputUris.put(inputUri, tempUri); - } - } + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - @Override - public boolean onCryptoSetProgress(String msg, int progress, int max) { - return false; - } - }; + Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); + chooserIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + activity.startActivity(chooserIntent); + } - CryptoOperationHelper mimeParsingHelper = new CryptoOperationHelper<>(3, this, callback, R.string.progress_uploading); - mimeParsingHelper.cryptoOperation(); } @Override @@ -576,13 +506,17 @@ 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) { return true; } mCurrentInputUri = model.mInputUri; - askForOutputFilename(model.mInputUri, metadata.getFilename(), metadata.getMimeType()); + FileHelper.saveDocument(this, metadata.getFilename(), model.mInputUri, metadata.getMimeType(), + R.string.title_decrypt_to_file, R.string.specify_file_to_decrypt_to, REQUEST_CODE_OUTPUT); return true; case R.id.decrypt_delete: deleteFile(activity, model.mInputUri); |