Java tutorial
/* * 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 }