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