/* * Copyright (C) 2009 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.pinyin; import java.util.List; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceGroup; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import com.android.inputmethod.pinyin.Settings; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; /** * Setting activity of Pinyin IME. */ public class SettingsActivity extends PreferenceActivity implements Preference.OnPreferenceChangeListener { private static String TAG = "SettingsActivity"; private CheckBoxPreference mKeySoundPref; private CheckBoxPreference mVibratePref; private CheckBoxPreference mPredictionPref; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); PreferenceScreen prefSet = getPreferenceScreen(); mKeySoundPref = (CheckBoxPreference) prefSet .findPreference(getString(R.string.setting_sound_key)); mVibratePref = (CheckBoxPreference) prefSet .findPreference(getString(R.string.setting_vibrate_key)); mPredictionPref = (CheckBoxPreference) prefSet .findPreference(getString(R.string.setting_prediction_key)); prefSet.setOnPreferenceChangeListener(this); Settings.getInstance(PreferenceManager .getDefaultSharedPreferences(getApplicationContext())); updatePreference(prefSet, getString(R.string.setting_advanced_key)); updateWidgets(); } @Override protected void onResume() { super.onResume(); updateWidgets(); } @Override protected void onDestroy() { Settings.releaseInstance(); super.onDestroy(); } @Override protected void onPause() { super.onPause(); Settings.setKeySound(mKeySoundPref.isChecked()); Settings.setVibrate(mVibratePref.isChecked()); Settings.setPrediction(mPredictionPref.isChecked()); Settings.writeBack(); } public boolean onPreferenceChange(Preference preference, Object newValue) { return true; } private void updateWidgets() { mKeySoundPref.setChecked(Settings.getKeySound()); mVibratePref.setChecked(Settings.getVibrate()); mPredictionPref.setChecked(Settings.getPrediction()); } public void updatePreference(PreferenceGroup parentPref, String prefKey) { Preference preference = parentPref.findPreference(prefKey); if (preference == null) { return; } Intent intent = preference.getIntent(); if (intent != null) { PackageManager pm = getPackageManager(); List list = pm.queryIntentActivities(intent, 0); int listSize = list.size(); if (listSize == 0) parentPref.removePreference(preference); } } }