Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit e45df5c9 authored by Tom Marshall's avatar Tom Marshall Committed by Michael Bestas
Browse files

LatinIME: Move keyboard height setting from debug to advanced

Seems stable and useful.

Note the resize keyboard preference that enables changing the keyboard
height is removed, as it needlessly complicates the settings screen.

Change-Id: I74a3dfca4f75eb5b15a05641c0929f28d0a66967
parent a7a98452
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -28,4 +28,7 @@ disposition rather than other common dispositions for Latin languages. [CHAR LIM
    <string name="subtype_hu_ZZ">Hungarian (QWERTY)</string>

    <string name="keyboard_theme_follow_system">Follow system settings</string>

    <!-- Title of the settings for setting keyboard height -->
    <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
</resources>
+0 −2
Original line number Diff line number Diff line
@@ -43,8 +43,6 @@
    <string name="prefs_key_popup_dismiss_end_y_scale_settings">Key popup dismiss end Y scale</string>
    <!-- Title of the settings to enable keyboard resizing -->
    <string name="prefs_resize_keyboard">Enable keyboard resizing</string>
    <!-- Title of the settings for setting keyboard height -->
    <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
    <!-- Title of the settings group for dumpping dictionary files that have been created on the device [CHAR LIMIT=35] -->
    <string name="prefs_dump_dynamic_dicts">Dump dictionary</string>
</resources>
+5 −0
Original line number Diff line number Diff line
@@ -48,6 +48,11 @@
        android:title="@string/show_setup_wizard_icon"
        android:summary="@string/show_setup_wizard_icon_summary"
        android:persistent="true" />
    <com.android.inputmethod.latin.settings.SeekBarDialogPreference
        android:key="pref_keyboard_height_scale"
        android:title="@string/prefs_keyboard_height_scale"
        latin:minValue="50"
        latin:maxValue="120" /> <!-- percentage -->
    <PreferenceScreen
        android:fragment="com.android.inputmethod.latin.settings.DebugSettingsFragment"
        android:key="screen_debug"
+0 −11
Original line number Diff line number Diff line
@@ -76,17 +76,6 @@
        android:key="pref_key_preview_dismiss_duration"
        android:title="@string/prefs_key_popup_dismiss_duration_settings"
        latin:maxValue="100" /> <!-- milliseconds -->
    <CheckBoxPreference
        android:key="pref_resize_keyboard"
        android:title="@string/prefs_resize_keyboard"
        android:defaultValue="false"
        android:persistent="true" />
    <com.android.inputmethod.latin.settings.SeekBarDialogPreference
        android:dependency="pref_resize_keyboard"
        android:key="pref_keyboard_height_scale"
        android:title="@string/prefs_keyboard_height_scale"
        latin:minValue="50"
        latin:maxValue="120" /> <!-- percentage -->
    <PreferenceCategory
        android:key="pref_key_dump_dictionaries"
        android:title="@string/prefs_dump_dynamic_dicts">
+50 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SystemBroadcastReceiver;
import com.android.inputmethod.latin.define.ProductionFlags;

import java.util.Locale;

/**
 * "Advanced" settings sub screen.
 *
@@ -41,6 +43,7 @@ import com.android.inputmethod.latin.define.ProductionFlags;
 * - Debug settings
 */
public final class AdvancedSettingsFragment extends SubScreenFragment {
    public static final String PREF_KEYBOARD_HEIGHT_SCALE = "pref_keyboard_height_scale";
    @Override
    public void onCreate(final Bundle icicle) {
        super.onCreate(icicle);
@@ -91,6 +94,8 @@ public final class AdvancedSettingsFragment extends SubScreenFragment {
        setupKeypressVibrationDurationSettings();
        setupKeypressSoundVolumeSettings();
        setupKeyLongpressTimeoutSettings();
        setupKeyboardHeight(
                Settings.PREF_KEYBOARD_HEIGHT_SCALE, SettingsValues.DEFAULT_SIZE_SCALE);
        refreshEnablingsOfKeypressSoundAndVibrationSettings();
    }

@@ -257,6 +262,51 @@ public final class AdvancedSettingsFragment extends SubScreenFragment {
                return res.getString(R.string.abbreviation_unit_milliseconds, value);
            }

            @Override
            public void feedbackValue(final int value) {}
        });
    }
    private void setupKeyboardHeight(final String prefKey, final float defaultValue) {
        final SharedPreferences prefs = getSharedPreferences();
        final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(prefKey);
        if (pref == null) {
            return;
        }
        pref.setInterface(new SeekBarDialogPreference.ValueProxy() {
            private static final float PERCENTAGE_FLOAT = 100.0f;
            private float getValueFromPercentage(final int percentage) {
                return percentage / PERCENTAGE_FLOAT;
            }

            private int getPercentageFromValue(final float floatValue) {
                return (int)(floatValue * PERCENTAGE_FLOAT);
            }

            @Override
            public void writeValue(final int value, final String key) {
                prefs.edit().putFloat(key, getValueFromPercentage(value)).apply();
            }

            @Override
            public void writeDefaultValue(final String key) {
                prefs.edit().remove(key).apply();
            }

            @Override
            public int readValue(final String key) {
                return getPercentageFromValue(Settings.readKeyboardHeight(prefs, defaultValue));
            }

            @Override
            public int readDefaultValue(final String key) {
                return getPercentageFromValue(defaultValue);
            }

            @Override
            public String getValueText(final int value) {
                return String.format(Locale.ROOT, "%d%%", value);
            }

            @Override
            public void feedbackValue(final int value) {}
        });
Loading