aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThialfihar <thialfihar@gmail.com>2010-06-17 13:23:07 +0000
committerThialfihar <thialfihar@gmail.com>2010-06-17 13:23:07 +0000
commit1bad192a91364fe48ae38ddcf6fb436a40a82283 (patch)
tree1549299e50016a793bf6d57c5a21add8a3ee3869 /src
parent865c998abdf96f8b97e6bb444b732fa18fc02671 (diff)
downloadopen-keychain-1bad192a91364fe48ae38ddcf6fb436a40a82283.tar.gz
open-keychain-1bad192a91364fe48ae38ddcf6fb436a40a82283.tar.bz2
open-keychain-1bad192a91364fe48ae38ddcf6fb436a40a82283.zip
using proper PreferenceActivity now, tho the underlying storage of the values remained almost the same, some changes how the preferences are accessed and how the cache service is started
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;
}
});
}