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