Loading src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java 0 → 100644 +44 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 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.settings.inputmethod; import android.content.Context; import androidx.preference.PreferenceScreen; /** * Provider for Keyboard settings related features. */ public interface KeyboardSettingsFeatureProvider { /** * Checks whether the connected device supports firmware update. * * @return true if the connected device supports firmware update. */ boolean supportsFirmwareUpdate(); /** * Add firmware update preference category . * * @param context The context to initialize the application with. * @param screen The {@link PreferenceScreen} to add the firmware update preference category. * * @return true if the category is added successfully. */ boolean addFirmwareUpdateCategory(Context context, PreferenceScreen screen); } src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java 0 → 100644 +37 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 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.settings.inputmethod; import android.content.Context; import androidx.preference.PreferenceScreen; /** * Provider implementation for keyboard settings related features. */ public class KeyboardSettingsFeatureProviderImpl implements KeyboardSettingsFeatureProvider { @Override public boolean supportsFirmwareUpdate() { return false; } @Override public boolean addFirmwareUpdateCategory(Context context, PreferenceScreen screen) { return false; } } src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +12 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import com.android.settings.R; import com.android.settings.Settings; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.core.SubSettingLauncher; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.utils.ThreadUtils; Loading Loading @@ -75,6 +76,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment private InputManager mIm; private InputMethodManager mImm; private InputDeviceIdentifier mAutoInputDeviceIdentifier; private KeyboardSettingsFeatureProvider mFeatureProvider; @NonNull private PreferenceCategory mKeyboardAssistanceCategory; @NonNull Loading @@ -82,6 +84,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment private Intent mIntentWaitingForResult; private boolean mIsNewKeyboardSettings; private boolean mSupportsFirmwareUpdate; static final String EXTRA_BT_ADDRESS = "extra_bt_address"; private String mBluetoothAddress; Loading @@ -104,6 +107,12 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment (SwitchPreference) mKeyboardAssistanceCategory.findPreference( SHOW_VIRTUAL_KEYBOARD_SWITCH)); FeatureFactory featureFactory = FeatureFactory.getFactory(getContext()); mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider(); mSupportsFirmwareUpdate = mFeatureProvider.supportsFirmwareUpdate(); if (mSupportsFirmwareUpdate) { mFeatureProvider.addFirmwareUpdateCategory(getContext(), getPreferenceScreen()); } mIsNewKeyboardSettings = FeatureFlagUtils.isEnabled( getContext(), FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_UI); boolean isModifierKeySettingsEnabled = FeatureFlagUtils Loading Loading @@ -247,6 +256,9 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment } mKeyboardAssistanceCategory.setOrder(1); preferenceScreen.addPreference(mKeyboardAssistanceCategory); if (mSupportsFirmwareUpdate) { mFeatureProvider.addFirmwareUpdateCategory(getPrefContext(), preferenceScreen); } updateShowVirtualKeyboardSwitch(); } Loading src/com/android/settings/overlay/FeatureFactory.java +6 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.settings.fuelgauge.BatteryStatusFeatureProvider; import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.gestures.AssistGestureFeatureProvider; import com.android.settings.homepage.contextualcards.ContextualCardFeatureProvider; import com.android.settings.inputmethod.KeyboardSettingsFeatureProvider; import com.android.settings.localepicker.LocaleFeatureProvider; import com.android.settings.panel.PanelFeatureProvider; import com.android.settings.search.SearchFeatureProvider; Loading Loading @@ -198,6 +199,11 @@ public abstract class FeatureFactory { */ public abstract WifiFeatureProvider getWifiFeatureProvider(); /** * Retrieves implementation for keyboard settings feature. */ public abstract KeyboardSettingsFeatureProvider getKeyboardSettingsFeatureProvider(); public static final class FactoryNotFoundException extends RuntimeException { public FactoryNotFoundException(Throwable throwable) { super("Unable to create factory. Did you misconfigure Proguard?", throwable); Loading src/com/android/settings/overlay/FeatureFactoryImpl.java +11 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ import com.android.settings.gestures.AssistGestureFeatureProvider; import com.android.settings.gestures.AssistGestureFeatureProviderImpl; import com.android.settings.homepage.contextualcards.ContextualCardFeatureProvider; import com.android.settings.homepage.contextualcards.ContextualCardFeatureProviderImpl; import com.android.settings.inputmethod.KeyboardSettingsFeatureProvider; import com.android.settings.inputmethod.KeyboardSettingsFeatureProviderImpl; import com.android.settings.localepicker.LocaleFeatureProvider; import com.android.settings.localepicker.LocaleFeatureProviderImpl; import com.android.settings.panel.PanelFeatureProvider; Loading Loading @@ -114,6 +116,7 @@ public class FeatureFactoryImpl extends FeatureFactory { private AccessibilityMetricsFeatureProvider mAccessibilityMetricsFeatureProvider; private AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider; private WifiFeatureProvider mWifiFeatureProvider; private KeyboardSettingsFeatureProvider mKeyboardSettingsFeatureProvider; @Override public SupportFeatureProvider getSupportFeatureProvider(Context context) { Loading Loading @@ -365,4 +368,12 @@ public class FeatureFactoryImpl extends FeatureFactory { } return mWifiFeatureProvider; } @Override public KeyboardSettingsFeatureProvider getKeyboardSettingsFeatureProvider() { if (mKeyboardSettingsFeatureProvider == null) { mKeyboardSettingsFeatureProvider = new KeyboardSettingsFeatureProviderImpl(); } return mKeyboardSettingsFeatureProvider; } } Loading
src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java 0 → 100644 +44 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 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.settings.inputmethod; import android.content.Context; import androidx.preference.PreferenceScreen; /** * Provider for Keyboard settings related features. */ public interface KeyboardSettingsFeatureProvider { /** * Checks whether the connected device supports firmware update. * * @return true if the connected device supports firmware update. */ boolean supportsFirmwareUpdate(); /** * Add firmware update preference category . * * @param context The context to initialize the application with. * @param screen The {@link PreferenceScreen} to add the firmware update preference category. * * @return true if the category is added successfully. */ boolean addFirmwareUpdateCategory(Context context, PreferenceScreen screen); }
src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java 0 → 100644 +37 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 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.settings.inputmethod; import android.content.Context; import androidx.preference.PreferenceScreen; /** * Provider implementation for keyboard settings related features. */ public class KeyboardSettingsFeatureProviderImpl implements KeyboardSettingsFeatureProvider { @Override public boolean supportsFirmwareUpdate() { return false; } @Override public boolean addFirmwareUpdateCategory(Context context, PreferenceScreen screen) { return false; } }
src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +12 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import com.android.settings.R; import com.android.settings.Settings; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.core.SubSettingLauncher; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.utils.ThreadUtils; Loading Loading @@ -75,6 +76,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment private InputManager mIm; private InputMethodManager mImm; private InputDeviceIdentifier mAutoInputDeviceIdentifier; private KeyboardSettingsFeatureProvider mFeatureProvider; @NonNull private PreferenceCategory mKeyboardAssistanceCategory; @NonNull Loading @@ -82,6 +84,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment private Intent mIntentWaitingForResult; private boolean mIsNewKeyboardSettings; private boolean mSupportsFirmwareUpdate; static final String EXTRA_BT_ADDRESS = "extra_bt_address"; private String mBluetoothAddress; Loading @@ -104,6 +107,12 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment (SwitchPreference) mKeyboardAssistanceCategory.findPreference( SHOW_VIRTUAL_KEYBOARD_SWITCH)); FeatureFactory featureFactory = FeatureFactory.getFactory(getContext()); mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider(); mSupportsFirmwareUpdate = mFeatureProvider.supportsFirmwareUpdate(); if (mSupportsFirmwareUpdate) { mFeatureProvider.addFirmwareUpdateCategory(getContext(), getPreferenceScreen()); } mIsNewKeyboardSettings = FeatureFlagUtils.isEnabled( getContext(), FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_UI); boolean isModifierKeySettingsEnabled = FeatureFlagUtils Loading Loading @@ -247,6 +256,9 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment } mKeyboardAssistanceCategory.setOrder(1); preferenceScreen.addPreference(mKeyboardAssistanceCategory); if (mSupportsFirmwareUpdate) { mFeatureProvider.addFirmwareUpdateCategory(getPrefContext(), preferenceScreen); } updateShowVirtualKeyboardSwitch(); } Loading
src/com/android/settings/overlay/FeatureFactory.java +6 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.settings.fuelgauge.BatteryStatusFeatureProvider; import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.gestures.AssistGestureFeatureProvider; import com.android.settings.homepage.contextualcards.ContextualCardFeatureProvider; import com.android.settings.inputmethod.KeyboardSettingsFeatureProvider; import com.android.settings.localepicker.LocaleFeatureProvider; import com.android.settings.panel.PanelFeatureProvider; import com.android.settings.search.SearchFeatureProvider; Loading Loading @@ -198,6 +199,11 @@ public abstract class FeatureFactory { */ public abstract WifiFeatureProvider getWifiFeatureProvider(); /** * Retrieves implementation for keyboard settings feature. */ public abstract KeyboardSettingsFeatureProvider getKeyboardSettingsFeatureProvider(); public static final class FactoryNotFoundException extends RuntimeException { public FactoryNotFoundException(Throwable throwable) { super("Unable to create factory. Did you misconfigure Proguard?", throwable); Loading
src/com/android/settings/overlay/FeatureFactoryImpl.java +11 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ import com.android.settings.gestures.AssistGestureFeatureProvider; import com.android.settings.gestures.AssistGestureFeatureProviderImpl; import com.android.settings.homepage.contextualcards.ContextualCardFeatureProvider; import com.android.settings.homepage.contextualcards.ContextualCardFeatureProviderImpl; import com.android.settings.inputmethod.KeyboardSettingsFeatureProvider; import com.android.settings.inputmethod.KeyboardSettingsFeatureProviderImpl; import com.android.settings.localepicker.LocaleFeatureProvider; import com.android.settings.localepicker.LocaleFeatureProviderImpl; import com.android.settings.panel.PanelFeatureProvider; Loading Loading @@ -114,6 +116,7 @@ public class FeatureFactoryImpl extends FeatureFactory { private AccessibilityMetricsFeatureProvider mAccessibilityMetricsFeatureProvider; private AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider; private WifiFeatureProvider mWifiFeatureProvider; private KeyboardSettingsFeatureProvider mKeyboardSettingsFeatureProvider; @Override public SupportFeatureProvider getSupportFeatureProvider(Context context) { Loading Loading @@ -365,4 +368,12 @@ public class FeatureFactoryImpl extends FeatureFactory { } return mWifiFeatureProvider; } @Override public KeyboardSettingsFeatureProvider getKeyboardSettingsFeatureProvider() { if (mKeyboardSettingsFeatureProvider == null) { mKeyboardSettingsFeatureProvider = new KeyboardSettingsFeatureProviderImpl(); } return mKeyboardSettingsFeatureProvider; } }