1bf96661d33d0126adb60a48880ceba1ff055d4a4satok/* 2bf96661d33d0126adb60a48880ceba1ff055d4a4satok * Copyright (C) 2010 The Android Open Source Project 3bf96661d33d0126adb60a48880ceba1ff055d4a4satok * 4bf96661d33d0126adb60a48880ceba1ff055d4a4satok * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5bf96661d33d0126adb60a48880ceba1ff055d4a4satok * use this file except in compliance with the License. You may obtain a copy of 6bf96661d33d0126adb60a48880ceba1ff055d4a4satok * the License at 7bf96661d33d0126adb60a48880ceba1ff055d4a4satok * 8bf96661d33d0126adb60a48880ceba1ff055d4a4satok * http://www.apache.org/licenses/LICENSE-2.0 9bf96661d33d0126adb60a48880ceba1ff055d4a4satok * 10bf96661d33d0126adb60a48880ceba1ff055d4a4satok * Unless required by applicable law or agreed to in writing, software 11bf96661d33d0126adb60a48880ceba1ff055d4a4satok * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12bf96661d33d0126adb60a48880ceba1ff055d4a4satok * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13bf96661d33d0126adb60a48880ceba1ff055d4a4satok * License for the specific language governing permissions and limitations under 14bf96661d33d0126adb60a48880ceba1ff055d4a4satok * the License. 15bf96661d33d0126adb60a48880ceba1ff055d4a4satok */ 16bf96661d33d0126adb60a48880ceba1ff055d4a4satok 17bf96661d33d0126adb60a48880ceba1ff055d4a4satokpackage com.android.inputmethod.latin; 18bf96661d33d0126adb60a48880ceba1ff055d4a4satok 19bf96661d33d0126adb60a48880ceba1ff055d4a4satokimport android.content.SharedPreferences; 20bf96661d33d0126adb60a48880ceba1ff055d4a4satokimport android.content.pm.PackageInfo; 21bf96661d33d0126adb60a48880ceba1ff055d4a4satokimport android.content.pm.PackageManager.NameNotFoundException; 22bf96661d33d0126adb60a48880ceba1ff055d4a4satokimport android.os.Bundle; 23f9ec16f9c03545d2b4d0d5a40f23e28bd1826d5fJean Chalardimport android.os.Process; 24bf96661d33d0126adb60a48880ceba1ff055d4a4satokimport android.preference.CheckBoxPreference; 25bf96661d33d0126adb60a48880ceba1ff055d4a4satokimport android.preference.PreferenceActivity; 26bf96661d33d0126adb60a48880ceba1ff055d4a4satokimport android.util.Log; 27bf96661d33d0126adb60a48880ceba1ff055d4a4satok 289502cc177cc53678c9ddcc01d4d046f69220e13bTadashi G. Takaokapublic class DebugSettings extends PreferenceActivity 29bf96661d33d0126adb60a48880ceba1ff055d4a4satok implements SharedPreferences.OnSharedPreferenceChangeListener { 30bf96661d33d0126adb60a48880ceba1ff055d4a4satok 319502cc177cc53678c9ddcc01d4d046f69220e13bTadashi G. Takaoka private static final String TAG = "DebugSettings"; 32bf96661d33d0126adb60a48880ceba1ff055d4a4satok private static final String DEBUG_MODE_KEY = "debug_mode"; 33bf96661d33d0126adb60a48880ceba1ff055d4a4satok 34f5cf266ad97d941cf5abfeffc0798ed410f623a4Jean Chalard private boolean mServiceNeedsRestart = false; 35bf96661d33d0126adb60a48880ceba1ff055d4a4satok private CheckBoxPreference mDebugMode; 36bf96661d33d0126adb60a48880ceba1ff055d4a4satok 37bf96661d33d0126adb60a48880ceba1ff055d4a4satok @Override 38bf96661d33d0126adb60a48880ceba1ff055d4a4satok protected void onCreate(Bundle icicle) { 39bf96661d33d0126adb60a48880ceba1ff055d4a4satok super.onCreate(icicle); 40bf96661d33d0126adb60a48880ceba1ff055d4a4satok addPreferencesFromResource(R.xml.prefs_for_debug); 41bf96661d33d0126adb60a48880ceba1ff055d4a4satok SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); 42bf96661d33d0126adb60a48880ceba1ff055d4a4satok prefs.registerOnSharedPreferenceChangeListener(this); 43bf96661d33d0126adb60a48880ceba1ff055d4a4satok 44f5cf266ad97d941cf5abfeffc0798ed410f623a4Jean Chalard mServiceNeedsRestart = false; 45bf96661d33d0126adb60a48880ceba1ff055d4a4satok mDebugMode = (CheckBoxPreference) findPreference(DEBUG_MODE_KEY); 46bf96661d33d0126adb60a48880ceba1ff055d4a4satok updateDebugMode(); 47bf96661d33d0126adb60a48880ceba1ff055d4a4satok } 48bf96661d33d0126adb60a48880ceba1ff055d4a4satok 495a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka @Override 50f9ec16f9c03545d2b4d0d5a40f23e28bd1826d5fJean Chalard protected void onStop() { 51f9ec16f9c03545d2b4d0d5a40f23e28bd1826d5fJean Chalard super.onStop(); 52f5cf266ad97d941cf5abfeffc0798ed410f623a4Jean Chalard if (mServiceNeedsRestart) Process.killProcess(Process.myPid()); 53f9ec16f9c03545d2b4d0d5a40f23e28bd1826d5fJean Chalard } 54f9ec16f9c03545d2b4d0d5a40f23e28bd1826d5fJean Chalard 55f9ec16f9c03545d2b4d0d5a40f23e28bd1826d5fJean Chalard @Override 56bf96661d33d0126adb60a48880ceba1ff055d4a4satok public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 57bf96661d33d0126adb60a48880ceba1ff055d4a4satok if (key.equals(DEBUG_MODE_KEY)) { 58bf96661d33d0126adb60a48880ceba1ff055d4a4satok if (mDebugMode != null) { 59bf96661d33d0126adb60a48880ceba1ff055d4a4satok mDebugMode.setChecked(prefs.getBoolean(DEBUG_MODE_KEY, false)); 60bf96661d33d0126adb60a48880ceba1ff055d4a4satok updateDebugMode(); 61f5cf266ad97d941cf5abfeffc0798ed410f623a4Jean Chalard mServiceNeedsRestart = true; 62bf96661d33d0126adb60a48880ceba1ff055d4a4satok } 63bf96661d33d0126adb60a48880ceba1ff055d4a4satok } 64bf96661d33d0126adb60a48880ceba1ff055d4a4satok } 65bf96661d33d0126adb60a48880ceba1ff055d4a4satok 66bf96661d33d0126adb60a48880ceba1ff055d4a4satok private void updateDebugMode() { 67bf96661d33d0126adb60a48880ceba1ff055d4a4satok if (mDebugMode == null) { 68bf96661d33d0126adb60a48880ceba1ff055d4a4satok return; 69bf96661d33d0126adb60a48880ceba1ff055d4a4satok } 70bf96661d33d0126adb60a48880ceba1ff055d4a4satok boolean isDebugMode = mDebugMode.isChecked(); 71bf96661d33d0126adb60a48880ceba1ff055d4a4satok String version = ""; 72bf96661d33d0126adb60a48880ceba1ff055d4a4satok try { 73bf96661d33d0126adb60a48880ceba1ff055d4a4satok PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0); 74bf96661d33d0126adb60a48880ceba1ff055d4a4satok version = "Version " + info.versionName; 75bf96661d33d0126adb60a48880ceba1ff055d4a4satok } catch (NameNotFoundException e) { 76bf96661d33d0126adb60a48880ceba1ff055d4a4satok Log.e(TAG, "Could not find version info."); 77bf96661d33d0126adb60a48880ceba1ff055d4a4satok } 78bf96661d33d0126adb60a48880ceba1ff055d4a4satok if (!isDebugMode) { 79bf96661d33d0126adb60a48880ceba1ff055d4a4satok mDebugMode.setTitle(version); 80bf96661d33d0126adb60a48880ceba1ff055d4a4satok mDebugMode.setSummary(""); 81bf96661d33d0126adb60a48880ceba1ff055d4a4satok } else { 82bf96661d33d0126adb60a48880ceba1ff055d4a4satok mDebugMode.setTitle(getResources().getString(R.string.prefs_debug_mode)); 83bf96661d33d0126adb60a48880ceba1ff055d4a4satok mDebugMode.setSummary(version); 84bf96661d33d0126adb60a48880ceba1ff055d4a4satok } 85bf96661d33d0126adb60a48880ceba1ff055d4a4satok } 86bf96661d33d0126adb60a48880ceba1ff055d4a4satok} 87