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 android.content.SharedPreferences; 207898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectimport android.content.SharedPreferences.Editor; 217898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 227898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project/** 237898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project * Class used to maintain settings. 247898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project */ 257898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Projectpublic class Settings { 267898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static final String ANDPY_CONFS_KEYSOUND_KEY = "Sound"; 277898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static final String ANDPY_CONFS_VIBRATE_KEY = "Vibrate"; 287898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static final String ANDPY_CONFS_PREDICTION_KEY = "Prediction"; 297898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 307898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static boolean mKeySound; 317898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static boolean mVibrate; 327898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static boolean mPrediction; 337898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 347898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static Settings mInstance = null; 357898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 367898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static int mRefCount = 0; 377898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 387898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private static SharedPreferences mSharedPref = null; 397898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 407898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project protected Settings(SharedPreferences pref) { 417898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mSharedPref = pref; 427898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project initConfs(); 437898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 447898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 457898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public static Settings getInstance(SharedPreferences pref) { 467898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project if (mInstance == null) { 477898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mInstance = new Settings(pref); 487898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 497898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project assert (pref == mSharedPref); 507898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mRefCount++; 517898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project return mInstance; 527898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 537898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 547898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public static void writeBack() { 557898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project Editor editor = mSharedPref.edit(); 567898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project editor.putBoolean(ANDPY_CONFS_VIBRATE_KEY, mVibrate); 577898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project editor.putBoolean(ANDPY_CONFS_KEYSOUND_KEY, mKeySound); 587898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project editor.putBoolean(ANDPY_CONFS_PREDICTION_KEY, mPrediction); 597898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project editor.commit(); 607898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 617898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 627898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public static void releaseInstance() { 637898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mRefCount--; 647898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project if (mRefCount == 0) { 657898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mInstance = null; 667898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 677898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 687898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 697898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project private void initConfs() { 707898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mKeySound = mSharedPref.getBoolean(ANDPY_CONFS_KEYSOUND_KEY, true); 717898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mVibrate = mSharedPref.getBoolean(ANDPY_CONFS_VIBRATE_KEY, false); 727898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mPrediction = mSharedPref.getBoolean(ANDPY_CONFS_PREDICTION_KEY, true); 737898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 747898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 757898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public static boolean getKeySound() { 767898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project return mKeySound; 777898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 787898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 797898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public static void setKeySound(boolean v) { 807898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project if (mKeySound == v) return; 817898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mKeySound = v; 827898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 837898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 847898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public static boolean getVibrate() { 857898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project return mVibrate; 867898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 877898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 887898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public static void setVibrate(boolean v) { 897898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project if (mVibrate == v) return; 907898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mVibrate = v; 917898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 927898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 937898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public static boolean getPrediction() { 947898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project return mPrediction; 957898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 967898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project 977898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project public static void setPrediction(boolean v) { 987898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project if (mPrediction == v) return; 997898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project mPrediction = v; 1007898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project } 1017898d76cc005bbe1c5893a9f57439561e0771ccThe Android Open Source Project} 102