added some info about the speed of compression algorithms, mostly to warn about BZIP2, also added support for content URIs in file encrypt/decrypt activities

This commit is contained in:
Thialfihar 2010-07-05 13:22:03 +00:00
parent c1699150a8
commit ff2da0c5d1
6 changed files with 84 additions and 28 deletions

View file

@ -199,5 +199,6 @@
<uses-permission android:name="com.google.android.providers.gmail.permission.READ_GMAIL" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.fsck.k9.permission.READ_ATTACHMENT" />
</manifest>

View file

@ -278,4 +278,9 @@
<string name="hint_secretKeys">Private Schlüssel suchen</string>
<string name="filterInfo">Filter: \"%s\"</string>
<!-- misc -->
<string name="fast">schnell</string>
<string name="slow">langsam</string>
<string name="very_slow">sehr langsam</string>
</resources>

View file

@ -255,5 +255,10 @@
<string name="hint_secretKeys">Search Secret Keys</string>
<string name="filterInfo">Filter: \"%s\"</string>
<!-- misc -->
<string name="fast">fast</string>
<string name="slow">slow</string>
<string name="very_slow">very slow</string>
</resources>

View file

@ -209,6 +209,10 @@ public class DecryptActivity extends BaseActivity {
mInputFilename = mIntent.getDataString().replace("file://", "");
mFilename.setText(mInputFilename);
guessOutputFilename();
} else if ("content".equals(mIntent.getScheme())) {
mInputFilename = mIntent.getDataString();
mFilename.setText(mInputFilename);
guessOutputFilename();
}
mSource.setInAnimation(null);
mSource.setOutAnimation(null);
@ -363,12 +367,14 @@ public class DecryptActivity extends BaseActivity {
return;
}
File file = new File(mInputFilename);
if (!file.exists() || !file.isFile()) {
Toast.makeText(this, getString(R.string.errorMessage,
getString(R.string.error_fileNotFound)),
Toast.LENGTH_SHORT).show();
return;
if (mInputFilename.startsWith("file")) {
File file = new File(mInputFilename);
if (!file.exists() || !file.isFile()) {
Toast.makeText(this, getString(R.string.errorMessage,
getString(R.string.error_fileNotFound)),
Toast.LENGTH_SHORT).show();
return;
}
}
}
@ -388,7 +394,11 @@ public class DecryptActivity extends BaseActivity {
try {
InputStream in;
if (mDecryptTarget == Id.target.file) {
in = new FileInputStream(mInputFilename);
if (mInputFilename.startsWith("file")) {
in = new FileInputStream(mInputFilename);
} else {
in = getContentResolver().openInputStream(Uri.parse(mInputFilename));
}
} else {
in = new ByteArrayInputStream(mMessage.getText().toString().getBytes());
}
@ -403,7 +413,11 @@ public class DecryptActivity extends BaseActivity {
// look at the file/message again to check whether there's
// symmetric encryption data in there
if (mDecryptTarget == Id.target.file) {
in = new FileInputStream(mInputFilename);
if (mInputFilename.startsWith("file")) {
in = new FileInputStream(mInputFilename);
} else {
in = getContentResolver().openInputStream(Uri.parse(mInputFilename));
}
} else {
in = new ByteArrayInputStream(mMessage.getText().toString().getBytes());
}
@ -488,10 +502,22 @@ public class DecryptActivity extends BaseActivity {
out = new ByteArrayOutputStream();
size = messageData.getBytes().length;
} else {
in = new PositionAwareInputStream(new FileInputStream(mInputFilename));
if (mInputFilename.startsWith("content")) {
InputStream tmp = getContentResolver().openInputStream(Uri.parse(mInputFilename));
size = 0;
long n = 0;
byte dummy[] = new byte[0x10000];
while ((n = tmp.read(dummy)) > 0) {
size += n;
}
in = new PositionAwareInputStream(
getContentResolver().openInputStream(Uri.parse(mInputFilename)));
} else {
in = new PositionAwareInputStream(new FileInputStream(mInputFilename));
File file = new File(mInputFilename);
size = file.length();
}
out = new FileOutputStream(mOutputFilename);
File file = new File(mInputFilename);
size = file.length();
}
if (mSignedOnly) {

View file

@ -203,10 +203,11 @@ public class EncryptActivity extends BaseActivity {
mFileCompression = (Spinner) findViewById(R.id.fileCompression);
Choice[] choices = new Choice[] {
new Choice(Id.choice.compression.none, getString(R.string.choice_none)),
new Choice(Id.choice.compression.zip, "ZIP"),
new Choice(Id.choice.compression.bzip2, "BZIP2"),
new Choice(Id.choice.compression.zlib, "ZLIB"),
new Choice(Id.choice.compression.none, getString(R.string.choice_none) +
" (" + getString(R.string.fast) + ")"),
new Choice(Id.choice.compression.zip, "ZIP (" + getString(R.string.fast) + ")"),
new Choice(Id.choice.compression.zlib, "ZLIB (" + getString(R.string.fast) + ")"),
new Choice(Id.choice.compression.bzip2, "BZIP2 (" + getString(R.string.very_slow) + ")"),
};
ArrayAdapter<Choice> adapter =
new ArrayAdapter<Choice>(this, android.R.layout.simple_spinner_item, choices);
@ -470,12 +471,14 @@ public class EncryptActivity extends BaseActivity {
return;
}
File file = new File(mInputFilename);
if (!file.exists() || !file.isFile()) {
Toast.makeText(this, getString(R.string.errorMessage,
getString(R.string.error_fileNotFound)),
Toast.LENGTH_SHORT).show();
return;
if (!mInputFilename.startsWith("content")) {
File file = new File(mInputFilename);
if (!file.exists() || !file.isFile()) {
Toast.makeText(this, getString(R.string.errorMessage,
getString(R.string.error_fileNotFound)),
Toast.LENGTH_SHORT).show();
return;
}
}
}
@ -576,11 +579,22 @@ public class EncryptActivity extends BaseActivity {
}
}
in = new FileInputStream(mInputFilename);
if (mInputFilename.startsWith("content")) {
in = getContentResolver().openInputStream(Uri.parse(mInputFilename));
size = 0;
long n = 0;
byte dummy[] = new byte[0x10000];
while ((n = in.read(dummy)) > 0) {
size += n;
}
in = getContentResolver().openInputStream(Uri.parse(mInputFilename));
} else {
in = new FileInputStream(mInputFilename);
File file = new File(mInputFilename);
size = file.length();
}
out = new FileOutputStream(mOutputFilename);
File file = new File(mInputFilename);
size = file.length();
useAsciiArmour = mAsciiArmour.isChecked();
compressionId = ((Choice) mFileCompression.getSelectedItem()).getId();
} else {

View file

@ -18,6 +18,7 @@ package org.thialfihar.android.apg;
import org.bouncycastle2.bcpg.HashAlgorithmTags;
import org.bouncycastle2.openpgp.PGPEncryptedData;
import org.thialfihar.android.apg.utils.Choice;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
@ -118,12 +119,16 @@ public class PreferencesActivity extends PreferenceActivity {
mMessageCompression = (IntegerListPreference) findPreference(Constants.pref.default_message_compression);
valueIds = new int[] {
Id.choice.compression.none, Id.choice.compression.zip,
Id.choice.compression.bzip2, Id.choice.compression.zlib,
Id.choice.compression.none,
Id.choice.compression.zip,
Id.choice.compression.zlib,
Id.choice.compression.bzip2,
};
entries = new String[] {
getString(R.string.choice_none), "ZIP",
"BZIP2", "ZLIB",
getString(R.string.choice_none) + " (" + getString(R.string.fast) + ")",
"ZIP (" + getString(R.string.fast) + ")",
"ZLIB (" + getString(R.string.fast) + ")",
"BZIP2 (" + getString(R.string.very_slow) + ")",
};
values = new String[valueIds.length];
for (int i = 0; i < values.length; ++i) {