OSDN Git Service

Keep all default preferences in one place
authorSteven Luo <steven+android@steven676.net>
Wed, 23 Nov 2011 04:18:10 +0000 (20:18 -0800)
committerJack Palevich <jackpal@google.com>
Wed, 23 Nov 2011 18:32:35 +0000 (10:32 -0800)
We keep forgetting to change bits and pieces which contain default
preferences when we update them.  That's nuts, so let's keep all the
default preferences in one file (res/value/defaults.xml) in the
resources, and fetch those preferences from the resources whenever we
need them.

Signed-off-by: Jack Palevich <jackpal@google.com>
res/values/defaults.xml [new file with mode: 0644]
res/values/strings.xml
res/xml/preferences.xml
src/jackpal/androidterm/Term.java
src/jackpal/androidterm/session/TermSession.java
src/jackpal/androidterm/util/TermSettings.java

diff --git a/res/values/defaults.xml b/res/values/defaults.xml
new file mode 100644 (file)
index 0000000..72619ba
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+   <!-- Don't localize these default values -->
+   <string name="pref_statusbar_default">0</string>
+   <string name="pref_cursorstyle_default">0</string>
+   <string name="pref_cursorblink_default">0</string>
+   <string name="pref_fontsize_default">10</string>
+   <string name="pref_color_default">2</string>
+   <bool name="pref_utf8_by_default_default">false</bool>
+   <string name="pref_backaction_default">2</string>
+   <string name="pref_controlkey_default">5</string>
+   <string name="pref_fnkey_default">4</string>
+   <string name="pref_ime_default">0</string>
+   <string name="pref_shell_default">/system/bin/sh -</string>
+   <string name="pref_initialcommand_default">export PATH=/data/local/bin:$PATH</string>
+   <string name="pref_termtype_default">screen</string>
+   <bool name="pref_close_window_on_process_exit_default">true</bool>
+</resources>
index d8a2216..a8b023e 100644 (file)
    <string name="title_close_window_on_process_exit_preference">Close window on exit</string>
    <string name="summary_close_window_on_process_exit_preference">Whether a window should close when its shell exits.</string>
 
-   <!-- Don't localize these default values -->
-   <string name="default_value_statusbar_preference">0</string>
-   <string name="default_value_cursorstyle_preference">0</string>
-   <string name="default_value_cursorblink_preference">0</string>
-   <string name="default_value_fontsize_preference">10</string>
-   <string name="default_value_color_preference">2</string>
-   <string name="default_value_backaction_preference">3</string>
-   <string name="default_value_controlkey_preference">5</string>
-   <string name="default_value_fnkey_preference">4</string>
-   <string name="default_value_ime_preference">0</string>
-   <string name="default_value_shell_preference">/system/bin/sh -</string>
-   <string name="default_value_initialcommand_preference">export PATH=/data/local/bin:$PATH</string>
-   <string name="default_value_termtype_preference">screen</string>
-
    <string name="control_key_dialog_title">Control and Function Keys</string>
    <!-- The word CTRLKEY should be left un-translated. It will be replaced at run-time with the
         actual control key key name. -->
index 787217c..55991c3 100644 (file)
@@ -22,7 +22,7 @@
 
         <ListPreference
                 android:key="statusbar"
-                android:defaultValue="@string/default_value_statusbar_preference"
+                android:defaultValue="@string/pref_statusbar_default"
                 android:title="@string/title_statusbar_preference"
                 android:summary="@string/summary_statusbar_preference"
                 android:entries="@array/entries_statusbar_preference"
@@ -33,7 +33,7 @@
 <!--
         <ListPreference
                 android:key="cursorstyle"
-                android:defaultValue="@string/default_value_cursorstyle_preference"
+                android:defaultValue="@string/pref_cursorstyle_default"
                 android:title="@string/title_cursorstyle_preference"
                 android:summary="@string/summary_cursorstyle_preference"
                 android:entries="@array/entries_cursorstyle_preference"
@@ -42,7 +42,7 @@
 
         <ListPreference
                 android:key="cursorblink"
-                android:defaultValue="@string/default_value_cursorblink_preference"
+                android:defaultValue="@string/pref_cursorblink_default"
                 android:title="@string/title_cursorblink_preference"
                 android:summary="@string/summary_cursorblink_preference"
                 android:entries="@array/entries_cursorblink_preference"
@@ -57,7 +57,7 @@
 
         <ListPreference
                 android:key="fontsize"
-                android:defaultValue="@string/default_value_fontsize_preference"
+                android:defaultValue="@string/pref_fontsize_default"
                 android:title="@string/title_fontsize_preference"
                 android:summary="@string/summary_fontsize_preference"
                 android:entries="@array/entries_fontsize_preference"
@@ -66,7 +66,7 @@
 
         <ListPreference
                 android:key="color"
-                android:defaultValue="@string/default_value_color_preference"
+                android:defaultValue="@string/pref_color_default"
                 android:title="@string/title_color_preference"
                 android:summary="@string/summary_color_preference"
                 android:entries="@array/entries_color_preference"
@@ -75,7 +75,7 @@
 
         <CheckBoxPreference
                 android:key="utf8_by_default"
-                android:defaultValue="false"
+                android:defaultValue="@bool/pref_utf8_by_default_default"
                 android:title="@string/title_utf8_by_default_preference"
                 android:summary="@string/summary_utf8_by_default_preference" />
 
@@ -86,7 +86,7 @@
 
         <ListPreference
                 android:key="backaction"
-                android:defaultValue="@string/default_value_backaction_preference"
+                android:defaultValue="@string/pref_backaction_default"
                 android:title="@string/title_backaction_preference"
                 android:summary="@string/summary_backaction_preference"
                 android:entries="@array/entries_backaction_preference"
@@ -95,7 +95,7 @@
 
         <ListPreference
                 android:key="controlkey"
-                android:defaultValue="@string/default_value_controlkey_preference"
+                android:defaultValue="@string/pref_controlkey_default"
                 android:title="@string/title_controlkey_preference"
                 android:summary="@string/summary_controlkey_preference"
                 android:entries="@array/entries_controlkey_preference"
 
         <ListPreference
                 android:key="fnkey"
-                android:defaultValue="@string/default_value_fnkey_preference"
+                android:defaultValue="@string/pref_fnkey_default"
                 android:title="@string/title_fnkey_preference"
                 android:summary="@string/summary_fnkey_preference"
                 android:entries="@array/entries_fnkey_preference"
 
         <ListPreference
                 android:key="ime"
-                android:defaultValue="@string/default_value_ime_preference"
+                android:defaultValue="@string/pref_ime_default"
                 android:title="@string/title_ime_preference"
                 android:summary="@string/summary_ime_preference"
                 android:entries="@array/entries_ime_preference"
 
     <EditTextPreference
             android:key="shell"
-            android:defaultValue="@string/default_value_shell_preference"
+            android:defaultValue="@string/pref_shell_default"
             android:title="@string/title_shell_preference"
             android:summary="@string/summary_shell_preference"
             android:dialogTitle="@string/dialog_title_shell_preference" />
     <EditTextPreference
             android:key="initialcommand"
-            android:defaultValue="@string/default_value_initialcommand_preference"
+            android:defaultValue="@string/pref_initialcommand_default"
             android:title="@string/title_initialcommand_preference"
             android:summary="@string/summary_initialcommand_preference"
             android:dialogTitle="@string/dialog_title_initialcommand_preference" />
     <ListPreference
             android:key="termtype"
-            android:defaultValue="@string/default_value_termtype_preference"
+            android:defaultValue="@string/pref_termtype_default"
             android:title="@string/title_termtype_preference"
             android:summary="@string/summary_termtype_preference"
             android:entries="@array/entries_termtype_preference"
             android:dialogTitle="@string/dialog_title_termtype_preference" />
     <CheckBoxPreference
             android:key="close_window_on_process_exit"
-            android:defaultValue="true"
+            android:defaultValue="@bool/pref_close_window_on_process_exit_default"
             android:title="@string/title_close_window_on_process_exit_preference"
             android:summary="@string/summary_close_window_on_process_exit_preference" />
     </PreferenceCategory>
index 357549a..406851b 100644 (file)
@@ -113,7 +113,7 @@ public class Term extends Activity implements UpdateCallback {
         super.onCreate(icicle);
         Log.e(TermDebug.LOG_TAG, "onCreate");
         mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
-        mSettings = new TermSettings(mPrefs);
+        mSettings = new TermSettings(getResources(), mPrefs);
 
         TSIntent = new Intent(this, TermService.class);
         startService(TSIntent);
index 0c8e396..821bcd7 100644 (file)
@@ -69,10 +69,6 @@ public class TermSession {
 
     private static final int DEFAULT_COLUMNS = 80;
     private static final int DEFAULT_ROWS = 24;
-    private static final String DEFAULT_SHELL = "/system/bin/sh -";
-    private static final String DEFAULT_INITIAL_COMMAND =
-        "export PATH=/data/local/bin:$PATH";
-    private static final String DEFAULT_TERMTYPE = "screen";
 
     // Number of rows in the transcript
     private static final int TRANSCRIPT_ROWS = 10000;
@@ -161,9 +157,6 @@ public class TermSession {
     }
 
     private void sendInitialCommand(String initialCommand) {
-        if (initialCommand == null || initialCommand.equals("")) {
-            initialCommand = DEFAULT_INITIAL_COMMAND;
-        }
         if (initialCommand.length() > 0) {
             write(initialCommand + '\r');
         }
@@ -200,17 +193,11 @@ public class TermSession {
 
     private void createSubprocess(int[] processId) {
         String shell = mSettings.getShell();
-        if (shell == null || shell.equals("")) {
-            shell = DEFAULT_SHELL;
-        }
         ArrayList<String> argList = parse(shell);
         String arg0 = argList.get(0);
         String[] args = argList.toArray(new String[1]);
 
         String termType = mSettings.getTermType();
-        if (termType == null) {
-            termType = DEFAULT_TERMTYPE;
-        }
         String[] env = new String[1];
         env[0] = "TERM=" + termType;
 
index 0ee7bc9..e0230cc 100644 (file)
 
 package jackpal.androidterm.util;
 
+import android.content.res.Resources;
 import android.content.SharedPreferences;
 import android.view.KeyEvent;
 
+import jackpal.androidterm.R;
+
 /**
  * Terminal emulator settings
  */
 public class TermSettings {
     private SharedPreferences mPrefs;
 
-    private int mStatusBar = 0;
-    private int mCursorStyle = 0;
-    private int mCursorBlink = 0;
-    private int mFontSize = 9;
-    private int mColorId = 2;
-    private int mControlKeyId = 5; // Default to Volume Down
-    private int mFnKeyId = 4; // Default to Volume Up
-    private int mUseCookedIME = 0;
+    private int mStatusBar;
+    private int mCursorStyle;
+    private int mCursorBlink;
+    private int mFontSize;
+    private int mColorId;
+    private int mControlKeyId;
+    private int mFnKeyId;
+    private int mUseCookedIME;
     private String mShell;
     private String mInitialCommand;
-    private boolean mUTF8ByDefault = false;
-    private int mBackKeyAction = BACK_KEY_CLOSES_ACTIVITY;
+    private boolean mUTF8ByDefault;
+    private int mBackKeyAction;
     private String mTermType;
-    private boolean mCloseOnExit = true;
+    private boolean mCloseOnExit;
 
     private static final String STATUSBAR_KEY = "statusbar";
     private static final String CURSORSTYLE_KEY = "cursorstyle";
@@ -98,10 +101,28 @@ public class TermSettings {
     public static final int BACK_KEY_SENDS_TAB = 4;
     private static final int BACK_KEY_MAX = 4;
 
-    public TermSettings(SharedPreferences prefs) {
+    public TermSettings(Resources res, SharedPreferences prefs) {
+        readDefaultPrefs(res);
         readPrefs(prefs);
     }
 
+    private void readDefaultPrefs(Resources res) {
+        mStatusBar = Integer.parseInt(res.getString(R.string.pref_statusbar_default));
+        mCursorStyle = Integer.parseInt(res.getString(R.string.pref_cursorstyle_default));
+        mCursorBlink = Integer.parseInt(res.getString(R.string.pref_cursorblink_default));
+        mFontSize = Integer.parseInt(res.getString(R.string.pref_fontsize_default));
+        mColorId = Integer.parseInt(res.getString(R.string.pref_color_default));
+        mUTF8ByDefault = res.getBoolean(R.bool.pref_utf8_by_default_default);
+        mBackKeyAction = Integer.parseInt(res.getString(R.string.pref_backaction_default));
+        mControlKeyId = Integer.parseInt(res.getString(R.string.pref_controlkey_default));
+        mFnKeyId = Integer.parseInt(res.getString(R.string.pref_fnkey_default));
+        mUseCookedIME = Integer.parseInt(res.getString(R.string.pref_ime_default));
+        mShell = res.getString(R.string.pref_shell_default);
+        mInitialCommand = res.getString(R.string.pref_initialcommand_default);
+        mTermType = res.getString(R.string.pref_termtype_default);
+        mCloseOnExit = res.getBoolean(R.bool.pref_close_window_on_process_exit_default);
+    }
+
     public void readPrefs(SharedPreferences prefs) {
         mPrefs = prefs;
         mStatusBar = readIntPref(STATUSBAR_KEY, mStatusBar, 1);
@@ -116,7 +137,7 @@ public class TermSettings {
         mUseCookedIME = readIntPref(IME_KEY, mUseCookedIME, 1);
         mShell = readStringPref(SHELL_KEY, mShell);
         mInitialCommand = readStringPref(INITIALCOMMAND_KEY, mInitialCommand);
-        mUTF8ByDefault = readBooleanPref(UTF8_KEY, false);
+        mUTF8ByDefault = readBooleanPref(UTF8_KEY, mUTF8ByDefault);
         mBackKeyAction = readIntPref(BACKACTION_KEY, mBackKeyAction, BACK_KEY_MAX);
         mTermType = readStringPref(TERMTYPE_KEY, mTermType);
         mCloseOnExit = readBooleanPref(CLOSEONEXIT_KEY, mCloseOnExit);