X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FPreferenceActivity.java;h=c4197e2734113cc3ad115085a733a47eb7fd37b0;hp=cda9a80cd411593ebde602c7e85ba177faee2b1c;hb=c76660b2772122109529d3616289980a7084eeeb;hpb=3ce0dd16e69302365d3bc802f298a5388b293d86 diff --git a/src/com/hughes/android/dictionary/PreferenceActivity.java b/src/com/hughes/android/dictionary/PreferenceActivity.java index cda9a80..c4197e2 100644 --- a/src/com/hughes/android/dictionary/PreferenceActivity.java +++ b/src/com/hughes/android/dictionary/PreferenceActivity.java @@ -19,13 +19,14 @@ import android.content.SharedPreferences; import android.os.Bundle; import android.os.Build; import android.os.Environment; -import android.preference.ListPreference; -import android.preference.PreferenceManager; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.preference.PreferenceManager; +import android.support.v7.preference.ListPreference; import java.io.File; import java.util.List; -public class PreferenceActivity extends android.preference.PreferenceActivity +public class PreferenceActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener { static boolean prefsMightHaveChanged = false; @@ -51,21 +52,7 @@ public class PreferenceActivity extends android.preference.PreferenceActivity * fashion */ super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.preferences); - ListPreference defaultDic = (ListPreference) findPreference(getResources().getString( - 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) { - entries[i] = dicts.get(i).dictInfo; - entryvalues[i] = dicts.get(i).uncompressedFilename; - } - - defaultDic.setEntries(entries); - defaultDic.setEntryValues(entryvalues); + setContentView(R.layout.preference_activity); } @Override @@ -82,6 +69,35 @@ public class PreferenceActivity extends android.preference.PreferenceActivity prefs.registerOnSharedPreferenceChangeListener(this); } + private String suggestedPaths(String suffix) { + String dirs = ""; + String externalDir = Environment.getExternalStorageDirectory().getAbsolutePath(); + if (new File(externalDir).canWrite()) + dirs += "\n" + externalDir + "/quickDic" + suffix; + 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() + suffix; + } + } else { + File efd = null; + try { + efd = getApplicationContext().getExternalFilesDir(null); + } catch (Exception ignored) { + } + if (efd != null) { + String externalFilesDir = efd.getAbsolutePath(); + if (new File(externalFilesDir).canWrite()) + dirs += "\n" + externalFilesDir + suffix; + } + } + File fd = getApplicationContext().getFilesDir(); + if (fd.canWrite()) + dirs += "\n" + fd.getAbsolutePath() + suffix; + return dirs; + } + @Override public void onSharedPreferenceChanged(SharedPreferences p, String v) { DictionaryApplication.INSTANCE.init(getApplicationContext()); @@ -89,31 +105,19 @@ public class PreferenceActivity extends android.preference.PreferenceActivity 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 ignored) { - } - 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(); + String dirs = suggestedPaths(""); + new AlertDialog.Builder(this).setTitle(getString(R.string.error)) + .setMessage(getString(R.string.chosenNotWritable) + dirs) + .setNeutralButton("Close", null).show(); + } + File wordlist = application.getWordListFile(); + boolean ok = false; + try { + ok = wordlist.canWrite() || wordlist.createNewFile(); + } catch (Exception ignored) { + } + if (!ok) { + String dirs = suggestedPaths("/wordList.txt"); new AlertDialog.Builder(this).setTitle(getString(R.string.error)) .setMessage(getString(R.string.chosenNotWritable) + dirs) .setNeutralButton("Close", null).show();