added a language setting to change the language directly

This commit is contained in:
Thialfihar
2010-07-18 07:19:57 +00:00
parent c3600ee679
commit a34adb09a4
8 changed files with 244 additions and 3 deletions

View File

@@ -17,6 +17,7 @@
package org.thialfihar.android.apg;
import java.io.File;
import java.util.Locale;
import android.app.Activity;
import android.app.AlertDialog;
@@ -25,6 +26,7 @@ import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
@@ -60,6 +62,7 @@ public class BaseActivity extends Activity
super.onCreate(savedInstanceState);
mPreferences = Preferences.getPreferences(this);
setLanguage(this, mPreferences.getLanguage());
Apg.initialize(this);
@@ -378,4 +381,21 @@ public class BaseActivity extends Activity
protected String getDeleteFile() {
return mDeleteFile;
}
public static void setLanguage(Context context, String language)
{
Locale locale;
if (language == null || language.equals(""))
{
locale = Locale.getDefault();
}
else
{
locale = new Locale(language);
}
Configuration config = new Configuration();
config.locale = locale;
context.getResources().updateConfiguration(config,
context.getResources().getDisplayMetrics());
}
}

View File

@@ -31,5 +31,6 @@ public final class Constants {
public static final String default_message_compression = "defaultMessageCompression";
public static final String default_file_compression = "defaultFileCompression";
public static final String pass_phrase_cache_ttl = "passPhraseCacheTtl";
public static final String language = "language";
}
}

View File

@@ -80,6 +80,9 @@ public class MailListActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
Preferences prefs = Preferences.getPreferences(this);
BaseActivity.setLanguage(this, prefs.getLanguage());
super.onCreate(savedInstanceState);
mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View File

@@ -23,6 +23,16 @@ public class Preferences {
mSharedPreferences = context.getSharedPreferences("APG.main", Context.MODE_PRIVATE);
}
public String getLanguage() {
return mSharedPreferences.getString(Constants.pref.language, "");
}
public void setLanguage(String value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.putString(Constants.pref.language, value);
editor.commit();
}
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

View File

@@ -16,15 +16,21 @@
package org.thialfihar.android.apg;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Vector;
import org.bouncycastle2.bcpg.HashAlgorithmTags;
import org.bouncycastle2.openpgp.PGPEncryptedData;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
public class PreferencesActivity extends PreferenceActivity {
private ListPreference mLanguage = null;
private IntegerListPreference mPassPhraseCacheTtl = null;
private IntegerListPreference mEncryptionAlgorithm = null;
private IntegerListPreference mHashAlgorithm = null;
@@ -35,12 +41,41 @@ public class PreferencesActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
mPreferences = Preferences.getPreferences(this);
BaseActivity.setLanguage(this, mPreferences.getLanguage());
super.onCreate(savedInstanceState);
mPreferences = Preferences.getPreferences(this);
addPreferencesFromResource(R.xml.apg_preferences);
mLanguage = (ListPreference) findPreference(Constants.pref.language);
Vector<CharSequence> entryVector = new Vector<CharSequence>(Arrays.asList(mLanguage.getEntries()));
Vector<CharSequence> entryValueVector = new Vector<CharSequence>(Arrays.asList(mLanguage.getEntryValues()));
String supportedLanguages[] = getResources().getStringArray(R.array.supported_languages);
HashSet<String> supportedLanguageSet = new HashSet<String>(Arrays.asList(supportedLanguages));
for (int i = entryVector.size() - 1; i > -1; --i)
{
if (!supportedLanguageSet.contains(entryValueVector.get(i)))
{
entryVector.remove(i);
entryValueVector.remove(i);
}
}
CharSequence dummy[] = new CharSequence[0];
mLanguage.setEntries(entryVector.toArray(dummy));
mLanguage.setEntryValues(entryValueVector.toArray(dummy));
mLanguage.setValue(mPreferences.getLanguage());
mLanguage.setSummary(mLanguage.getEntry());
mLanguage.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
{
public boolean onPreferenceChange(Preference preference, Object newValue)
{
mLanguage.setValue(newValue.toString());
mLanguage.setSummary(mLanguage.getEntry());
mPreferences.setLanguage(newValue.toString());
return false;
}
});
mPassPhraseCacheTtl = (IntegerListPreference) findPreference(Constants.pref.pass_phrase_cache_ttl);
mPassPhraseCacheTtl.setValue("" + mPreferences.getPassPhraseCacheTtl());
mPassPhraseCacheTtl.setSummary(mPassPhraseCacheTtl.getEntry());