com.s16.inputmethod.skeyboard.IMESettings.java Source code

Java tutorial

Introduction

Here is the source code for com.s16.inputmethod.skeyboard.IMESettings.java

Source

/*
 * Copyright (C) 2008 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.s16.inputmethod.skeyboard;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.backup.BackupManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.pm.PackageManager.NameNotFoundException;
//import android.os.Build;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.PreferenceGroup;
import android.support.v4.app.PreferenceFragment;
import android.text.AutoText;
import android.widget.Toast;

import com.s16.android.KeyboardApp;

public class IMESettings extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {

    public static final String APPLICATRION_ICON_KEY = "application_icon";
    private static final String QUICK_FIXES_KEY = "quick_fixes";
    private static final String PREDICTION_SETTINGS_KEY = "prediction_settings";
    /* package */ static final String PREF_SETTINGS_KEY = "settings_key";
    /* package */ static final String PREF_LANGUAGE_KEY = "language_key";
    /* package */ static final String PREF_AUTO_HIDE_MINIKEYBOARD = "auto_hide_minikeyboard";
    /* package */ static final String PREF_EXTENDED_ROW = "extended_row";
    /* package */ static final String PREF_KEYBOARD_BACKGROUND_COLOR = "keyboard_background_color";
    private static final String KEYBOARD_LAYOUT_SETTINGS_KEY = "keyboard_layout";
    private static final String TEXT_SIZE_SETTINGS_KEY = "key_text_size";
    //private static final String USED_UNICODE_SETTINGS_KEY = "used_unicode";

    //private static final String CATEGORY_PREDICTION_KEY = "prediction_category";

    protected static final String TAG = "IMESettings";

    private CheckBoxPreference mQuickFixes;
    private ListPreference mLanguageKeyPreference;
    private ListPreference mKeyboardLayoutPreference;
    private ListPreference mKeyboardTextSizePreference;
    private ListPreference mKeyboardExtendedRowPreference;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        addPreferencesFromResource(R.xml.prefs);

        mQuickFixes = (CheckBoxPreference) findPreference(QUICK_FIXES_KEY);
        //mSettingsKeyPreference = (ListPreference) findPreference(PREF_SETTINGS_KEY);
        mLanguageKeyPreference = (ListPreference) findPreference(PREF_LANGUAGE_KEY);
        mKeyboardLayoutPreference = (ListPreference) findPreference(KEYBOARD_LAYOUT_SETTINGS_KEY);
        mKeyboardTextSizePreference = (ListPreference) findPreference(TEXT_SIZE_SETTINGS_KEY);
        mKeyboardExtendedRowPreference = (ListPreference) findPreference(PREF_EXTENDED_ROW);

        //final PreferenceGroup predictionCategory = (PreferenceGroup) findPreference(CATEGORY_PREDICTION_KEY);
        //predictionCategory.removePreference(findPreference(USED_UNICODE_SETTINGS_KEY));

        SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
        prefs.registerOnSharedPreferenceChangeListener(this);

        //CheckBoxPreference jbFix = (CheckBoxPreference)findPreference("used_jbfix");
        //jbFix.setEnabled(Build.VERSION.SDK_INT > 15);
    }

    @Override
    public void onStart() {
        super.onStart();
        IMESettings.AlertForInstallLocation(getActivity(), null);
    }

    @Override
    public void onResume() {
        super.onResume();
        int autoTextSize = AutoText.getSize(getListView());
        if (autoTextSize < 1) {
            ((PreferenceGroup) findPreference(PREDICTION_SETTINGS_KEY)).removePreference(mQuickFixes);
        }
        //updateSettingsKeySummary();
        updateLanguageKeySummary();
        updateKeyboardLayoutSummary();
        updateTextSizeSummary();
        updateShowExtendedRowSummary();
    }

    @Override
    public void onDestroy() {
        getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
        super.onDestroy();
    }

    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
        (new BackupManager(getActivity())).dataChanged();

        if (key.equals(APPLICATRION_ICON_KEY)) {
            boolean defaultAppIcon = getResources().getBoolean(R.bool.default_application_icon);
            if (prefs.getBoolean(APPLICATRION_ICON_KEY, defaultAppIcon)) {
                KeyboardApp.ShowApplicationIcon(getActivity().getApplicationContext());
            } else {
                KeyboardApp.HideApplicationIcon(getActivity().getApplicationContext());
            }
        }

        updateLanguageKeySummary();
        updateKeyboardLayoutSummary();
        updateTextSizeSummary();
        updateShowExtendedRowSummary();
    }

    private void updateLanguageKeySummary() {
        mLanguageKeyPreference
                .setSummary(getResources().getStringArray(R.array.language_key_modes)[mLanguageKeyPreference
                        .findIndexOfValue(mLanguageKeyPreference.getValue())]);
    }

    private void updateKeyboardLayoutSummary() {
        mKeyboardLayoutPreference
                .setSummary(getResources().getStringArray(R.array.keyboard_layout_modes)[mKeyboardLayoutPreference
                        .findIndexOfValue(mKeyboardLayoutPreference.getValue())]);
    }

    private void updateTextSizeSummary() {
        mKeyboardTextSizePreference.setSummary(
                getResources().getStringArray(R.array.keyboard_text_size_modes)[mKeyboardTextSizePreference
                        .findIndexOfValue(mKeyboardTextSizePreference.getValue())]);
    }

    private void updateShowExtendedRowSummary() {
        mKeyboardExtendedRowPreference.setSummary(getResources()
                .getStringArray(R.array.enabled_extened_row_visibilities)[mKeyboardExtendedRowPreference
                        .findIndexOfValue(mKeyboardExtendedRowPreference.getValue())]);
    }

    // SMM {
    /* package */ static boolean AlertForInstallLocation(Context context,
            DialogInterface.OnDismissListener dismissListener) {
        String pkgPath = context.getPackageCodePath();
        if (pkgPath == null || pkgPath == "") {
            try {
                pkgPath = context.getPackageManager().getApplicationInfo(context.getPackageName(), 0).sourceDir;
            } catch (NameNotFoundException e) {
                e.printStackTrace();
            }
        }

        if (pkgPath != null && !pkgPath.startsWith("/data/app/") && !pkgPath.startsWith("/system/app/")) {

            if (context instanceof Activity) {
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setTitle(context.getText(R.string.alert_installocation_title));
                builder.setMessage(context.getText(R.string.alert_installocation_message));
                builder.setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
                AlertDialog dialog = builder.create();
                if (dismissListener != null)
                    dialog.setOnDismissListener(dismissListener);
                dialog.show();
                return false;
            } else {
                Toast.makeText(context, R.string.alert_installocation_message, Toast.LENGTH_LONG).show();
                return false;
            }
        }
        return true;
    }
    // } SMM
}