From 1bad192a91364fe48ae38ddcf6fb436a40a82283 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Thu, 17 Jun 2010 13:23:07 +0000 Subject: 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 --- .../android/apg/PreferencesActivity.java | 287 +++++++++------------ 1 file changed, 121 insertions(+), 166 deletions(-) (limited to 'src/org/thialfihar/android/apg/PreferencesActivity.java') 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 adapter = - new ArrayAdapter(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(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(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(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(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; } }); } -- cgit v1.2.3