22
33package io.github.sds100.keymapper.base.trigger
44
5- import androidx.compose.animation.AnimatedVisibility
65import androidx.compose.animation.animateContentSize
7- import androidx.compose.animation.core.tween
8- import androidx.compose.animation.fadeIn
9- import androidx.compose.animation.fadeOut
10- import androidx.compose.animation.shrinkVertically
116import androidx.compose.foundation.background
127import androidx.compose.foundation.layout.Arrangement
138import androidx.compose.foundation.layout.Box
@@ -26,11 +21,9 @@ import androidx.compose.foundation.verticalScroll
2621import androidx.compose.material.icons.Icons
2722import androidx.compose.material.icons.automirrored.outlined.VolumeUp
2823import androidx.compose.material.icons.outlined.Mouse
29- import androidx.compose.material.icons.rounded.Check
3024import androidx.compose.material.icons.rounded.Fingerprint
3125import androidx.compose.material.icons.rounded.Keyboard
3226import androidx.compose.material3.Button
33- import androidx.compose.material3.ButtonColors
3427import androidx.compose.material3.ButtonDefaults
3528import androidx.compose.material3.ExperimentalMaterial3Api
3629import androidx.compose.material3.FilledTonalButton
@@ -61,9 +54,12 @@ import io.github.sds100.keymapper.base.R
6154import io.github.sds100.keymapper.base.compose.KeyMapperTheme
6255import io.github.sds100.keymapper.base.compose.LocalCustomColorsPalette
6356import io.github.sds100.keymapper.base.system.accessibility.FingerprintGestureType
57+ import io.github.sds100.keymapper.base.utils.ui.compose.AccessibilityServiceRequirementRow
6458import io.github.sds100.keymapper.base.utils.ui.compose.CheckBoxText
6559import io.github.sds100.keymapper.base.utils.ui.compose.HeaderText
60+ import io.github.sds100.keymapper.base.utils.ui.compose.InputMethodRequirementRow
6661import io.github.sds100.keymapper.base.utils.ui.compose.KeyMapperSegmentedButtonRow
62+ import io.github.sds100.keymapper.base.utils.ui.compose.ProModeRequirementRow
6763import io.github.sds100.keymapper.base.utils.ui.compose.RadioButtonText
6864import io.github.sds100.keymapper.base.utils.ui.compose.icons.IndeterminateQuestionBox
6965import io.github.sds100.keymapper.base.utils.ui.compose.icons.KeyMapperIcons
@@ -806,110 +802,6 @@ fun RemapStatusRow(
806802 }
807803}
808804
809- @Composable
810- private fun ProModeRequirementRow (
811- modifier : Modifier = Modifier ,
812- isVisible : Boolean ,
813- proModeStatus : ProModeStatus ,
814- onClick : () -> Unit ,
815- ) {
816- AnimatedVisibility (
817- visible = isVisible,
818- enter = fadeIn(animationSpec = tween(200 )),
819- exit = fadeOut(animationSpec = tween(200 )) + shrinkVertically(animationSpec = tween(200 )),
820- ) {
821- TriggerRequirementRow (
822- modifier = modifier,
823- text = stringResource(R .string.trigger_setup_pro_mode_title),
824- ) {
825- if (proModeStatus == ProModeStatus .UNSUPPORTED ) {
826- Text (
827- text = stringResource(R .string.trigger_setup_pro_mode_unsupported),
828- color = MaterialTheme .colorScheme.error,
829- style = MaterialTheme .typography.bodyMedium,
830- )
831- } else {
832- TriggerRequirementButton (
833- enabledText = stringResource(R .string.trigger_setup_pro_mode_enable_button),
834- disabledText = stringResource(R .string.trigger_setup_pro_mode_running_button),
835- isEnabled = proModeStatus != ProModeStatus .ENABLED ,
836- onClick = onClick,
837- )
838- }
839- }
840- }
841- }
842-
843- @Composable
844- fun AccessibilityServiceRequirementRow (
845- modifier : Modifier = Modifier ,
846- isServiceEnabled : Boolean ,
847- onClick : () -> Unit ,
848- ) {
849- TriggerRequirementRow (
850- modifier = modifier,
851- text = stringResource(R .string.trigger_setup_accessibility_service_title),
852- ) {
853- TriggerRequirementButton (
854- enabledText = stringResource(R .string.trigger_setup_accessibility_service_enable_button),
855- disabledText = stringResource(R .string.trigger_setup_accessibility_service_running_button),
856- isEnabled = ! isServiceEnabled,
857- onClick = onClick,
858- )
859- }
860- }
861-
862- @Composable
863- fun InputMethodRequirementRow (
864- modifier : Modifier = Modifier ,
865- isEnabled : Boolean ,
866- isChosen : Boolean ,
867- enablingRequiresUserInput : Boolean ,
868- onEnableClick : () -> Unit ,
869- onChooseClick : () -> Unit ,
870- ) {
871- TriggerRequirementRow (
872- modifier = modifier,
873- text = stringResource(R .string.trigger_setup_input_method_title),
874- ) {
875- val enabledText = when {
876- ! isEnabled && enablingRequiresUserInput -> stringResource(R .string.trigger_setup_input_method_enable_button)
877- ! isChosen -> stringResource(R .string.trigger_setup_input_method_choose_button)
878- else -> " "
879- }
880-
881- val disabledText = stringResource(R .string.trigger_setup_input_method_running_button)
882-
883- TriggerRequirementButton (
884- enabledText = enabledText,
885- disabledText = disabledText,
886- isEnabled = ! isEnabled || ! isChosen,
887- onClick = if (! isEnabled && enablingRequiresUserInput) onEnableClick else onChooseClick,
888- )
889- }
890- }
891-
892- @Composable
893- fun TriggerRequirementRow (
894- modifier : Modifier = Modifier ,
895- text : String ,
896- actionContent : @Composable () -> Unit ,
897- ) {
898- Row (modifier = modifier, verticalAlignment = Alignment .CenterVertically ) {
899- Spacer (Modifier .width(8 .dp))
900-
901- Text (
902- modifier = Modifier .weight(1f ),
903- text = text,
904- style = MaterialTheme .typography.bodyLarge,
905- )
906-
907- Spacer (Modifier .width(8 .dp))
908-
909- actionContent()
910- }
911- }
912-
913805@Composable
914806fun TriggerRequirementsNotMetButton (modifier : Modifier = Modifier ) {
915807 FilledTonalButton (modifier = modifier, onClick = {}, enabled = false ) {
@@ -924,33 +816,6 @@ fun AddTriggerButton(modifier: Modifier = Modifier, onClick: () -> Unit) {
924816 }
925817}
926818
927- @Composable
928- fun TriggerRequirementButton (
929- modifier : Modifier = Modifier ,
930- enabledText : String ,
931- disabledText : String ,
932- isEnabled : Boolean ,
933- colors : ButtonColors = ButtonDefaults .filledTonalButtonColors(),
934- onClick : () -> Unit ,
935- ) {
936- FilledTonalButton (
937- modifier = modifier,
938- onClick = onClick,
939- enabled = isEnabled,
940- colors = colors,
941- ) {
942- if (isEnabled) {
943- Text (text = enabledText)
944- } else {
945- Row (verticalAlignment = Alignment .CenterVertically ) {
946- Icon (Icons .Rounded .Check , contentDescription = null )
947- Spacer (modifier = Modifier .width(8 .dp))
948- Text (text = disabledText)
949- }
950- }
951- }
952- }
953-
954819@Composable
955820fun TriggerSetupBottomSheet (
956821 modifier : Modifier = Modifier ,
0 commit comments