X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FPreferenceActivity.java;h=c4197e2734113cc3ad115085a733a47eb7fd37b0;hp=b933382408038e1d517d300ee20b93991939b5c3;hb=c76660b2772122109529d3616289980a7084eeeb;hpb=cbcff0e7ca442adc1064f60b56ff2e551243576f diff --git a/src/com/hughes/android/dictionary/PreferenceActivity.java b/src/com/hughes/android/dictionary/PreferenceActivity.java index b933382..c4197e2 100644 --- a/src/com/hughes/android/dictionary/PreferenceActivity.java +++ b/src/com/hughes/android/dictionary/PreferenceActivity.java @@ -1,36 +1,126 @@ -// Copyright 2011 Google Inc. All Rights Reserved. -// -// 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 com.hughes.android.dictionary; - -import android.os.Bundle; - -public class PreferenceActivity extends android.preference.PreferenceActivity { - - static boolean prefsMightHaveChanged = false; - - @Override - public void onCreate(Bundle savedInstanceState) { - setTheme(((DictionaryApplication)getApplication()).getSelectedTheme().themeId); - - super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.preferences); - } - - @Override - public void onContentChanged() { - super.onContentChanged(); - } - -} +// Copyright 2011 Google Inc. All Rights Reserved. +// +// 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 com.hughes.android.dictionary; + +import android.app.AlertDialog; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.os.Build; +import android.os.Environment; +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 AppCompatActivity + implements SharedPreferences.OnSharedPreferenceChangeListener { + + static boolean prefsMightHaveChanged = false; + + @SuppressWarnings("deprecation") + @Override + public void onCreate(Bundle savedInstanceState) { + 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 + * list is dynamically generated, we have to do it in this + * fashion + */ + super.onCreate(savedInstanceState); + setContentView(R.layout.preference_activity); + } + + @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); + } + + 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()); + final DictionaryApplication application = DictionaryApplication.INSTANCE; + File dictDir = application.getDictDir(); + if (!dictDir.isDirectory() || !dictDir.canWrite() || + !DictionaryApplication.checkFileCreate(dictDir)) { + 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(); + } + } +}