move toolbar preferences to a separate fragment

with 2 more settings coming soon this is probably justified
This commit is contained in:
Helium314 2024-05-28 22:02:31 +02:00
parent 388366c242
commit f8a2e2adcc
8 changed files with 127 additions and 48 deletions

View file

@ -24,7 +24,6 @@ import helium314.keyboard.latin.utils.DialogUtilsKt;
import helium314.keyboard.latin.utils.PopupKeysUtilsKt; import helium314.keyboard.latin.utils.PopupKeysUtilsKt;
import helium314.keyboard.latin.utils.SubtypeSettingsKt; import helium314.keyboard.latin.utils.SubtypeSettingsKt;
import helium314.keyboard.latin.utils.SubtypeUtilsKt; import helium314.keyboard.latin.utils.SubtypeUtilsKt;
import helium314.keyboard.latin.utils.ToolbarUtilsKt;
import kotlin.collections.ArraysKt; import kotlin.collections.ArraysKt;
@ -37,7 +36,6 @@ public final class PreferencesSettingsFragment extends SubScreenFragment {
super.onCreate(icicle); super.onCreate(icicle);
addPreferencesFromResource(R.xml.prefs_screen_preferences); addPreferencesFromResource(R.xml.prefs_screen_preferences);
final Resources res = getResources();
final Context context = getActivity(); final Context context = getActivity();
// When we are called from the Settings application but we are not already running, some // When we are called from the Settings application but we are not already running, some
@ -66,21 +64,6 @@ public final class PreferencesSettingsFragment extends SubScreenFragment {
PopupKeysUtilsKt.POPUP_KEYS_LABEL_DEFAULT, R.string.hint_source, (x) -> null); PopupKeysUtilsKt.POPUP_KEYS_LABEL_DEFAULT, R.string.hint_source, (x) -> null);
return true; return true;
}); });
findPreference(Settings.PREF_TOOLBAR_KEYS).setOnPreferenceClickListener((pref) -> {
DialogUtilsKt.reorderDialog(requireContext(), Settings.PREF_TOOLBAR_KEYS, ToolbarUtilsKt.getDefaultToolbarPref(),
R.string.toolbar_keys, (name) -> ToolbarUtilsKt.getToolbarIconByName(name, requireContext()));
return true;
});
findPreference(Settings.PREF_PINNED_TOOLBAR_KEYS).setOnPreferenceClickListener((pref) -> {
DialogUtilsKt.reorderDialog(requireContext(), Settings.PREF_PINNED_TOOLBAR_KEYS, ToolbarUtilsKt.getDefaultPinnedToolbarPref(),
R.string.pinned_toolbar_keys, (name) -> ToolbarUtilsKt.getToolbarIconByName(name, requireContext()));
return true;
});
findPreference(Settings.PREF_CLIPBOARD_TOOLBAR_KEYS).setOnPreferenceClickListener((pref) -> {
DialogUtilsKt.reorderDialog(requireContext(), Settings.PREF_CLIPBOARD_TOOLBAR_KEYS, ToolbarUtilsKt.getDefaultClipboardToolbarPref(),
R.string.clipboard_toolbar_keys, (name) -> ToolbarUtilsKt.getToolbarIconByName(name, requireContext()));
return true;
});
} }
@Override @Override
@ -94,9 +77,7 @@ public final class PreferencesSettingsFragment extends SubScreenFragment {
if (key == null) return; if (key == null) return;
switch (key) { switch (key) {
case Settings.PREF_POPUP_KEYS_ORDER, Settings.PREF_SHOW_POPUP_HINTS, Settings.PREF_SHOW_NUMBER_ROW, case Settings.PREF_POPUP_KEYS_ORDER, Settings.PREF_SHOW_POPUP_HINTS, Settings.PREF_SHOW_NUMBER_ROW,
Settings.PREF_POPUP_KEYS_LABELS_ORDER, Settings.PREF_TOOLBAR_KEYS, Settings.PREF_CLIPBOARD_TOOLBAR_KEYS, Settings.PREF_POPUP_KEYS_LABELS_ORDER -> mReloadKeyboard = true;
Settings.PREF_PINNED_TOOLBAR_KEYS, Settings.PREF_QUICK_PIN_TOOLBAR_KEYS
-> mReloadKeyboard = true;
case Settings.PREF_LOCALIZED_NUMBER_ROW -> KeyboardLayoutSet.onSystemLocaleChanged(); case Settings.PREF_LOCALIZED_NUMBER_ROW -> KeyboardLayoutSet.onSystemLocaleChanged();
case Settings.PREF_SHOW_HINTS case Settings.PREF_SHOW_HINTS
-> findPreference(Settings.PREF_POPUP_KEYS_LABELS_ORDER).setVisible(prefs.getBoolean(Settings.PREF_SHOW_HINTS, false)); -> findPreference(Settings.PREF_POPUP_KEYS_LABELS_ORDER).setVisible(prefs.getBoolean(Settings.PREF_SHOW_HINTS, false));

View file

@ -0,0 +1,61 @@
package helium314.keyboard.latin.settings
import android.content.SharedPreferences
import android.os.Bundle
import androidx.preference.Preference
import helium314.keyboard.keyboard.KeyboardSwitcher
import helium314.keyboard.latin.R
import helium314.keyboard.latin.utils.defaultClipboardToolbarPref
import helium314.keyboard.latin.utils.defaultPinnedToolbarPref
import helium314.keyboard.latin.utils.defaultToolbarPref
import helium314.keyboard.latin.utils.getToolbarIconByName
import helium314.keyboard.latin.utils.reorderDialog
class ToolbarSettingsFragment : SubScreenFragment() {
private var reloadKeyboard = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
addPreferencesFromResource(R.xml.prefs_screen_toolbar)
findPreference<Preference>(Settings.PREF_TOOLBAR_KEYS)?.onPreferenceClickListener =
Preference.OnPreferenceClickListener {
reorderDialog(
requireContext(), Settings.PREF_TOOLBAR_KEYS, defaultToolbarPref,
R.string.toolbar_keys
) { getToolbarIconByName(it, requireContext()) }
true
}
findPreference<Preference>(Settings.PREF_PINNED_TOOLBAR_KEYS)?.onPreferenceClickListener =
Preference.OnPreferenceClickListener {
reorderDialog(
requireContext(), Settings.PREF_PINNED_TOOLBAR_KEYS, defaultPinnedToolbarPref,
R.string.pinned_toolbar_keys
) { getToolbarIconByName(it, requireContext()) }
true
}
findPreference<Preference>(Settings.PREF_CLIPBOARD_TOOLBAR_KEYS)?.onPreferenceClickListener =
Preference.OnPreferenceClickListener {
reorderDialog(
requireContext(), Settings.PREF_CLIPBOARD_TOOLBAR_KEYS, defaultClipboardToolbarPref,
R.string.clipboard_toolbar_keys
) { getToolbarIconByName(it, requireContext()) }
true
}
}
override fun onPause() {
super.onPause()
if (reloadKeyboard)
KeyboardSwitcher.getInstance().forceUpdateKeyboardTheme(requireContext())
reloadKeyboard = false
}
override fun onSharedPreferenceChanged(prefs: SharedPreferences, key: String?) {
if (key == null) return
when (key) {
Settings.PREF_TOOLBAR_KEYS, Settings.PREF_CLIPBOARD_TOOLBAR_KEYS, Settings.PREF_PINNED_TOOLBAR_KEYS,
Settings.PREF_QUICK_PIN_TOOLBAR_KEYS -> reloadKeyboard = true
}
}
}

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:inset="@dimen/settings_screen_icon_inset"
android:drawable="@drawable/ic_settings_toolbar_foreground"/>

View file

@ -0,0 +1,13 @@
<!--
icon available in Android Studio
SPDX-License-Identifier: Apache-2.0
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="40dp"
android:width="40dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@color/foreground"
android:pathData="M8.59,16.59L13.17,12 8.59,7.41 10,6l6,6 -6,6 -1.41,-1.41z"/>
</vector>

View file

@ -756,8 +756,10 @@ New dictionary:
<string name="text_tap_languages">Tap the language to open settings</string> <string name="text_tap_languages">Tap the language to open settings</string>
<!-- Title of internal InputMethodPicker, strings should be same as the ones from Android system --> <!-- Title of internal InputMethodPicker, strings should be same as the ones from Android system -->
<string name="select_input_method">Choose input method</string> <string name="select_input_method">Choose input method</string>
<!-- Settings screen title for appearance preferences [CHAR LIMIT=33] --> <!-- Settings screen title for appearance preferences -->
<string name="settings_screen_appearance">"Appearance"</string> <string name="settings_screen_appearance">Appearance</string>
<!-- Settings screen title for toolbar preferences -->
<string name="settings_screen_toolbar">Toolbar</string>
<!-- Hidden features title --> <!-- Hidden features title -->
<string name="hidden_features_title">Description of hidden features</string> <string name="hidden_features_title">Description of hidden features</string>
<!-- Hidden features summary --> <!-- Hidden features summary -->

View file

@ -25,6 +25,12 @@
android:key="screen_appearance" android:key="screen_appearance"
android:icon="@drawable/ic_settings_appearance" android:icon="@drawable/ic_settings_appearance"
latin:singleLineTitle="false" /> latin:singleLineTitle="false" />
<PreferenceScreen
android:fragment="helium314.keyboard.latin.settings.ToolbarSettingsFragment"
android:title="@string/settings_screen_toolbar"
android:key="screen_toolbar"
android:icon="@drawable/ic_settings_toolbar"
latin:singleLineTitle="false" />
<PreferenceScreen <PreferenceScreen
android:fragment="helium314.keyboard.latin.settings.GestureSettingsFragment" android:fragment="helium314.keyboard.latin.settings.GestureSettingsFragment"
android:title="@string/settings_screen_gesture" android:title="@string/settings_screen_gesture"

View file

@ -95,32 +95,6 @@
android:defaultValue="false" android:defaultValue="false"
android:persistent="true" /> android:persistent="true" />
<Preference
android:key="toolbar_keys"
android:title="@string/toolbar_keys" />
<Preference
android:key="pinned_toolbar_keys"
android:title="@string/pinned_toolbar_keys" />
<Preference
android:key="clipboard_toolbar_keys"
android:title="@string/clipboard_toolbar_keys" />
<SwitchPreference
android:key="quick_pin_toolbar_keys"
android:title="@string/quick_pin_toolbar_keys"
android:summary="@string/quick_pin_toolbar_keys_summary"
android:defaultValue="false"
android:persistent="true" />
<SwitchPreference
android:key="var_toolbar_direction"
android:title="@string/var_toolbar_direction"
android:summary="@string/var_toolbar_direction_summary"
android:defaultValue="true"
android:persistent="true" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="@string/settings_category_clipboard_history"> <PreferenceCategory android:title="@string/settings_category_clipboard_history">

View file

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2014 The Android Open Source Project
modified
SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/settings_screen_toolbar"
android:key="screen_toolbar">
<Preference
android:key="toolbar_keys"
android:title="@string/toolbar_keys" />
<Preference
android:key="pinned_toolbar_keys"
android:title="@string/pinned_toolbar_keys" />
<Preference
android:key="clipboard_toolbar_keys"
android:title="@string/clipboard_toolbar_keys" />
<SwitchPreference
android:key="quick_pin_toolbar_keys"
android:title="@string/quick_pin_toolbar_keys"
android:summary="@string/quick_pin_toolbar_keys_summary"
android:defaultValue="false"
android:persistent="true" />
<SwitchPreference
android:key="var_toolbar_direction"
android:title="@string/var_toolbar_direction"
android:summary="@string/var_toolbar_direction_summary"
android:defaultValue="true"
android:persistent="true" />
</PreferenceScreen>