X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FPreferenceActivity.java;h=add2141e05da764b5b7502ed60403f49f2310796;hb=83d497f704ad1f8ba85190255d46a3fbe0e3c353;hp=8b1e2f773a955add5a847707a33e08d3df0a1412;hpb=3d72bc11d5ef9d58e62b5beb4e33a437da28d4b8;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/PreferenceActivity.java b/src/com/hughes/android/dictionary/PreferenceActivity.java index 8b1e2f7..add2141 100644 --- a/src/com/hughes/android/dictionary/PreferenceActivity.java +++ b/src/com/hughes/android/dictionary/PreferenceActivity.java @@ -14,19 +14,36 @@ package com.hughes.android.dictionary; -import java.util.List; - +import android.app.AlertDialog; +import android.content.SharedPreferences; import android.os.Bundle; +import android.os.Build; +import android.os.Environment; import android.preference.ListPreference; +import android.preference.PreferenceManager; -public class PreferenceActivity extends android.preference.PreferenceActivity { +import java.io.File; +import java.util.List; + +public class PreferenceActivity extends android.preference.PreferenceActivity + implements SharedPreferences.OnSharedPreferenceChangeListener { static boolean prefsMightHaveChanged = false; @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { - setTheme(((DictionaryApplication) getApplication()).getSelectedTheme().themeId); + DictionaryApplication.INSTANCE.init(getApplicationContext()); + final DictionaryApplication application = DictionaryApplication.INSTANCE; + setTheme(application.getSelectedTheme().themeId); + + final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + if (prefs.getString(getString(R.string.quickdicDirectoryKey), "").equals("")) { + prefs.edit().putString(getString(R.string.quickdicDirectoryKey), application.getDictDir().getAbsolutePath()).commit(); + } + if (prefs.getString(getString(R.string.wordListFileKey), "").equals("")) { + prefs.edit().putString(getString(R.string.wordListFileKey), application.getWordListFile().getAbsolutePath()).commit(); + } /** * @author Dominik Köppl Preference: select default dictionary As this @@ -36,15 +53,13 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); ListPreference defaultDic = (ListPreference) findPreference(getResources().getString( - R.string.defaultDicKey)); - DictionaryApplication application = (DictionaryApplication) getApplication(); + R.string.defaultDicKey)); List dicts = application.getDictionariesOnDevice(null); final CharSequence[] entries = new CharSequence[dicts.size()]; final CharSequence[] entryvalues = new CharSequence[dicts.size()]; - for (int i = 0; i < entries.length; ++i) - { + for (int i = 0; i < entries.length; ++i) { entries[i] = dicts.get(i).dictInfo; entryvalues[i] = dicts.get(i).uncompressedFilename; } @@ -53,8 +68,60 @@ public class PreferenceActivity extends android.preference.PreferenceActivity { defaultDic.setEntryValues(entryvalues); } + @Override + protected void onPause() { + super.onPause(); + final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + prefs.unregisterOnSharedPreferenceChangeListener(this); + } + + @Override + protected void onResume() { + super.onResume(); + final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + prefs.registerOnSharedPreferenceChangeListener(this); + } + @Override public void onContentChanged() { super.onContentChanged(); } + + @Override + public void onSharedPreferenceChanged(SharedPreferences p, String v) { + DictionaryApplication.INSTANCE.init(getApplicationContext()); + final DictionaryApplication application = DictionaryApplication.INSTANCE; + File dictDir = application.getDictDir(); + if (!dictDir.isDirectory() || !dictDir.canWrite() || + !DictionaryApplication.checkFileCreate(dictDir)) { + String dirs = ""; + String externalDir = Environment.getExternalStorageDirectory().getAbsolutePath(); + if (new File(externalDir).canWrite()) + dirs += "\n" + externalDir + "/quickDic"; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + File[] files = getApplicationContext().getExternalFilesDirs(null); + for (File f : files) { + if (f.canWrite()) + dirs += "\n" + f.getAbsolutePath(); + } + } else { + File efd = null; + try { + efd = getApplicationContext().getExternalFilesDir(null); + } catch (Exception e) { + } + if (efd != null) { + String externalFilesDir = efd.getAbsolutePath(); + if (new File(externalFilesDir).canWrite()) + dirs += "\n" + externalFilesDir; + } + } + File fd = getApplicationContext().getFilesDir(); + if (fd.canWrite()) + dirs += "\n" + fd.getAbsolutePath(); + new AlertDialog.Builder(this).setTitle(getString(R.string.error)) + .setMessage(getString(R.string.chosenNotWritable) + dirs) + .setNeutralButton("Close", null).show(); + } + } }