diff options
author | 2024-12-16 21:45:41 -0500 | |
---|---|---|
committer | 2025-01-11 14:17:35 -0500 | |
commit | e9a0e66716dab4dd3184d009d8920de1961efdfa (patch) | |
tree | 02dcc096643d74645bf28459c2834c3d4a2ad7f2 /java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java | |
parent | fb3b9360d70596d7e921de8bf7d3ca99564a077e (diff) | |
download | latinime-e9a0e66716dab4dd3184d009d8920de1961efdfa.tar.gz latinime-e9a0e66716dab4dd3184d009d8920de1961efdfa.tar.xz latinime-e9a0e66716dab4dd3184d009d8920de1961efdfa.zip |
Rename to Kelar Keyboard (org.kelar.inputmethod.latin)
Diffstat (limited to 'java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java | 318 |
1 files changed, 0 insertions, 318 deletions
diff --git a/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java deleted file mode 100644 index 56e8f1623..000000000 --- a/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java +++ /dev/null @@ -1,318 +0,0 @@ -/* - * Copyright (C) 2012 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.android.inputmethod.latin.settings; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.res.Resources; -import android.os.Bundle; -import android.preference.Preference; -import android.preference.PreferenceFragment; -import android.preference.PreferenceGroup; -import androidx.core.view.ViewCompat; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.view.inputmethod.InputMethodSubtype; -import android.widget.Toast; - -import com.android.inputmethod.latin.R; -import com.android.inputmethod.latin.RichInputMethodManager; -import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils; -import com.android.inputmethod.latin.utils.DialogUtils; -import com.android.inputmethod.latin.utils.IntentUtils; -import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; - -import java.util.ArrayList; - -public final class CustomInputStyleSettingsFragment extends PreferenceFragment - implements CustomInputStylePreference.Listener { - private static final String TAG = CustomInputStyleSettingsFragment.class.getSimpleName(); - // Note: We would like to turn this debug flag true in order to see what input styles are - // defined in a bug-report. - private static final boolean DEBUG_CUSTOM_INPUT_STYLES = true; - - private RichInputMethodManager mRichImm; - private SharedPreferences mPrefs; - private CustomInputStylePreference.SubtypeLocaleAdapter mSubtypeLocaleAdapter; - private CustomInputStylePreference.KeyboardLayoutSetAdapter mKeyboardLayoutSetAdapter; - - private boolean mIsAddingNewSubtype; - private AlertDialog mSubtypeEnablerNotificationDialog; - private String mSubtypePreferenceKeyForSubtypeEnabler; - - private static final String KEY_IS_ADDING_NEW_SUBTYPE = "is_adding_new_subtype"; - private static final String KEY_IS_SUBTYPE_ENABLER_NOTIFICATION_DIALOG_OPEN = - "is_subtype_enabler_notification_dialog_open"; - private static final String KEY_SUBTYPE_FOR_SUBTYPE_ENABLER = "subtype_for_subtype_enabler"; - - public CustomInputStyleSettingsFragment() { - // Empty constructor for fragment generation. - } - - static void updateCustomInputStylesSummary(final Preference pref) { - // When we are called from the Settings application but we are not already running, some - // singleton and utility classes may not have been initialized. We have to call - // initialization method of these classes here. See {@link LatinIME#onCreate()}. - SubtypeLocaleUtils.init(pref.getContext()); - - final Resources res = pref.getContext().getResources(); - final SharedPreferences prefs = pref.getSharedPreferences(); - final String prefSubtype = Settings.readPrefAdditionalSubtypes(prefs, res); - final InputMethodSubtype[] subtypes = - AdditionalSubtypeUtils.createAdditionalSubtypesArray(prefSubtype); - final ArrayList<String> subtypeNames = new ArrayList<>(); - for (final InputMethodSubtype subtype : subtypes) { - subtypeNames.add(SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(subtype)); - } - // TODO: A delimiter of custom input styles should be localized. - pref.setSummary(TextUtils.join(", ", subtypeNames)); - } - - @Override - public void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - mPrefs = getPreferenceManager().getSharedPreferences(); - RichInputMethodManager.init(getActivity()); - mRichImm = RichInputMethodManager.getInstance(); - addPreferencesFromResource(R.xml.additional_subtype_settings); - setHasOptionsMenu(true); - } - - @Override - public View onCreateView(final LayoutInflater inflater, final ViewGroup container, - final Bundle savedInstanceState) { - final View view = super.onCreateView(inflater, container, savedInstanceState); - // For correct display in RTL locales, we need to set the layout direction of the - // fragment's top view. - ViewCompat.setLayoutDirection(view, ViewCompat.LAYOUT_DIRECTION_LOCALE); - return view; - } - - @Override - public void onActivityCreated(final Bundle savedInstanceState) { - final Context context = getActivity(); - mSubtypeLocaleAdapter = new CustomInputStylePreference.SubtypeLocaleAdapter(context); - mKeyboardLayoutSetAdapter = - new CustomInputStylePreference.KeyboardLayoutSetAdapter(context); - - final String prefSubtypes = - Settings.readPrefAdditionalSubtypes(mPrefs, getResources()); - if (DEBUG_CUSTOM_INPUT_STYLES) { - Log.i(TAG, "Load custom input styles: " + prefSubtypes); - } - setPrefSubtypes(prefSubtypes, context); - - mIsAddingNewSubtype = (savedInstanceState != null) - && savedInstanceState.containsKey(KEY_IS_ADDING_NEW_SUBTYPE); - if (mIsAddingNewSubtype) { - getPreferenceScreen().addPreference( - CustomInputStylePreference.newIncompleteSubtypePreference(context, this)); - } - - super.onActivityCreated(savedInstanceState); - - if (savedInstanceState != null && savedInstanceState.containsKey( - KEY_IS_SUBTYPE_ENABLER_NOTIFICATION_DIALOG_OPEN)) { - mSubtypePreferenceKeyForSubtypeEnabler = savedInstanceState.getString( - KEY_SUBTYPE_FOR_SUBTYPE_ENABLER); - mSubtypeEnablerNotificationDialog = createDialog(); - mSubtypeEnablerNotificationDialog.show(); - } - } - - @Override - public void onSaveInstanceState(final Bundle outState) { - super.onSaveInstanceState(outState); - if (mIsAddingNewSubtype) { - outState.putBoolean(KEY_IS_ADDING_NEW_SUBTYPE, true); - } - if (mSubtypeEnablerNotificationDialog != null - && mSubtypeEnablerNotificationDialog.isShowing()) { - outState.putBoolean(KEY_IS_SUBTYPE_ENABLER_NOTIFICATION_DIALOG_OPEN, true); - outState.putString( - KEY_SUBTYPE_FOR_SUBTYPE_ENABLER, mSubtypePreferenceKeyForSubtypeEnabler); - } - } - - @Override - public void onRemoveCustomInputStyle(final CustomInputStylePreference stylePref) { - mIsAddingNewSubtype = false; - final PreferenceGroup group = getPreferenceScreen(); - group.removePreference(stylePref); - mRichImm.setAdditionalInputMethodSubtypes(getSubtypes()); - } - - @Override - public void onSaveCustomInputStyle(final CustomInputStylePreference stylePref) { - final InputMethodSubtype subtype = stylePref.getSubtype(); - if (!stylePref.hasBeenModified()) { - return; - } - if (findDuplicatedSubtype(subtype) == null) { - mRichImm.setAdditionalInputMethodSubtypes(getSubtypes()); - return; - } - - // Saved subtype is duplicated. - final PreferenceGroup group = getPreferenceScreen(); - group.removePreference(stylePref); - stylePref.revert(); - group.addPreference(stylePref); - showSubtypeAlreadyExistsToast(subtype); - } - - @Override - public void onAddCustomInputStyle(final CustomInputStylePreference stylePref) { - mIsAddingNewSubtype = false; - final InputMethodSubtype subtype = stylePref.getSubtype(); - if (findDuplicatedSubtype(subtype) == null) { - mRichImm.setAdditionalInputMethodSubtypes(getSubtypes()); - mSubtypePreferenceKeyForSubtypeEnabler = stylePref.getKey(); - mSubtypeEnablerNotificationDialog = createDialog(); - mSubtypeEnablerNotificationDialog.show(); - return; - } - - // Newly added subtype is duplicated. - final PreferenceGroup group = getPreferenceScreen(); - group.removePreference(stylePref); - showSubtypeAlreadyExistsToast(subtype); - } - - @Override - public CustomInputStylePreference.SubtypeLocaleAdapter getSubtypeLocaleAdapter() { - return mSubtypeLocaleAdapter; - } - - @Override - public CustomInputStylePreference.KeyboardLayoutSetAdapter getKeyboardLayoutSetAdapter() { - return mKeyboardLayoutSetAdapter; - } - - private void showSubtypeAlreadyExistsToast(final InputMethodSubtype subtype) { - final Context context = getActivity(); - final Resources res = context.getResources(); - final String message = res.getString(R.string.custom_input_style_already_exists, - SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(subtype)); - Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); - } - - private InputMethodSubtype findDuplicatedSubtype(final InputMethodSubtype subtype) { - final String localeString = subtype.getLocale(); - final String keyboardLayoutSetName = SubtypeLocaleUtils.getKeyboardLayoutSetName(subtype); - return mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet( - localeString, keyboardLayoutSetName); - } - - private AlertDialog createDialog() { - final String imeId = mRichImm.getInputMethodIdOfThisIme(); - final AlertDialog.Builder builder = new AlertDialog.Builder( - DialogUtils.getPlatformDialogThemeContext(getActivity())); - builder.setTitle(R.string.custom_input_styles_title) - .setMessage(R.string.custom_input_style_note_message) - .setNegativeButton(R.string.not_now, null) - .setPositiveButton(R.string.enable, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - final Intent intent = IntentUtils.getInputLanguageSelectionIntent( - imeId, - Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED - | Intent.FLAG_ACTIVITY_CLEAR_TOP); - // TODO: Add newly adding subtype to extra value of the intent as a hint - // for the input language selection activity. - // intent.putExtra("newlyAddedSubtype", subtypePref.getSubtype()); - startActivity(intent); - } - }); - - return builder.create(); - } - - private void setPrefSubtypes(final String prefSubtypes, final Context context) { - final PreferenceGroup group = getPreferenceScreen(); - group.removeAll(); - final InputMethodSubtype[] subtypesArray = - AdditionalSubtypeUtils.createAdditionalSubtypesArray(prefSubtypes); - for (final InputMethodSubtype subtype : subtypesArray) { - final CustomInputStylePreference pref = - new CustomInputStylePreference(context, subtype, this); - group.addPreference(pref); - } - } - - private InputMethodSubtype[] getSubtypes() { - final PreferenceGroup group = getPreferenceScreen(); - final ArrayList<InputMethodSubtype> subtypes = new ArrayList<>(); - final int count = group.getPreferenceCount(); - for (int i = 0; i < count; i++) { - final Preference pref = group.getPreference(i); - if (pref instanceof CustomInputStylePreference) { - final CustomInputStylePreference subtypePref = (CustomInputStylePreference)pref; - // We should not save newly adding subtype to preference because it is incomplete. - if (subtypePref.isIncomplete()) continue; - subtypes.add(subtypePref.getSubtype()); - } - } - return subtypes.toArray(new InputMethodSubtype[subtypes.size()]); - } - - @Override - public void onPause() { - super.onPause(); - final String oldSubtypes = Settings.readPrefAdditionalSubtypes(mPrefs, getResources()); - final InputMethodSubtype[] subtypes = getSubtypes(); - final String prefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes(subtypes); - if (DEBUG_CUSTOM_INPUT_STYLES) { - Log.i(TAG, "Save custom input styles: " + prefSubtypes); - } - if (prefSubtypes.equals(oldSubtypes)) { - return; - } - Settings.writePrefAdditionalSubtypes(mPrefs, prefSubtypes); - mRichImm.setAdditionalInputMethodSubtypes(subtypes); - } - - @Override - public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) { - inflater.inflate(R.menu.add_style, menu); - } - - @Override - public boolean onOptionsItemSelected(final MenuItem item) { - final int itemId = item.getItemId(); - if (itemId == R.id.action_add_style) { - final CustomInputStylePreference newSubtype = - CustomInputStylePreference.newIncompleteSubtypePreference(getActivity(), this); - getPreferenceScreen().addPreference(newSubtype); - newSubtype.show(); - mIsAddingNewSubtype = true; - return true; - } - return super.onOptionsItemSelected(item); - } -} |