Skip to content

Commit dd62674

Browse files
committed
#1652 feat: Bring back the menu button to show input method picker
1 parent b0adf0d commit dd62674

7 files changed

Lines changed: 33 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
## [3.0.1](https://github.com/sds100/KeyMapper/releases/tag/v3.0.1)
22

3+
#### TO BE RELEASED
4+
5+
## Added
6+
7+
- #1652 Bring back the menu button to show input method picker
8+
39
## Changed
410

511
- #1654 The Key Mapper keyboard is now required again for Text actions because the accessibility service API does not work in all situations.

app/src/main/java/io/github/sds100/keymapper/home/HomeKeyMapListScreen.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ fun HomeKeyMapListScreen(
188188
onHelpClick = { uriHandler.openUriSafe(ctx, helpUrl) },
189189
onExportClick = viewModel::onExportClick,
190190
onImportClick = { importFileLauncher.launch(FileUtils.MIME_TYPE_ALL) },
191+
onInputMethodPickerClick = viewModel::showInputMethodPicker,
191192
onTogglePausedClick = viewModel::onTogglePausedClick,
192193
onFixWarningClick = viewModel::onFixWarningClick,
193194
onBackClick = {

app/src/main/java/io/github/sds100/keymapper/home/HomeViewModel.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import io.github.sds100.keymapper.mappings.keymaps.ListKeyMapsUseCase
1919
import io.github.sds100.keymapper.mappings.keymaps.trigger.SetupGuiKeyboardUseCase
2020
import io.github.sds100.keymapper.onboarding.OnboardingUseCase
2121
import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase
22+
import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase
2223
import io.github.sds100.keymapper.util.ui.DialogResponse
2324
import io.github.sds100.keymapper.util.ui.NavigationViewModel
2425
import io.github.sds100.keymapper.util.ui.NavigationViewModelImpl
@@ -48,6 +49,7 @@ class HomeViewModel(
4849
private val setupGuiKeyboard: SetupGuiKeyboardUseCase,
4950
private val sortKeyMaps: SortKeyMapsUseCase,
5051
private val listFloatingLayouts: ListFloatingLayoutsUseCase,
52+
private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase,
5153
) : ViewModel(),
5254
ResourceProvider by resourceProvider,
5355
PopupViewModel by PopupViewModelImpl(),
@@ -78,6 +80,7 @@ class HomeViewModel(
7880
showAlertsUseCase,
7981
pauseKeyMaps,
8082
backupRestore,
83+
showInputMethodPickerUseCase,
8184
)
8285
}
8386

@@ -186,6 +189,7 @@ class HomeViewModel(
186189
private val setupGuiKeyboard: SetupGuiKeyboardUseCase,
187190
private val sortKeyMaps: SortKeyMapsUseCase,
188191
private val listFloatingLayouts: ListFloatingLayoutsUseCase,
192+
private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase,
189193
) : ViewModelProvider.NewInstanceFactory() {
190194

191195
override fun <T : ViewModel> create(modelClass: Class<T>): T = HomeViewModel(
@@ -198,6 +202,7 @@ class HomeViewModel(
198202
setupGuiKeyboard,
199203
sortKeyMaps,
200204
listFloatingLayouts,
205+
showInputMethodPickerUseCase,
201206
) as T
202207
}
203208
}

app/src/main/java/io/github/sds100/keymapper/home/KeyMapListAppBar.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import androidx.compose.material.icons.rounded.Edit
4242
import androidx.compose.material.icons.rounded.ErrorOutline
4343
import androidx.compose.material.icons.rounded.Info
4444
import androidx.compose.material.icons.rounded.IosShare
45+
import androidx.compose.material.icons.rounded.Keyboard
4546
import androidx.compose.material.icons.rounded.MoreVert
4647
import androidx.compose.material.icons.rounded.PauseCircleOutline
4748
import androidx.compose.material.icons.rounded.PlayCircleOutline
@@ -122,6 +123,7 @@ fun KeyMapListAppBar(
122123
onFixWarningClick: (String) -> Unit = {},
123124
onExportClick: () -> Unit = {},
124125
onImportClick: () -> Unit = {},
126+
onInputMethodPickerClick: () -> Unit = {},
125127
onBackClick: () -> Unit = {},
126128
onSelectAllClick: () -> Unit = {},
127129
scrollBehavior: TopAppBarScrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(),
@@ -186,6 +188,10 @@ fun KeyMapListAppBar(
186188
expandedDropdown = false
187189
onImportClick()
188190
},
191+
onInputMethodPickerClick = {
192+
expandedDropdown = false
193+
onInputMethodPickerClick()
194+
},
189195
onDismissRequest = { expandedDropdown = false },
190196
)
191197
},
@@ -827,6 +833,7 @@ private fun RootGroupDropdownMenu(
827833
onAboutClick: () -> Unit = {},
828834
onExportClick: () -> Unit = {},
829835
onImportClick: () -> Unit = {},
836+
onInputMethodPickerClick: () -> Unit = {},
830837
onDismissRequest: () -> Unit = {},
831838
) {
832839
DropdownMenu(
@@ -848,6 +855,11 @@ private fun RootGroupDropdownMenu(
848855
text = { Text(stringResource(R.string.home_menu_import)) },
849856
onClick = onImportClick,
850857
)
858+
DropdownMenuItem(
859+
leadingIcon = { Icon(Icons.Rounded.Keyboard, contentDescription = null) },
860+
text = { Text(stringResource(R.string.home_menu_input_method_picker)) },
861+
onClick = onInputMethodPickerClick,
862+
)
851863
DropdownMenuItem(
852864
leadingIcon = { Icon(Icons.Rounded.Info, contentDescription = null) },
853865
text = { Text(stringResource(R.string.home_menu_about)) },

app/src/main/java/io/github/sds100/keymapper/mappings/keymaps/KeyMapListViewModel.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import io.github.sds100.keymapper.mappings.keymaps.trigger.TriggerErrorSnapshot
2626
import io.github.sds100.keymapper.sorting.SortKeyMapsUseCase
2727
import io.github.sds100.keymapper.sorting.SortViewModel
2828
import io.github.sds100.keymapper.system.accessibility.ServiceState
29+
import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCase
2930
import io.github.sds100.keymapper.system.permissions.Permission
3031
import io.github.sds100.keymapper.util.Error
3132
import io.github.sds100.keymapper.util.Result
@@ -82,6 +83,7 @@ class KeyMapListViewModel(
8283
private val showAlertsUseCase: ShowHomeScreenAlertsUseCase,
8384
private val pauseKeyMaps: PauseKeyMapsUseCase,
8485
private val backupRestore: BackupRestoreMappingsUseCase,
86+
private val showInputMethodPickerUseCase: ShowInputMethodPickerUseCase,
8587

8688
) : PopupViewModel by PopupViewModelImpl(),
8789
ResourceProvider by resourceProvider,
@@ -845,6 +847,10 @@ class KeyMapListViewModel(
845847
}
846848
}
847849

850+
fun showInputMethodPicker() {
851+
showInputMethodPickerUseCase.show(fromForeground = true)
852+
}
853+
848854
private suspend fun onAutomaticBackupResult(result: Result<*>) {
849855
when (result) {
850856
is Success -> {}

app/src/main/java/io/github/sds100/keymapper/util/Inject.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import io.github.sds100.keymapper.system.apps.ChooseAppViewModel
3939
import io.github.sds100.keymapper.system.apps.DisplayAppShortcutsUseCaseImpl
4040
import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceUseCaseImpl
4141
import io.github.sds100.keymapper.system.bluetooth.ChooseBluetoothDeviceViewModel
42+
import io.github.sds100.keymapper.system.inputmethod.ShowInputMethodPickerUseCaseImpl
4243
import io.github.sds100.keymapper.system.intents.ConfigIntentViewModel
4344

4445
/**
@@ -182,6 +183,7 @@ object Inject {
182183
UseCases.displayKeyMap(ctx),
183184
),
184185
UseCases.listFloatingLayouts(ctx),
186+
ShowInputMethodPickerUseCaseImpl(ServiceLocator.inputMethodAdapter(ctx))
185187
)
186188

187189
fun settingsViewModel(context: Context): SettingsViewModel.Factory = SettingsViewModel.Factory(

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1355,6 +1355,7 @@
13551355
<string name="home_menu_about">About</string>
13561356
<string name="home_menu_export">Export all</string>
13571357
<string name="home_menu_import">Import</string>
1358+
<string name="home_menu_input_method_picker">Choose keyboard</string>
13581359
<string name="home_importing_snackbar">Importing…</string>
13591360
<string name="home_importing_finished_snackbar">Importing successful!</string>
13601361
<string name="home_exporting_snackbar">Exporting…</string>

0 commit comments

Comments
 (0)