aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/org/thialfihar/android/apg/BaseActivity.java109
-rw-r--r--src/org/thialfihar/android/apg/EncryptActivity.java11
-rw-r--r--src/org/thialfihar/android/apg/IntegerListPreference.java95
-rw-r--r--src/org/thialfihar/android/apg/KeyListActivity.java13
-rw-r--r--src/org/thialfihar/android/apg/MainActivity.java7
-rw-r--r--src/org/thialfihar/android/apg/Preferences.java106
-rw-r--r--src/org/thialfihar/android/apg/PreferencesActivity.java287
7 files changed, 343 insertions, 285 deletions
diff --git a/src/org/thialfihar/android/apg/BaseActivity.java b/src/org/thialfihar/android/apg/BaseActivity.java
index 9cddc03f1..7fd8752b7 100644
--- a/src/org/thialfihar/android/apg/BaseActivity.java
+++ b/src/org/thialfihar/android/apg/BaseActivity.java
@@ -18,9 +18,6 @@ package org.thialfihar.android.apg;
import java.io.File;
-import org.bouncycastle2.bcpg.HashAlgorithmTags;
-import org.bouncycastle2.openpgp.PGPEncryptedData;
-
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -28,7 +25,6 @@ import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
@@ -49,7 +45,8 @@ public class BaseActivity extends Activity
private long mSecretKeyId = 0;
private String mDeleteFile = null;
- protected static SharedPreferences mPreferences = null;
+
+ protected Preferences mPreferences;
private Handler mHandler = new Handler() {
@Override
@@ -62,11 +59,9 @@ public class BaseActivity extends Activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- Apg.initialize(this);
+ mPreferences = Preferences.getPreferences(this);
- if (mPreferences == null) {
- mPreferences = getPreferences(MODE_PRIVATE);
- }
+ Apg.initialize(this);
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File dir = new File(Constants.path.app_dir);
@@ -76,9 +71,13 @@ public class BaseActivity extends Activity
}
}
- Intent intent = new Intent(this, Service.class);
- intent.putExtra(Service.EXTRA_TTL, getPassPhraseCacheTtl());
- startService(intent);
+ startCacheService(this, mPreferences);
+ }
+
+ public static void startCacheService(Activity activity, Preferences preferences) {
+ Intent intent = new Intent(activity, Service.class);
+ intent.putExtra(Service.EXTRA_TTL, preferences.getPassPhraseCacheTtl());
+ activity.startService(intent);
}
@Override
@@ -372,92 +371,6 @@ public class BaseActivity extends Activity
return mSecretKeyId;
}
- public int getPassPhraseCacheTtl() {
- int ttl = mPreferences.getInt(Constants.pref.pass_phrase_cache_ttl, 180);
- // fix the value if it was set to "never" in previous versions, which currently is not
- // supported
- if (ttl == 0) {
- ttl = 180;
- setPassPhraseCacheTtl(ttl);
- }
- return ttl;
- }
-
- public void setPassPhraseCacheTtl(int value) {
- SharedPreferences.Editor editor = mPreferences.edit();
- editor.putInt(Constants.pref.pass_phrase_cache_ttl, value);
- editor.commit();
-
- Intent intent = new Intent(this, Service.class);
- intent.putExtra(Service.EXTRA_TTL, value);
- startService(intent);
- }
-
- public int getDefaultEncryptionAlgorithm() {
- return mPreferences.getInt(Constants.pref.default_encryption_algorithm,
- PGPEncryptedData.AES_256);
- }
-
- public void setDefaultEncryptionAlgorithm(int value) {
- SharedPreferences.Editor editor = mPreferences.edit();
- editor.putInt(Constants.pref.default_encryption_algorithm, value);
- editor.commit();
- }
-
- public int getDefaultHashAlgorithm() {
- return mPreferences.getInt(Constants.pref.default_hash_algorithm,
- HashAlgorithmTags.SHA256);
- }
-
- public void setDefaultHashAlgorithm(int value) {
- SharedPreferences.Editor editor = mPreferences.edit();
- editor.putInt(Constants.pref.default_hash_algorithm, value);
- editor.commit();
- }
-
- public int getDefaultMessageCompression() {
- return mPreferences.getInt(Constants.pref.default_message_compression,
- Id.choice.compression.zlib);
- }
-
- public void setDefaultMessageCompression(int value) {
- SharedPreferences.Editor editor = mPreferences.edit();
- editor.putInt(Constants.pref.default_message_compression, value);
- editor.commit();
- }
-
- public int getDefaultFileCompression() {
- return mPreferences.getInt(Constants.pref.default_file_compression,
- Id.choice.compression.none);
- }
-
- public void setDefaultFileCompression(int value) {
- SharedPreferences.Editor editor = mPreferences.edit();
- editor.putInt(Constants.pref.default_file_compression, value);
- editor.commit();
- }
-
- public boolean getDefaultAsciiArmour() {
- return mPreferences.getBoolean(Constants.pref.default_ascii_armour, false);
- }
-
- public void setDefaultAsciiArmour(boolean value) {
- SharedPreferences.Editor editor = mPreferences.edit();
- editor.putBoolean(Constants.pref.default_ascii_armour, value);
- editor.commit();
- }
-
- public boolean hasSeenChangeLog() {
- return mPreferences.getBoolean(Constants.pref.has_seen_change_log + Apg.getVersion(this),
- false);
- }
-
- public void setHasSeenChangeLog(boolean value) {
- SharedPreferences.Editor editor = mPreferences.edit();
- editor.putBoolean(Constants.pref.has_seen_change_log + Apg.getVersion(this), value);
- editor.commit();
- }
-
protected void setDeleteFile(String deleteFile) {
mDeleteFile = deleteFile;
}
diff --git a/src/org/thialfihar/android/apg/EncryptActivity.java b/src/org/thialfihar/android/apg/EncryptActivity.java
index 2c095ecbf..e0a38f061 100644
--- a/src/org/thialfihar/android/apg/EncryptActivity.java
+++ b/src/org/thialfihar/android/apg/EncryptActivity.java
@@ -213,7 +213,7 @@ public class EncryptActivity extends BaseActivity {
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mFileCompression.setAdapter(adapter);
- int defaultFileCompression = getDefaultFileCompression();
+ int defaultFileCompression = mPreferences.getDefaultFileCompression();
for (int i = 0; i < choices.length; ++i) {
if (choices[i].getId() == defaultFileCompression) {
mFileCompression.setSelection(i);
@@ -224,7 +224,7 @@ public class EncryptActivity extends BaseActivity {
mDeleteAfter = (CheckBox) findViewById(R.id.deleteAfterEncryption);
mAsciiArmour = (CheckBox) findViewById(R.id.asciiArmour);
- mAsciiArmour.setChecked(getDefaultAsciiArmour());
+ mAsciiArmour.setChecked(mPreferences.getDefaultAsciiArmour());
mAsciiArmour.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
@@ -607,18 +607,19 @@ public class EncryptActivity extends BaseActivity {
size = byteData.length;
useAsciiArmour = true;
- compressionId = getDefaultMessageCompression();
+ compressionId = mPreferences.getDefaultMessageCompression();
}
if (signOnly) {
Apg.signText(this, in, out, getSecretKeyId(),
Apg.getCachedPassPhrase(getSecretKeyId()),
- getDefaultHashAlgorithm(), this);
+ mPreferences.getDefaultHashAlgorithm(), this);
} else {
Apg.encrypt(this, in, out, size, useAsciiArmour,
encryptionKeyIds, signatureKeyId,
Apg.getCachedPassPhrase(signatureKeyId), this,
- getDefaultEncryptionAlgorithm(), getDefaultHashAlgorithm(),
+ mPreferences.getDefaultEncryptionAlgorithm(),
+ mPreferences.getDefaultHashAlgorithm(),
compressionId, passPhrase);
}
diff --git a/src/org/thialfihar/android/apg/IntegerListPreference.java b/src/org/thialfihar/android/apg/IntegerListPreference.java
new file mode 100644
index 000000000..26a58afd5
--- /dev/null
+++ b/src/org/thialfihar/android/apg/IntegerListPreference.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package org.thialfihar.android.apg;
+
+import android.content.Context;
+import android.preference.ListPreference;
+import android.util.AttributeSet;
+
+/**
+ * A list preference which persists its values as integers instead of strings.
+ * Code reading the values should use
+ * {@link android.content.SharedPreferences#getInt}.
+ * When using XML-declared arrays for entry values, the arrays should be regular
+ * string arrays containing valid integer values.
+ *
+ * @author Rodrigo Damazio
+ */
+public class IntegerListPreference extends ListPreference {
+
+ public IntegerListPreference(Context context) {
+ super(context);
+
+ verifyEntryValues(null);
+ }
+
+ public IntegerListPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ verifyEntryValues(null);
+ }
+
+ @Override
+ public void setEntryValues(CharSequence[] entryValues) {
+ CharSequence[] oldValues = getEntryValues();
+ super.setEntryValues(entryValues);
+ verifyEntryValues(oldValues);
+ }
+
+ @Override
+ public void setEntryValues(int entryValuesResId) {
+ CharSequence[] oldValues = getEntryValues();
+ super.setEntryValues(entryValuesResId);
+ verifyEntryValues(oldValues);
+ }
+
+ @Override
+ protected String getPersistedString(String defaultReturnValue) {
+ // During initial load, there's no known default value
+ int defaultIntegerValue = Integer.MIN_VALUE;
+ if (defaultReturnValue != null) {
+ defaultIntegerValue = Integer.parseInt(defaultReturnValue);
+ }
+
+ // When the list preference asks us to read a string, instead read an
+ // integer.
+ int value = getPersistedInt(defaultIntegerValue);
+ return Integer.toString(value);
+ }
+
+ @Override
+ protected boolean persistString(String value) {
+ // When asked to save a string, instead save an integer
+ return persistInt(Integer.parseInt(value));
+ }
+
+ private void verifyEntryValues(CharSequence[] oldValues) {
+ CharSequence[] entryValues = getEntryValues();
+ if (entryValues == null) {
+ return;
+ }
+
+ for (CharSequence entryValue : entryValues) {
+ try {
+ Integer.parseInt(entryValue.toString());
+ } catch (NumberFormatException nfe) {
+ super.setEntryValues(oldValues);
+ throw nfe;
+ }
+ }
+ }
+}
diff --git a/src/org/thialfihar/android/apg/KeyListActivity.java b/src/org/thialfihar/android/apg/KeyListActivity.java
index c9880e8fe..ac861f0ac 100644
--- a/src/org/thialfihar/android/apg/KeyListActivity.java
+++ b/src/org/thialfihar/android/apg/KeyListActivity.java
@@ -510,19 +510,6 @@ public class KeyListActivity extends BaseActivity {
qb.appendWhere(")");
}
-<<<<<<< HEAD
- String query = qb.buildQuery(new String[] {
- KeyRings.TABLE_NAME + "." + KeyRings._ID, // 0
- KeyRings.TABLE_NAME + "." + KeyRings.MASTER_KEY_ID, // 1
- UserIds.TABLE_NAME + "." + UserIds.USER_ID, // 2
- },
- KeyRings.TABLE_NAME + "." + KeyRings.TYPE + " = ?",
- new String[] { "" + (mKeyType == Id.type.public_key ?
- Id.database.type_public : Id.database.type_secret) },
- null, null, UserIds.TABLE_NAME + "." + UserIds.USER_ID + " ASC", null);
-
-=======
->>>>>>> 1.0.x
mCursor = qb.query(mDatabase,
new String[] {
KeyRings.TABLE_NAME + "." + KeyRings._ID, // 0
diff --git a/src/org/thialfihar/android/apg/MainActivity.java b/src/org/thialfihar/android/apg/MainActivity.java
index aa3900998..7ba0e912b 100644
--- a/src/org/thialfihar/android/apg/MainActivity.java
+++ b/src/org/thialfihar/android/apg/MainActivity.java
@@ -117,7 +117,7 @@ public class MainActivity extends BaseActivity {
});
registerForContextMenu(mAccounts);
- if (!hasSeenChangeLog()) {
+ if (!mPreferences.hasSeenChangeLog(Apg.getVersion(this))) {
showDialog(Id.dialog.change_log);
}
}
@@ -216,9 +216,10 @@ public class MainActivity extends BaseActivity {
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainActivity.this.removeDialog(Id.dialog.change_log);
- setHasSeenChangeLog(true);
+ mPreferences.setHasSeenChangeLog(
+ Apg.getVersion(MainActivity.this), true);
}
- });
+ });
return alert.create();
}
diff --git a/src/org/thialfihar/android/apg/Preferences.java b/src/org/thialfihar/android/apg/Preferences.java
new file mode 100644
index 000000000..50489dc89
--- /dev/null
+++ b/src/org/thialfihar/android/apg/Preferences.java
@@ -0,0 +1,106 @@
+package org.thialfihar.android.apg;
+
+import org.bouncycastle2.bcpg.HashAlgorithmTags;
+import org.bouncycastle2.openpgp.PGPEncryptedData;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+public class Preferences {
+ private static Preferences mPreferences;
+ private SharedPreferences mSharedPreferences;
+
+ public static synchronized Preferences getPreferences(Context context)
+ {
+ if (mPreferences == null) {
+ mPreferences = new Preferences(context);
+ }
+ return mPreferences;
+ }
+
+ private Preferences(Context context)
+ {
+ mSharedPreferences = context.getSharedPreferences("APG.main", Context.MODE_PRIVATE);
+ }
+
+ public int getPassPhraseCacheTtl() {
+ int ttl = mSharedPreferences.getInt(Constants.pref.pass_phrase_cache_ttl, 180);
+ // fix the value if it was set to "never" in previous versions, which currently is not
+ // supported
+ if (ttl == 0) {
+ ttl = 180;
+ }
+ return ttl;
+ }
+
+ public void setPassPhraseCacheTtl(int value) {
+ SharedPreferences.Editor editor = mSharedPreferences.edit();
+ editor.putInt(Constants.pref.pass_phrase_cache_ttl, value);
+ editor.commit();
+ }
+
+ public int getDefaultEncryptionAlgorithm() {
+ return mSharedPreferences.getInt(Constants.pref.default_encryption_algorithm,
+ PGPEncryptedData.AES_256);
+ }
+
+ public void setDefaultEncryptionAlgorithm(int value) {
+ SharedPreferences.Editor editor = mSharedPreferences.edit();
+ editor.putInt(Constants.pref.default_encryption_algorithm, value);
+ editor.commit();
+ }
+
+ public int getDefaultHashAlgorithm() {
+ return mSharedPreferences.getInt(Constants.pref.default_hash_algorithm,
+ HashAlgorithmTags.SHA256);
+ }
+
+ public void setDefaultHashAlgorithm(int value) {
+ SharedPreferences.Editor editor = mSharedPreferences.edit();
+ editor.putInt(Constants.pref.default_hash_algorithm, value);
+ editor.commit();
+ }
+
+ public int getDefaultMessageCompression() {
+ return mSharedPreferences.getInt(Constants.pref.default_message_compression,
+ Id.choice.compression.zlib);
+ }
+
+ public void setDefaultMessageCompression(int value) {
+ SharedPreferences.Editor editor = mSharedPreferences.edit();
+ editor.putInt(Constants.pref.default_message_compression, value);
+ editor.commit();
+ }
+
+ public int getDefaultFileCompression() {
+ return mSharedPreferences.getInt(Constants.pref.default_file_compression,
+ Id.choice.compression.none);
+ }
+
+ public void setDefaultFileCompression(int value) {
+ SharedPreferences.Editor editor = mSharedPreferences.edit();
+ editor.putInt(Constants.pref.default_file_compression, value);
+ editor.commit();
+ }
+
+ public boolean getDefaultAsciiArmour() {
+ return mSharedPreferences.getBoolean(Constants.pref.default_ascii_armour, false);
+ }
+
+ public void setDefaultAsciiArmour(boolean value) {
+ SharedPreferences.Editor editor = mSharedPreferences.edit();
+ editor.putBoolean(Constants.pref.default_ascii_armour, value);
+ editor.commit();
+ }
+
+ public boolean hasSeenChangeLog(String version) {
+ return mSharedPreferences.getBoolean(Constants.pref.has_seen_change_log + version,
+ false);
+ }
+
+ public void setHasSeenChangeLog(String version, boolean value) {
+ SharedPreferences.Editor editor = mSharedPreferences.edit();
+ editor.putBoolean(Constants.pref.has_seen_change_log + version, value);
+ editor.commit();
+ }
+}
diff --git a/src/org/thialfihar/android/apg/PreferencesActivity.java b/src/org/thialfihar/android/apg/PreferencesActivity.java
index e80e1ad5f..3f3a709a9 100644
--- a/src/org/thialfihar/android/apg/PreferencesActivity.java
+++ b/src/org/thialfihar/android/apg/PreferencesActivity.java
@@ -18,202 +18,157 @@ 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.view.View;
-import android.view.View.OnClickListener;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.CheckBox;
-import android.widget.Spinner;
-import android.widget.AdapterView.OnItemSelectedListener;
-
-public class PreferencesActivity extends BaseActivity {
- private Spinner mPassPhraseCacheTtl = null;
- private Spinner mEncryptionAlgorithm = null;
- private Spinner mHashAlgorithm = null;
- private Spinner mMessageCompression = null;
- private Spinner mFileCompression = null;
- private CheckBox mAsciiArmour = null;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+
+public class PreferencesActivity extends PreferenceActivity {
+ private IntegerListPreference mPassPhraseCacheTtl = null;
+ private IntegerListPreference mEncryptionAlgorithm = null;
+ private IntegerListPreference mHashAlgorithm = null;
+ private IntegerListPreference mMessageCompression = null;
+ private IntegerListPreference mFileCompression = null;
+ private CheckBoxPreference mAsciiArmour = null;
+ private Preferences mPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.preferences);
-
- mPassPhraseCacheTtl = (Spinner) findViewById(R.id.passPhraseCacheTtl);
-
- Choice choices[] = {
- new Choice(15, getString(R.string.choice_15secs)),
- new Choice(60, getString(R.string.choice_1min)),
- new Choice(180, getString(R.string.choice_3mins)),
- new Choice(300, getString(R.string.choice_5mins)),
- new Choice(600, getString(R.string.choice_10mins)),
- };
- ArrayAdapter<Choice> adapter =
- new ArrayAdapter<Choice>(this, android.R.layout.simple_spinner_item, choices);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- mPassPhraseCacheTtl.setAdapter(adapter);
- int passPhraseCache = getPassPhraseCacheTtl();
- for (int i = 0; i < choices.length; ++i) {
- if (choices[i].getId() == passPhraseCache) {
- mPassPhraseCacheTtl.setSelection(i);
- break;
- }
- }
+ mPreferences = Preferences.getPreferences(this);
- mPassPhraseCacheTtl.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> adapter, View view, int index, long id) {
- setPassPhraseCacheTtl(((Choice) mPassPhraseCacheTtl.getSelectedItem()).getId());
- }
+ addPreferencesFromResource(R.xml.apg_preferences);
- @Override
- public void onNothingSelected(AdapterView<?> adapter) {
- // nothing to do
+ mPassPhraseCacheTtl = (IntegerListPreference) findPreference(Constants.pref.pass_phrase_cache_ttl);
+ mPassPhraseCacheTtl.setValue("" + mPreferences.getPassPhraseCacheTtl());
+ mPassPhraseCacheTtl.setSummary(mPassPhraseCacheTtl.getEntry());
+ mPassPhraseCacheTtl.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
+ {
+ public boolean onPreferenceChange(Preference preference, Object newValue)
+ {
+ mPassPhraseCacheTtl.setValue(newValue.toString());
+ mPassPhraseCacheTtl.setSummary(mPassPhraseCacheTtl.getEntry());
+ mPreferences.setPassPhraseCacheTtl(Integer.parseInt(newValue.toString()));
+ BaseActivity.startCacheService(PreferencesActivity.this, mPreferences);
+ return false;
}
});
- mEncryptionAlgorithm = (Spinner) findViewById(R.id.encryptionAlgorithm);
- choices = new Choice[] {
- new Choice(PGPEncryptedData.AES_128, "AES 128"),
- new Choice(PGPEncryptedData.AES_192, "AES 192"),
- new Choice(PGPEncryptedData.AES_256, "AES 256"),
- new Choice(PGPEncryptedData.BLOWFISH, "Blowfish"),
- new Choice(PGPEncryptedData.TWOFISH, "Twofish"),
- new Choice(PGPEncryptedData.CAST5, "CAST5"),
- new Choice(PGPEncryptedData.DES, "DES"),
- new Choice(PGPEncryptedData.TRIPLE_DES, "Triple DES"),
- new Choice(PGPEncryptedData.IDEA, "IDEA"),
+ mEncryptionAlgorithm = (IntegerListPreference) findPreference(Constants.pref.default_encryption_algorithm);
+ int valueIds[] = {
+ PGPEncryptedData.AES_128, PGPEncryptedData.AES_192, PGPEncryptedData.AES_256,
+ PGPEncryptedData.BLOWFISH, PGPEncryptedData.TWOFISH, PGPEncryptedData.CAST5,
+ PGPEncryptedData.DES, PGPEncryptedData.TRIPLE_DES, PGPEncryptedData.IDEA,
};
- adapter = new ArrayAdapter<Choice>(this, android.R.layout.simple_spinner_item, choices);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- mEncryptionAlgorithm.setAdapter(adapter);
-
- int defaultEncryptionAlgorithm = getDefaultEncryptionAlgorithm();
- for (int i = 0; i < choices.length; ++i) {
- if (choices[i].getId() == defaultEncryptionAlgorithm) {
- mEncryptionAlgorithm.setSelection(i);
- break;
- }
- }
-
- mEncryptionAlgorithm.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> adapter, View view, int index, long id) {
- setDefaultEncryptionAlgorithm(((Choice) mEncryptionAlgorithm.getSelectedItem()).getId());
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> adapter) {
- // nothing to do
- }
- });
-
- mHashAlgorithm = (Spinner) findViewById(R.id.hashAlgorithm);
- choices = new Choice[] {
- new Choice(HashAlgorithmTags.MD5, "MD5"),
- new Choice(HashAlgorithmTags.RIPEMD160, "RIPEMD160"),
- new Choice(HashAlgorithmTags.SHA1, "SHA1"),
- new Choice(HashAlgorithmTags.SHA224, "SHA224"),
- new Choice(HashAlgorithmTags.SHA256, "SHA256"),
- new Choice(HashAlgorithmTags.SHA384, "SHA384"),
- new Choice(HashAlgorithmTags.SHA512, "SHA512"),
+ String entries[] = {
+ "AES-128", "AES-192", "AES-256",
+ "Blowfish", "Twofish", "CAST5",
+ "DES", "Triple DES", "IDEA",
};
- adapter = new ArrayAdapter<Choice>(this, android.R.layout.simple_spinner_item, choices);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- mHashAlgorithm.setAdapter(adapter);
-
- int defaultHashAlgorithm = getDefaultHashAlgorithm();
- for (int i = 0; i < choices.length; ++i) {
- if (choices[i].getId() == defaultHashAlgorithm) {
- mHashAlgorithm.setSelection(i);
- break;
- }
+ String values[] = new String[valueIds.length];
+ for (int i = 0; i < values.length; ++i) {
+ values[i] = "" + valueIds[i];
}
-
- mHashAlgorithm.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> adapter, View view, int index, long id) {
- setDefaultHashAlgorithm(((Choice) mHashAlgorithm.getSelectedItem()).getId());
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> adapter) {
- // nothing to do
+ mEncryptionAlgorithm.setEntries(entries);
+ mEncryptionAlgorithm.setEntryValues(values);
+ mEncryptionAlgorithm.setValue("" + mPreferences.getDefaultEncryptionAlgorithm());
+ mEncryptionAlgorithm.setSummary(mEncryptionAlgorithm.getEntry());
+ mEncryptionAlgorithm.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
+ {
+ public boolean onPreferenceChange(Preference preference, Object newValue)
+ {
+ mEncryptionAlgorithm.setValue(newValue.toString());
+ mEncryptionAlgorithm.setSummary(mEncryptionAlgorithm.getEntry());
+ mPreferences.setDefaultEncryptionAlgorithm(Integer.parseInt(newValue.toString()));
+ return false;
}
});
- mMessageCompression = (Spinner) findViewById(R.id.messageCompression);
- 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"),
+ mHashAlgorithm = (IntegerListPreference) findPreference(Constants.pref.default_hash_algorithm);
+ valueIds = new int[] {
+ HashAlgorithmTags.MD5, HashAlgorithmTags.RIPEMD160, HashAlgorithmTags.SHA1,
+ HashAlgorithmTags.SHA224, HashAlgorithmTags.SHA256, HashAlgorithmTags.SHA384,
+ HashAlgorithmTags.SHA512,
};
- adapter = new ArrayAdapter<Choice>(this, android.R.layout.simple_spinner_item, choices);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- mMessageCompression.setAdapter(adapter);
-
- int defaultMessageCompression = getDefaultMessageCompression();
- for (int i = 0; i < choices.length; ++i) {
- if (choices[i].getId() == defaultMessageCompression) {
- mMessageCompression.setSelection(i);
- break;
- }
+ entries = new String[] {
+ "MD5", "RIPEMD-160", "SHA-1",
+ "SHA-224", "SHA-256", "SHA-384",
+ "SHA-512",
+ };
+ values = new String[valueIds.length];
+ for (int i = 0; i < values.length; ++i) {
+ values[i] = "" + valueIds[i];
}
-
- mMessageCompression.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> adapter, View view, int index, long id) {
- setDefaultMessageCompression(((Choice) mMessageCompression.getSelectedItem()).getId());
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> adapter) {
- // nothing to do
+ mHashAlgorithm.setEntries(entries);
+ mHashAlgorithm.setEntryValues(values);
+ mHashAlgorithm.setValue("" + mPreferences.getDefaultHashAlgorithm());
+ mHashAlgorithm.setSummary(mHashAlgorithm.getEntry());
+ mHashAlgorithm.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
+ {
+ public boolean onPreferenceChange(Preference preference, Object newValue)
+ {
+ mHashAlgorithm.setValue(newValue.toString());
+ mHashAlgorithm.setSummary(mHashAlgorithm.getEntry());
+ mPreferences.setDefaultHashAlgorithm(Integer.parseInt(newValue.toString()));
+ return false;
}
});
- mFileCompression = (Spinner) findViewById(R.id.fileCompression);
- 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"),
+ 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,
};
- adapter = new ArrayAdapter<Choice>(this, android.R.layout.simple_spinner_item, choices);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- mFileCompression.setAdapter(adapter);
-
- int defaultFileCompression = getDefaultFileCompression();
- for (int i = 0; i < choices.length; ++i) {
- if (choices[i].getId() == defaultFileCompression) {
- mFileCompression.setSelection(i);
- break;
- }
+ entries = new String[] {
+ getString(R.string.choice_none), "ZIP",
+ "BZIP2", "ZLIB",
+ };
+ values = new String[valueIds.length];
+ for (int i = 0; i < values.length; ++i) {
+ values[i] = "" + valueIds[i];
}
-
- mFileCompression.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> adapter, View view, int index, long id) {
- setDefaultFileCompression(((Choice) mFileCompression.getSelectedItem()).getId());
+ mMessageCompression.setEntries(entries);
+ mMessageCompression.setEntryValues(values);
+ mMessageCompression.setValue("" + mPreferences.getDefaultMessageCompression());
+ mMessageCompression.setSummary(mMessageCompression.getEntry());
+ mMessageCompression.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
+ {
+ public boolean onPreferenceChange(Preference preference, Object newValue)
+ {
+ mMessageCompression.setValue(newValue.toString());
+ mMessageCompression.setSummary(mMessageCompression.getEntry());
+ mPreferences.setDefaultMessageCompression(Integer.parseInt(newValue.toString()));
+ return false;
}
+ });
- @Override
- public void onNothingSelected(AdapterView<?> adapter) {
- // nothing to do
+ mFileCompression = (IntegerListPreference) findPreference(Constants.pref.default_file_compression);
+ mFileCompression.setEntries(entries);
+ mFileCompression.setEntryValues(values);
+ mFileCompression.setValue("" + mPreferences.getDefaultFileCompression());
+ mFileCompression.setSummary(mFileCompression.getEntry());
+ mFileCompression.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
+ {
+ public boolean onPreferenceChange(Preference preference, Object newValue)
+ {
+ mFileCompression.setValue(newValue.toString());
+ mFileCompression.setSummary(mFileCompression.getEntry());
+ mPreferences.setDefaultFileCompression(Integer.parseInt(newValue.toString()));
+ return false;
}
});
- mAsciiArmour = (CheckBox) findViewById(R.id.asciiArmour);
- mAsciiArmour.setChecked(getDefaultAsciiArmour());
- mAsciiArmour.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- setDefaultAsciiArmour(mAsciiArmour.isChecked());
+ mAsciiArmour = (CheckBoxPreference) findPreference(Constants.pref.default_ascii_armour);
+ mAsciiArmour.setChecked(mPreferences.getDefaultAsciiArmour());
+ mAsciiArmour.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
+ {
+ public boolean onPreferenceChange(Preference preference, Object newValue)
+ {
+ mAsciiArmour.setChecked((Boolean)newValue);
+ mPreferences.setDefaultAsciiArmour((Boolean)newValue);
+ return false;
}
});
}