aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java48
1 files changed, 36 insertions, 12 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java
index 2fabeb82c..3111e5c3e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFileFragment.java
@@ -33,12 +33,13 @@ import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.Spinner;
import android.widget.TextView;
-import android.widget.ImageButton;
import com.devspark.appmsg.AppMsg;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.pgp.KeyRing;
+import org.sufficientlysecure.keychain.provider.TemporaryStorageProvider;
import org.sufficientlysecure.keychain.helper.FileHelper;
import org.sufficientlysecure.keychain.helper.Preferences;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
@@ -50,6 +51,8 @@ import org.sufficientlysecure.keychain.util.Choice;
import org.sufficientlysecure.keychain.util.Log;
import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
public class EncryptFileFragment extends Fragment {
public static final String ARG_URI = "uri";
@@ -65,8 +68,7 @@ public class EncryptFileFragment extends Fragment {
private Spinner mFileCompression = null;
private TextView mFilename = null;
private CheckBox mDeleteAfter = null;
- private CheckBox mShareAfter = null;
- private ImageButton mBrowse = null;
+ private View mShareFile;
private View mEncryptFile;
// model
@@ -94,13 +96,19 @@ public class EncryptFileFragment extends Fragment {
mEncryptFile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- encryptClicked();
+ encryptClicked(false);
+ }
+ });
+ mShareFile = view.findViewById(R.id.action_encrypt_share);
+ mShareFile.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ encryptClicked(true);
}
});
mFilename = (TextView) view.findViewById(R.id.filename);
- mBrowse = (ImageButton) view.findViewById(R.id.btn_browse);
- mBrowse.setOnClickListener(new View.OnClickListener() {
+ view.findViewById(R.id.btn_browse).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (Constants.KITKAT) {
FileHelper.openDocument(EncryptFileFragment.this, "*/*", REQUEST_CODE_INPUT);
@@ -136,7 +144,6 @@ public class EncryptFileFragment extends Fragment {
}
mDeleteAfter = (CheckBox) view.findViewById(R.id.deleteAfterEncryption);
- mShareAfter = (CheckBox) view.findViewById(R.id.shareAfterEncryption);
mAsciiArmor = (CheckBox) view.findViewById(R.id.asciiArmor);
mAsciiArmor.setChecked(Preferences.getPreferences(getActivity()).getDefaultAsciiArmor());
@@ -181,7 +188,7 @@ public class EncryptFileFragment extends Fragment {
}
}
- private void encryptClicked() {
+ private void encryptClicked(boolean share) {
if (mInputUri == null) {
AppMsg.makeText(getActivity(), R.string.no_file_selected, AppMsg.STYLE_ALERT).show();
return;
@@ -236,10 +243,17 @@ public class EncryptFileFragment extends Fragment {
}
}
- showOutputFileDialog();
+ if (share) {
+ String targetName = FileHelper.getFilename(getActivity(), mInputUri) +
+ (mAsciiArmor.isChecked() ? ".asc" : ".gpg");
+ mOutputUri = TemporaryStorageProvider.createFile(getActivity(), targetName);
+ encryptStart(true);
+ } else {
+ showOutputFileDialog();
+ }
}
- private void encryptStart() {
+ private void encryptStart(final boolean share) {
if (mInputUri == null || mOutputUri == null) {
throw new IllegalStateException("Something went terribly wrong if this happens!");
}
@@ -300,11 +314,21 @@ public class EncryptFileFragment extends Fragment {
setInputUri(null);
}
- if (mShareAfter.isChecked()) {
+ if (share) {
// Share encrypted file
Intent sendFileIntent = new Intent(Intent.ACTION_SEND);
sendFileIntent.setType("*/*");
sendFileIntent.putExtra(Intent.EXTRA_STREAM, mOutputUri);
+ if (!mEncryptInterface.isModeSymmetric() && mEncryptInterface.getEncryptionUsers() != null) {
+ Set<String> users = new HashSet<String>();
+ for (String user : mEncryptInterface.getEncryptionUsers()) {
+ String[] userId = KeyRing.splitUserId(user);
+ if (userId[1] != null) {
+ users.add(userId[1]);
+ }
+ }
+ sendFileIntent.putExtra(Intent.EXTRA_EMAIL, users.toArray(new String[users.size()]));
+ }
startActivity(Intent.createChooser(sendFileIntent,
getString(R.string.title_share_file)));
}
@@ -336,7 +360,7 @@ public class EncryptFileFragment extends Fragment {
// This happens after output file was selected, so start our operation
if (resultCode == Activity.RESULT_OK && data != null) {
mOutputUri = data.getData();
- encryptStart();
+ encryptStart(false);
}
return;
}