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

Commit 80d99417 authored by Michael W's avatar Michael W
Browse files

Settings: Hide physical keyboard settings when no phys. keyboard exists

* Instead of showing settings which are useless, make them dependent on
  availability of a hardware keyboard

Change-Id: Ib9bd30d1445b59fb34540dcc1f3dbe5aa6e1d91e
parent 2185fbc8
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -631,7 +631,8 @@
            android:label="@string/language_keyboard_settings_title"
            android:icon="@drawable/ic_settings_language"
            android:taskAffinity="com.android.settings"
            android:parentActivityName="Settings">
            android:parentActivityName="Settings"
            android:configChanges="keyboard|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.VOICE_LAUNCH" />
+1 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@
            android:title="@string/virtual_keyboard_category"
            android:fragment="com.android.settings.inputmethod.VirtualKeyboardFragment" />
        <PreferenceScreen
            android:key="physical_keyboard"
            android:title="@string/physical_keyboard_title"
            android:fragment="com.android.settings.inputmethod.PhysicalKeyboardFragment" />

+20 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
    private static final String KEY_CURRENT_INPUT_METHOD = "current_input_method";
    private static final String KEY_USER_DICTIONARY_SETTINGS = "key_user_dictionary_settings";
    private static final String KEY_PREVIOUSLY_ENABLED_SUBTYPES = "previously_enabled_subtypes";
    private static final String KEY_PHYSICAL_KEYBOARD = "physical_keyboard";

    private PreferenceCategory mGameControllerCategory;
    private Preference mLanguagePref;
@@ -95,6 +96,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
    private Intent mIntentWaitingForResult;
    private InputMethodSettingValuesWrapper mInputMethodSettingValues;

    private PreferenceScreen mPhysicalKeyboard;

    @Override
    protected int getMetricsCategory() {
        return MetricsEvent.INPUTMETHOD_LANGUAGE;
@@ -160,6 +163,15 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
            showKeyboardLayoutDialog(identifier);
        }
        updateCurrentImeName();

        mPhysicalKeyboard = (PreferenceScreen) findPreference(KEY_PHYSICAL_KEYBOARD);
        if (mPhysicalKeyboard != null) {
            mPhysicalKeyboard.setVisible(hasHardwareKeyboard());
        }
    }

    private boolean hasHardwareKeyboard() {
        return getResources().getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS;
    }

    private void updateUserDictionaryPreference(Preference userDictionaryPreference) {
@@ -441,6 +453,14 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
        return false;
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (mPhysicalKeyboard != null) {
            boolean visible = newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO;
            mPhysicalKeyboard.setVisible(visible);
        }
    }

    private class SettingsObserver extends ContentObserver {
        private Context mContext;