]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/PreferenceActivity.java
Fix trailing whitespace and DOS linebreaks.
[Dictionary.git] / src / com / hughes / android / dictionary / PreferenceActivity.java
index ac41a864afb86e1d25a3f90a73f34e5e37b5995a..1e7ba15c54cf3fee16df1b32d8fc8c908f656e3a 100644 (file)
 
 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;
 
@@ -30,7 +35,7 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
     public void onCreate(Bundle savedInstanceState) {
         final DictionaryApplication application = (DictionaryApplication) getApplication();
         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();
@@ -63,8 +68,59 @@ 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) {
+        final DictionaryApplication application = (DictionaryApplication)getApplication();
+        File dictDir = application.getDictDir();
+        if (!dictDir.isDirectory() || !dictDir.canWrite() ||
+            !application.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();
+        }
+    }
 }