17898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project/* 27898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 37898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * 47898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 57898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * you may not use this file except in compliance with the License. 67898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * You may obtain a copy of the License at 77898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * 87898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 97898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * 107898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 117898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 127898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * See the License for the specific language governing permissions and 147898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * limitations under the License. 157898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project */ 167898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 177898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectpackage com.android.inputmethod.pinyin; 187898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 197898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport java.util.List; 207898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 217898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.os.Bundle; 227898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.preference.CheckBoxPreference; 237898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.preference.Preference; 247898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.preference.PreferenceActivity; 257898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.preference.PreferenceGroup; 267898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.preference.PreferenceManager; 277898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.preference.PreferenceScreen; 287898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport com.android.inputmethod.pinyin.Settings; 297898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.content.Intent; 307898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.content.pm.PackageManager; 317898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.content.pm.ResolveInfo; 327898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 337898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project/** 347898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Setting activity of Pinyin IME. 357898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project */ 367898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectpublic class SettingsActivity extends PreferenceActivity implements 377898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Preference.OnPreferenceChangeListener { 387898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 397898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static String TAG = "SettingsActivity"; 407898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 417898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private CheckBoxPreference mKeySoundPref; 427898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private CheckBoxPreference mVibratePref; 437898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private CheckBoxPreference mPredictionPref; 447898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 457898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project @Override 467898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project protected void onCreate(Bundle savedInstanceState) { 477898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project super.onCreate(savedInstanceState); 487898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project addPreferencesFromResource(R.xml.settings); 497898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 507898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project PreferenceScreen prefSet = getPreferenceScreen(); 517898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 527898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mKeySoundPref = (CheckBoxPreference) prefSet 537898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project .findPreference(getString(R.string.setting_sound_key)); 547898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mVibratePref = (CheckBoxPreference) prefSet 557898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project .findPreference(getString(R.string.setting_vibrate_key)); 567898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mPredictionPref = (CheckBoxPreference) prefSet 577898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project .findPreference(getString(R.string.setting_prediction_key)); 587898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 597898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project prefSet.setOnPreferenceChangeListener(this); 607898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 617898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Settings.getInstance(PreferenceManager 627898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project .getDefaultSharedPreferences(getApplicationContext())); 637898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 647898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project updatePreference(prefSet, getString(R.string.setting_advanced_key)); 657898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 667898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project updateWidgets(); 677898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 687898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 697898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project @Override 707898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project protected void onResume() { 717898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project super.onResume(); 727898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project updateWidgets(); 737898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 747898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 757898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project @Override 767898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project protected void onDestroy() { 777898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Settings.releaseInstance(); 787898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project super.onDestroy(); 797898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 807898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 817898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project @Override 827898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project protected void onPause() { 837898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project super.onPause(); 847898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Settings.setKeySound(mKeySoundPref.isChecked()); 857898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Settings.setVibrate(mVibratePref.isChecked()); 867898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Settings.setPrediction(mPredictionPref.isChecked()); 877898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 887898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Settings.writeBack(); 897898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 907898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 917898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public boolean onPreferenceChange(Preference preference, Object newValue) { 927898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project return true; 937898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 947898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 957898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private void updateWidgets() { 967898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mKeySoundPref.setChecked(Settings.getKeySound()); 977898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mVibratePref.setChecked(Settings.getVibrate()); 987898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mPredictionPref.setChecked(Settings.getPrediction()); 997898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 1007898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 1017898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public void updatePreference(PreferenceGroup parentPref, String prefKey) { 1027898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Preference preference = parentPref.findPreference(prefKey); 1037898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project if (preference == null) { 1047898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project return; 1057898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 1067898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Intent intent = preference.getIntent(); 1077898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project if (intent != null) { 1087898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project PackageManager pm = getPackageManager(); 1097898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project List<ResolveInfo> list = pm.queryIntentActivities(intent, 0); 1107898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project int listSize = list.size(); 1117898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project if (listSize == 0) 1127898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project parentPref.removePreference(preference); 1137898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 1147898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 1157898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project} 116