Android Open Source - translationKeyboard Global Keyboard Settings






From Project

Back to project page translationKeyboard.

License

The source code is released under:

GNU General Public License

If you think the Android project translationKeyboard listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.distantshoresmedia.translationkeyboard;
//w w  w .ja va2s. c o m
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import android.content.SharedPreferences;
import android.content.res.Resources;
import android.util.Log;

import org.distantshoresmedia.translationkeyboard.R;

/**
 * Global current settings for the keyboard.
 * 
 * <p>
 * Yes, globals are evil. But the persisted shared preferences are global data
 * by definition, and trying to hide this by propagating the current manually
 * just adds a lot of complication. This is especially annoying due to Views
 * getting constructed in a way that doesn't support adding additional
 * constructor arguments, requiring post-construction method calls, which is
 * error-prone and fragile.
 * 
 * <p>
 * The comments below indicate which class is responsible for updating the
 * value, and for recreating keyboards or views as necessary. Other classes
 * MUST treat the fields as read-only values, and MUST NOT attempt to save
 * these values or results derived from them across re-initializations.

 * 
 * @author klaus.weidner@gmail.com
 */
public final class GlobalKeyboardSettings {
    protected static final String TAG = "HK/Globals";

    /* Simple prefs updated by this class */
    //
    // Read by Keyboard
    public int popupKeyboardFlags = 0x1;
    public float topRowScale = 1.0f;
    //
    // Read by LatinKeyboardView
    public boolean showTouchPos = false;
    //
    // Read by LatinIME
    public String suggestedPunctuation = "!?,.";
    public int keyboardModePortrait = 2;
    public int keyboardModeLandscape = 2;
    public boolean compactModeEnabled = false;
    public int chordingCtrlKey = 0;
    public int chordingAltKey = 0;
    public int chordingMetaKey = 0;
    public float keyClickVolume = 0.0f;
    public int keyClickMethod = 0;
    public boolean capsLock = false;
    public boolean shiftLockModifiers = false;
    //
    // Read by LatinKeyboardBaseView
    public float labelScalePref = 1.0f;
    //
    // Read by CandidateView
    public float candidateScalePref = 1.0f;
    //
    // Read by PointerTracker
    public int sendSlideKeys = 0;
    
    /* Updated by LatinIME */
    //
    // Read by KeyboardSwitcher
    public int keyboardMode = 0;
    public boolean useExtension = false;
    //
    // Read by LatinKeyboardView and KeyboardSwitcher
    public float keyboardHeightPercent = 40.0f; // percent of screen height
    //
    // Read by LatinKeyboardBaseView
    public int hintMode = 0;
    public int renderMode = 1;
    //
    // Read by PointerTracker
    public int longpressTimeout = 400;
    //
    // Read by LatinIMESettings
    // These are cached values for informational display, don't use for other purposes
    public String editorPackageName; 
    public String editorFieldName; 
    public int editorFieldId; 
    public int editorInputType;

    /* Updated by KeyboardSwitcher */
    //
    // Used by LatinKeyboardBaseView and LatinIME

    /* Updated by LanguageSwitcher */
    //
    // Used by Keyboard and KeyboardSwitcher
    public Locale inputLocale = Locale.getDefault();

    // Auto pref implementation follows
    private Map<String, BooleanPref> mBoolPrefs = new HashMap<String, BooleanPref>();
    private Map<String, StringPref> mStringPrefs = new HashMap<String, StringPref>();
    public static final int FLAG_PREF_NONE = 0;
    public static final int FLAG_PREF_NEED_RELOAD = 0x1;
    public static final int FLAG_PREF_NEW_PUNC_LIST = 0x2;
    public static final int FLAG_PREF_RECREATE_INPUT_VIEW = 0x4;
    public static final int FLAG_PREF_RESET_KEYBOARDS = 0x8;
    public static final int FLAG_PREF_RESET_MODE_OVERRIDE = 0x10;
    private int mCurrentFlags = 0;
    
    private interface BooleanPref {
        void set(boolean val);
        boolean getDefault();
        int getFlags();
    }

    private interface StringPref {
        void set(String val);
        String getDefault();
        int getFlags();
    }

    public void initPrefs(SharedPreferences prefs, Resources resources) {
        final Resources res = resources;
        
        addBooleanPref("pref_compact_mode_enabled", new BooleanPref() {
          
            public void set(boolean val) { compactModeEnabled = val; Log.i(TAG, "Setting compactModeEnabled to " + val); }
            public boolean getDefault() { return res.getBoolean(R.bool.default_compact_mode_enabled); }
            public int getFlags() { return FLAG_PREF_RESET_MODE_OVERRIDE; }
        });

        addStringPref("pref_keyboard_mode_portrait", new StringPref() {
            public void set(String val) { System.out.println("Value" + val); keyboardModePortrait = Integer.valueOf(val); }
            public String getDefault() { return "2";}//res.getString(R.string.default_keyboard_mode_portrait); }
            public int getFlags() { return FLAG_PREF_RESET_KEYBOARDS | FLAG_PREF_RESET_MODE_OVERRIDE; }
        });

        addStringPref("pref_keyboard_mode_landscape", new StringPref() {
            public void set(String val) {keyboardModeLandscape = Integer.valueOf(val); }
            public String getDefault() { return res.getString(R.string.default_keyboard_mode_landscape); }
            public int getFlags() { return FLAG_PREF_RESET_KEYBOARDS | FLAG_PREF_RESET_MODE_OVERRIDE; }
        });

        addStringPref("pref_slide_keys_int", new StringPref() {
            public void set(String val) { sendSlideKeys = Integer.valueOf(val); }
            public String getDefault() { return "0"; }
            public int getFlags() { return FLAG_PREF_NONE; }
        });

        addBooleanPref("pref_touch_pos", new BooleanPref() {
            public void set(boolean val) { showTouchPos = val; }
            public boolean getDefault() { return false; }
            public int getFlags() { return FLAG_PREF_NONE; }
        });

        addStringPref("pref_popup_content", new StringPref() {
            public void set(String val) { popupKeyboardFlags = Integer.valueOf(val); }
            public String getDefault() { return res.getString(R.string.default_popup_content); }
            public int getFlags() { return FLAG_PREF_RESET_KEYBOARDS; }
        });

        addStringPref("pref_suggested_punctuation", new StringPref() {
            public void set(String val) { suggestedPunctuation = val; }
            public String getDefault() { return res.getString(R.string.suggested_punctuations_default); }
            public int getFlags() { return FLAG_PREF_NEW_PUNC_LIST; }
        });

        addStringPref("pref_label_scale", new StringPref() {
            public void set(String val) { labelScalePref = Float.valueOf(val); }
            public String getDefault() { return "1.0"; }
            public int getFlags() { return FLAG_PREF_RECREATE_INPUT_VIEW; }
        });

        addStringPref("pref_candidate_scale", new StringPref() {
            public void set(String val) { candidateScalePref = Float.valueOf(val); }
            public String getDefault() { return "1.0"; }
            public int getFlags() { return FLAG_PREF_RESET_KEYBOARDS; }
        });

        addStringPref("pref_top_row_scale", new StringPref() {
            public void set(String val) { topRowScale = Float.valueOf(val); }
            public String getDefault() { return "1.0"; }
            public int getFlags() { return FLAG_PREF_RESET_KEYBOARDS; }
        });

        addStringPref("pref_chording_ctrl_key", new StringPref() {
            public void set(String val) { chordingCtrlKey = Integer.valueOf(val); }
            public String getDefault() { return res.getString(R.string.default_chording_ctrl_key); }
            public int getFlags() { return FLAG_PREF_RESET_KEYBOARDS; }
        });

        addStringPref("pref_chording_alt_key", new StringPref() {
            public void set(String val) { chordingAltKey = Integer.valueOf(val); }
            public String getDefault() { return res.getString(R.string.default_chording_alt_key); }
            public int getFlags() { return FLAG_PREF_RESET_KEYBOARDS; }
        });

        addStringPref("pref_chording_meta_key", new StringPref() {
            public void set(String val) { chordingMetaKey = Integer.valueOf(val); }
            public String getDefault() { return res.getString(R.string.default_chording_meta_key); }
            public int getFlags() { return FLAG_PREF_RESET_KEYBOARDS; }
        });

        addStringPref("pref_click_volume", new StringPref() {
            public void set(String val) { keyClickVolume = Float.valueOf(val); }
            public String getDefault() { return res.getString(R.string.default_click_volume); }
            public int getFlags() { return FLAG_PREF_NONE; }
        });

        addStringPref("pref_click_method", new StringPref() {
            public void set(String val) { keyClickMethod = Integer.valueOf(val); }
            public String getDefault() { return res.getString(R.string.default_click_method); }
            public int getFlags() { return FLAG_PREF_NONE; }
        });

        addBooleanPref("pref_caps_lock", new BooleanPref() {
            public void set(boolean val) { capsLock = val; }
            public boolean getDefault() { return res.getBoolean(R.bool.default_caps_lock); }
            public int getFlags() { return FLAG_PREF_NONE; }
        });

        addBooleanPref("pref_shift_lock_modifiers", new BooleanPref() {
            public void set(boolean val) { shiftLockModifiers = val; }
            public boolean getDefault() { return res.getBoolean(R.bool.default_shift_lock_modifiers); }
            public int getFlags() { return FLAG_PREF_NONE; }
        });

        // Set initial values
        for (String key : mBoolPrefs.keySet()) {
            BooleanPref pref = mBoolPrefs.get(key);
            pref.set(prefs.getBoolean(key, pref.getDefault()));
        }
        for (String key : mStringPrefs.keySet()) {
            StringPref pref = mStringPrefs.get(key);
            pref.set(prefs.getString(key, pref.getDefault()));
        }
    }
    
    public void sharedPreferenceChanged(SharedPreferences prefs, String key) {
      
        boolean found = false;
        mCurrentFlags = FLAG_PREF_NONE;
        BooleanPref bPref = mBoolPrefs.get(key);
        if (bPref != null) {
            found = true;
            bPref.set(prefs.getBoolean(key, bPref.getDefault()));
            mCurrentFlags |= bPref.getFlags(); 
        }
        StringPref sPref = mStringPrefs.get(key);
        if (sPref != null) {
            found = true;
            sPref.set(prefs.getString(key, sPref.getDefault()));
            mCurrentFlags |= sPref.getFlags(); 
        }
        //if (!found) Log.i(TAG, "sharedPreferenceChanged: unhandled key=" + key);
    }
    
    public boolean hasFlag(int flag) {
        if ((mCurrentFlags & flag) != 0) {
            mCurrentFlags &= ~flag;
            return true;
        }
        return false;
    }
    
    public int unhandledFlags() {
        return mCurrentFlags;
    }

    private void addBooleanPref(String key, BooleanPref setter) {
        mBoolPrefs.put(key, setter);
    }

    private void addStringPref(String key, StringPref setter) {
        mStringPrefs.put(key, setter);
    }
}




Java Source Code List

org.distantshoresmedia.translationkeyboard.AutoDictionary.java
org.distantshoresmedia.translationkeyboard.AutoSummaryEditTextPreference.java
org.distantshoresmedia.translationkeyboard.AutoSummaryListPreference.java
org.distantshoresmedia.translationkeyboard.BinaryDictionary.java
org.distantshoresmedia.translationkeyboard.CandidateView.java
org.distantshoresmedia.translationkeyboard.ComposeBase.java
org.distantshoresmedia.translationkeyboard.ComposeSequence.java
org.distantshoresmedia.translationkeyboard.ContactsDictionary.java
org.distantshoresmedia.translationkeyboard.DeadAccentSequence.java
org.distantshoresmedia.translationkeyboard.Dictionary.java
org.distantshoresmedia.translationkeyboard.EditingUtil.java
org.distantshoresmedia.translationkeyboard.ExpandableDictionary.java
org.distantshoresmedia.translationkeyboard.GlobalKeyboardSettings.java
org.distantshoresmedia.translationkeyboard.InputLanguageSelection.java
org.distantshoresmedia.translationkeyboard.KeyDetector.java
org.distantshoresmedia.translationkeyboard.KeyboardSwitcher.java
org.distantshoresmedia.translationkeyboard.Keyboard.java
org.distantshoresmedia.translationkeyboard.LanguageSwitcher.java
org.distantshoresmedia.translationkeyboard.LatinIMEBackupAgent.java
org.distantshoresmedia.translationkeyboard.LatinIMEDebugSettings.java
org.distantshoresmedia.translationkeyboard.LatinIMESettings.java
org.distantshoresmedia.translationkeyboard.LatinIMEUtil.java
org.distantshoresmedia.translationkeyboard.LatinIME.java
org.distantshoresmedia.translationkeyboard.LatinImeLogger.java
org.distantshoresmedia.translationkeyboard.LatinKeyboardBaseView.java
org.distantshoresmedia.translationkeyboard.LatinKeyboardView.java
org.distantshoresmedia.translationkeyboard.LatinKeyboard.java
org.distantshoresmedia.translationkeyboard.Main.java
org.distantshoresmedia.translationkeyboard.MiniKeyboardKeyDetector.java
org.distantshoresmedia.translationkeyboard.ModifierKeyState.java
org.distantshoresmedia.translationkeyboard.NotificationReceiver.java
org.distantshoresmedia.translationkeyboard.PluginManager.java
org.distantshoresmedia.translationkeyboard.PointerTracker.java
org.distantshoresmedia.translationkeyboard.PrefScreenActions.java
org.distantshoresmedia.translationkeyboard.PrefScreenFeedback.java
org.distantshoresmedia.translationkeyboard.PrefScreenView.java
org.distantshoresmedia.translationkeyboard.ProximityKeyDetector.java
org.distantshoresmedia.translationkeyboard.SeekBarPreferenceString.java
org.distantshoresmedia.translationkeyboard.SeekBarPreference.java
org.distantshoresmedia.translationkeyboard.SharedPreferencesCompat.java
org.distantshoresmedia.translationkeyboard.Suggest.java
org.distantshoresmedia.translationkeyboard.SwipeTracker.java
org.distantshoresmedia.translationkeyboard.TextEntryState.java
org.distantshoresmedia.translationkeyboard.Tutorial.java
org.distantshoresmedia.translationkeyboard.UserBigramDictionary.java
org.distantshoresmedia.translationkeyboard.UserDictionary.java
org.distantshoresmedia.translationkeyboard.VibratePreference.java
org.distantshoresmedia.translationkeyboard.WordComposer.java