Add Debug Settings Activity

Bug:3033472

Change-Id: I311c66ac3c612a30d7da3be8ee35a352f49016ac
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 642c717..b1e5ec6 100755
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -26,6 +26,12 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="LatinIMEDebugSettings" android:label="@string/english_ime_debug_settings">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+            </intent-filter>
+        </activity>
+
         <activity android:name="InputLanguageSelection"
                 android:label="@string/language_selection_title">
             <intent-filter>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 56dceef..17921ff 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -372,4 +372,8 @@
 
     <string name="subtype_mode_keyboard">keyboard</string>
     <string name="subtype_mode_voice">voice</string>
+
+    <!-- Title for Latin keyboard debug settings activity / dialog -->
+    <string name="english_ime_debug_settings" translatable="false">Android keyboard Debug settings</string>
+    <string name="prefs_debug_mode" translatable="false">Debug Mode</string>
 </resources>
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index a554ad2..7bcf193 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -51,14 +51,6 @@
             android:defaultValue="true"
             />
 
-    <!-- <CheckBoxPreference
-            android:key="enable_logging"
-            android:title="@string/prefs_enable_log"
-            android:summary="@string/prefs_description_log"
-            android:persistent="true"
-            android:defaultValue="false"
-            />-->
-
     <ListPreference
             android:key="settings_key"
             android:title="@string/prefs_settings_key"
@@ -77,14 +69,6 @@
             android:defaultValue="@string/voice_mode_main"
             />
 
-    <!-- <ListPreference
-            android:key="keyboard_layout"
-            android:title="@string/keyboard_layout"
-            android:persistent="true"
-            android:entryValues="@array/keyboard_layout_modes_values"
-            android:entries="@array/keyboard_layout_modes"
-            android:defaultValue="4"
-            />-->
 
     <PreferenceScreen
             android:title="@string/language_selection_title"
diff --git a/java/res/xml/prefs_for_debug.xml b/java/res/xml/prefs_for_debug.xml
new file mode 100644
index 0000000..8177d3c
--- /dev/null
+++ b/java/res/xml/prefs_for_debug.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+     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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/prefs_debug_mode"
+        android:key="english_ime_debug_settings">
+
+    <CheckBoxPreference
+            android:key="enable_logging"
+            android:title="@string/prefs_enable_log"
+            android:summary="@string/prefs_description_log"
+            android:persistent="true"
+            android:defaultValue="false"
+            />
+
+    <ListPreference
+            android:key="pref_keyboard_layout_20100902"
+            android:title="@string/keyboard_layout"
+            android:persistent="true"
+            android:entryValues="@array/keyboard_layout_modes_values"
+            android:entries="@array/keyboard_layout_modes"
+            android:defaultValue="4"
+            />
+
+    <CheckBoxPreference
+            android:key="debug_mode"
+            android:title="@string/prefs_debug_mode"
+            android:persistent="true"
+            android:defaultValue="false"
+            />
+
+</PreferenceScreen>
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 696f530..4729585 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -40,6 +40,7 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.SystemClock;
+import android.preference.PreferenceActivity;
 import android.preference.PreferenceManager;
 import android.speech.SpeechRecognizer;
 import android.text.ClipboardManager;
@@ -2399,7 +2400,11 @@
         launchSettings(LatinIMESettings.class);
     }
 
-    protected void launchSettings(Class<LatinIMESettings> settingsClass) {
+    public void launchDebugSettings() {
+        launchSettings(LatinIMEDebugSettings.class);
+    }
+
+    protected void launchSettings (Class<? extends PreferenceActivity> settingsClass) {
         handleClose();
         Intent intent = new Intent();
         intent.setClass(LatinIME.this, settingsClass);
diff --git a/java/src/com/android/inputmethod/latin/LatinIMEDebugSettings.java b/java/src/com/android/inputmethod/latin/LatinIMEDebugSettings.java
new file mode 100644
index 0000000..cba1a0a
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/LatinIMEDebugSettings.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * 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.android.inputmethod.latin;
+
+import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.PreferenceActivity;
+import android.util.Log;
+
+public class LatinIMEDebugSettings extends PreferenceActivity
+        implements SharedPreferences.OnSharedPreferenceChangeListener {
+
+    private static final String TAG = "LatinIMEDebugSettings";
+    private static final String DEBUG_MODE_KEY = "debug_mode";
+
+    private CheckBoxPreference mDebugMode;
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        addPreferencesFromResource(R.xml.prefs_for_debug);
+        SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
+        prefs.registerOnSharedPreferenceChangeListener(this);
+
+        mDebugMode = (CheckBoxPreference) findPreference(DEBUG_MODE_KEY);
+        updateDebugMode();
+    }
+
+    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+        if (key.equals(DEBUG_MODE_KEY)) {
+            if (mDebugMode != null) {
+                mDebugMode.setChecked(prefs.getBoolean(DEBUG_MODE_KEY, false));
+                updateDebugMode();
+            }
+        }
+    }
+
+    private void updateDebugMode() {
+        if (mDebugMode == null) {
+            return;
+        }
+        boolean isDebugMode = mDebugMode.isChecked();
+        String version = "";
+        try {
+            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0);
+            version = "Version " + info.versionName;
+        } catch (NameNotFoundException e) {
+            Log.e(TAG, "Could not find version info.");
+        }
+        if (!isDebugMode) {
+            mDebugMode.setTitle(version);
+            mDebugMode.setSummary("");
+        } else {
+            mDebugMode.setTitle(getResources().getString(R.string.prefs_debug_mode));
+            mDebugMode.setSummary(version);
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/LatinIMESettings.java b/java/src/com/android/inputmethod/latin/LatinIMESettings.java
index f9534d2..ffff33d 100644
--- a/java/src/com/android/inputmethod/latin/LatinIMESettings.java
+++ b/java/src/com/android/inputmethod/latin/LatinIMESettings.java
@@ -24,8 +24,6 @@
 import android.app.backup.BackupManager;
 import android.content.DialogInterface;
 import android.content.SharedPreferences;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
 import android.os.Bundle;
 import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
@@ -45,7 +43,6 @@
     private static final String QUICK_FIXES_KEY = "quick_fixes";
     private static final String PREDICTION_SETTINGS_KEY = "prediction_settings";
     private static final String VOICE_SETTINGS_KEY = "voice_mode";
-    private static final String DEBUG_MODE_KEY = "debug_mode";
     /* package */ static final String PREF_SETTINGS_KEY = "settings_key";
 
     private static final String TAG = "LatinIMESettings";
@@ -54,7 +51,6 @@
     private static final int VOICE_INPUT_CONFIRM_DIALOG = 0;
 
     private CheckBoxPreference mQuickFixes;
-    private CheckBoxPreference mDebugMode;
     private ListPreference mVoicePreference;
     private ListPreference mSettingsKeyPreference;
     private boolean mVoiceOn;
@@ -77,9 +73,6 @@
         mVoiceModeOff = getString(R.string.voice_mode_off);
         mVoiceOn = !(prefs.getString(VOICE_SETTINGS_KEY, mVoiceModeOff).equals(mVoiceModeOff));
         mLogger = VoiceInputLogger.getLogger(this);
-
-        mDebugMode = (CheckBoxPreference) findPreference(DEBUG_MODE_KEY);
-        updateDebugMode();
     }
 
     @Override
@@ -114,11 +107,6 @@
                     .equals(mVoiceModeOff)) {
                 showVoiceConfirmation();
             }
-        } else if (key.equals(DEBUG_MODE_KEY)) {
-            if (mDebugMode != null) {
-                mDebugMode.setChecked(prefs.getBoolean(DEBUG_MODE_KEY, false));
-                updateDebugMode();
-            }
         }
         mVoiceOn = !(prefs.getString(VOICE_SETTINGS_KEY, mVoiceModeOff).equals(mVoiceModeOff));
         updateVoiceModeSummary();
@@ -131,29 +119,6 @@
                 [mSettingsKeyPreference.findIndexOfValue(mSettingsKeyPreference.getValue())]);
     }
 
-    private void updateDebugMode() {
-        if (mDebugMode == null) {
-            return;
-        }
-        boolean isDebugMode = mDebugMode.isChecked();
-        String version = "";
-        try {
-            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0);
-            version = "Version " + info.versionName;
-        } catch (NameNotFoundException e) {
-            Log.e(TAG, "Could not find version info.");
-        }
-        if (!isDebugMode) {
-            mDebugMode.setEnabled(false);
-            mDebugMode.setTitle(version);
-            mDebugMode.setSummary("");
-        } else {
-            mDebugMode.setEnabled(true);
-            mDebugMode.setSummary(version);
-            mDebugMode.setSummary("");
-        }
-    }
-
     private void showVoiceConfirmation() {
         mOkClicked = false;
         showDialog(VOICE_INPUT_CONFIRM_DIALOG);