Browse Source

set focus on all screens, working on custom navigation

Khubaib 9 months ago
parent
commit
6946d1e8df

+ 1 - 1
.idea/deploymentTargetSelector.xml

@@ -4,7 +4,7 @@
     <selectionStates>
       <SelectionState runConfigName="app">
         <option name="selectionMode" value="DROPDOWN" />
-        <DropdownSelection timestamp="2024-07-03T09:16:11.375333598Z">
+        <DropdownSelection timestamp="2024-07-03T15:28:39.845843338Z">
           <Target type="DEFAULT_BOOT">
             <handle>
               <DeviceId pluginId="LocalEmulator" identifier="path=/home/ubuntu/.android/avd/Television_1080p_API_31.avd" />

+ 19 - 0
app/src/main/java/com/vpn/fastestvpnservice/navigation/CustomNavigation.kt

@@ -0,0 +1,19 @@
+package com.vpn.fastestvpnservice.navigation
+
+import androidx.compose.runtime.Composable
+import androidx.navigation.NavGraph.Companion.findStartDestination
+import androidx.navigation.NavHostController
+import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
+
+fun customNavigation(navHostController: NavHostController, screen: BottomBarScreen) {
+    navHostController.navigate(
+        screen.route
+    ) {
+        popUpTo(
+            navHostController.graph
+                .findStartDestination().id) {
+            saveState = true
+        }
+        launchSingleTop = true
+    }
+}

+ 36 - 15
app/src/main/java/com/vpn/fastestvpnservice/screensTV/AccountScreenTV.kt

@@ -10,7 +10,8 @@ import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.LocalOverscrollConfiguration
 import androidx.compose.foundation.background
-import androidx.compose.foundation.border
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.focusable
 import androidx.compose.foundation.gestures.detectTapGestures
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
@@ -49,6 +50,9 @@ import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.alpha
 import androidx.compose.ui.draw.clip
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.focus.onFocusChanged
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.ColorFilter
 import androidx.compose.ui.graphics.painter.Painter
@@ -66,10 +70,6 @@ import androidx.lifecycle.viewmodel.compose.viewModel
 import androidx.navigation.NavHostController
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
-import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddRowAccount
-import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddRowAccountIcon
-import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddRowAccountIconFirst
-import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddTextAccount
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.LogoutDialog
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.act
 import com.vpn.fastestvpnservice.sealedClass.Screen
@@ -91,6 +91,11 @@ fun AccountTV(navHostController: NavHostController,
     val context = LocalContext.current
     val basePreferenceHelper = BasePreferenceHelper(context)
     val accountViewModel: AccountViewModel = viewModel()
+    val focusRequester1 = remember { FocusRequester() }
+
+    LaunchedEffect(key1 = Unit) {
+        focusRequester1.requestFocus()
+    }
 
     CompositionLocalProvider(
         LocalOverscrollConfiguration provides null
@@ -137,14 +142,15 @@ fun AccountTV(navHostController: NavHostController,
 
                 Spacer(modifier = Modifier.height(22.dp))
 
-                AddRowAccountIconFirstTV(
+                AddRowAccountIconTV(
                     icon = painterResource(id = R.drawable.subscription3x),
                     text = "Upgrade Subscription",
                     onClick = {
                         navHostController.navigate(
                             Screen.Subscription.route
                         )
-                    }
+                    },
+                    focusRequester1
                 )
                 AddRowAccountIconTV(
                     icon = painterResource(id = R.drawable.fav3x),
@@ -431,24 +437,39 @@ fun ColumnScope.AddRowAccountIconFirstTV(
 fun ColumnScope.AddRowAccountIconTV(
     icon: Painter,
     text: String,
-    onClick : () -> Unit
+    onClick : () -> Unit,
+    focusRequester1: FocusRequester = FocusRequester()
 ) {
-
+    var isRowFocused by remember { mutableStateOf(false) }
+    val context = LocalContext.current
     Row(
         modifier = Modifier
             .fillMaxWidth()
             .padding(top = 5.dp)
-            .background(Color.White, shape = RoundedCornerShape(4.dp))
+            .background(if (isRowFocused) Color.LightGray else Color.White,
+                shape = RoundedCornerShape(4.dp))
             .height(61.dp)
+            .focusRequester(focusRequester1)
+            .onFocusChanged {
+                isRowFocused = it.isFocused
+            }
+            .focusable()
+            .clickable {
+                Toast.makeText(
+                    context, text, Toast.LENGTH_SHORT
+                ).show()
+            }
 //            .border(
 //                1.dp, Color.Blue, RoundedCornerShape(40.dp)
 //            )
 //            .clip(RoundedCornerShape(40.dp))
-            .pointerInput(Unit) {
-                detectTapGestures {
-                    onClick()
-                }
-            },
+//            .pointerInput(Unit) {
+//                detectTapGestures {
+//                    onClick()
+//                }
+//            }
+
+        ,
         horizontalArrangement = Arrangement.Start,
         verticalAlignment = Alignment.CenterVertically
     ) {

+ 13 - 4
app/src/main/java/com/vpn/fastestvpnservice/screensTV/BottomBarMainScreenTV.kt

@@ -27,6 +27,8 @@ import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.alpha
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.focus.onFocusChanged
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.LocalContext
@@ -47,6 +49,7 @@ import com.vpn.fastestvpnservice.ui.theme.customTypography2
 import com.vpn.fastestvpnservice.utils.StaticMethods
 import com.vpn.fastestvpnservice.utils.isTablet
 
+val focusRequesterNav1 = FocusRequester()
 @Composable
 fun BottomBarMainScreenTV(navHostController: NavHostController, activity: ComponentActivity) {
     val navController1 = rememberNavController()
@@ -138,6 +141,9 @@ fun RowScope.AddItemTV(
     Log.d("currentRoute -> ", route.toString())
 
     if (isClicked) {
+        Log.d("test_bottom_navbar",
+            "Before:: currentDestination -> " + currentDestination?.route + " -> " + screen.route
+        )
         if (currentDestination?.route != screen.route) {
             Log.d("test_bottom_navbar",
                 "currentDestination -> " + currentDestination?.route
@@ -159,11 +165,13 @@ fun RowScope.AddItemTV(
     }
     BottomNavigationItem(
         modifier = Modifier
+//            .focusRequester(focusRequesterNav1)
             .onFocusChanged {
-//                if (it.isFocused) isClicked = it.isFocused
+                isFocused = it.isFocused
+//                isClicked = it.isFocused
                 Log.d("test_bottom_navbar", "onFocusChanged {}")
             }
-
+            .background(if (isFocused) Color.LightGray else Color.White)
         ,
 //        label = {
 //            if (currentDestination?.route == screen.route) {
@@ -189,11 +197,12 @@ fun RowScope.AddItemTV(
 //        },
 //        alwaysShowLabel = true,
         selected = currentDestination?.hierarchy?.any{
-            it.route == screen.route
+                    it.route == screen.route
         } == true,
         onClick = {
             isClicked = true
-            Log.d("test_bottom_navbar", "onCLick = {}")
+            Log.d("test_bottom_navbar", "onCLick = ${screen.route
+            }")
 
             /* First time currentDestination is different when on BottomBar Item */
 

+ 127 - 66
app/src/main/java/com/vpn/fastestvpnservice/screensTV/HelpScreenTV.kt

@@ -2,11 +2,13 @@ package com.vpn.fastestvpnservice.screensTV
 
 import android.app.Activity
 import android.util.Log
+import android.widget.Toast
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.LocalOverscrollConfiguration
 import androidx.compose.foundation.background
-import androidx.compose.foundation.gestures.detectTapGestures
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.focusable
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
@@ -28,15 +30,23 @@ import androidx.compose.material3.Surface
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.alpha
 import androidx.compose.ui.draw.clip
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.focus.onFocusChanged
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.ColorFilter
 import androidx.compose.ui.graphics.toArgb
 import androidx.compose.ui.graphics.vector.ImageVector
-import androidx.compose.ui.input.pointer.pointerInput
+import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
@@ -48,14 +58,17 @@ import androidx.core.view.WindowCompat
 import androidx.navigation.NavHostController
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.isDarkTheme
-import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddRow
-import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddRowIcon
-import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddTextHelp
 import com.vpn.fastestvpnservice.sealedClass.Screen
 
 @OptIn(ExperimentalFoundationApi::class)
 @Composable
 fun HelpTV(navHostController: NavHostController) {
+    val focusRequester1 = remember { FocusRequester() }
+    val focusRequester2 = remember { FocusRequester() }
+
+    LaunchedEffect(key1 = Unit) {
+        focusRequester1.requestFocus()
+    }
 
     CompositionLocalProvider(
         LocalOverscrollConfiguration provides null
@@ -67,13 +80,11 @@ fun HelpTV(navHostController: NavHostController) {
                 .padding(vertical = 10.dp)
                 .verticalScroll(rememberScrollState()),
 //        contentAlignment = Alignment.Center
-
         ) {
             val view = LocalView.current
             val window = (view.context as Activity).window
             window.statusBarColor = Color.Transparent.toArgb()
             window.navigationBarColor = Color.Transparent.toArgb()
-
             WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !isDarkTheme.value
 
             Column(
@@ -90,46 +101,65 @@ fun HelpTV(navHostController: NavHostController) {
                     color = MaterialTheme.colorScheme.inversePrimary
                 )
                 Spacer(modifier = Modifier.height(22.dp))
-
                 AddRowTV(icon = R.drawable.faq3x,
                     text = "FAQ", navHostController = navHostController,
-                    topPadding = 22.dp)
-                {
-                    navHostController.navigate(
+                    topPadding = 22.dp,
+                    focusRequester1 = focusRequester1,
+                    onClick = {navHostController.navigate(
                         Screen.FAQ.route
-                    )}
-                AddRowTV(icon = R.drawable.privacy3x,
-                    text = "Privacy Policy", navHostController = navHostController) {
-                    navHostController.navigate(
+                    )},
+                )
+                AddRowTV(
+                    icon = R.drawable.privacy3x,
+                    text = "Privacy Policy",
+                    navHostController = navHostController,
+                    onClick = {
+                        navHostController.navigate(
                         Screen.PrivacyPolicy.route
                     )
-                }
-                AddRowTV(icon = R.drawable.terms3x,
-                    text = "Terms and Conditions", navHostController = navHostController) {
-                    navHostController.navigate(
-                        Screen.TermsAndConditions.route
-                    )
-                }
-                AddRowTV(icon = R.drawable.about3x,
-                    text = "About Fastest VPN", navHostController = navHostController) {
-                    navHostController.navigate(
-                        Screen.About.route
-                    )
-                }
-                AddRowIconTV(icon = Icons.AutoMirrored.Filled.Message,
+                    },
+                )
+                AddRowTV(
+                    icon = R.drawable.terms3x,
+                    text = "Terms and Conditions",
+                    navHostController = navHostController,
+                    onClick = {
+                        navHostController.navigate(
+                            Screen.TermsAndConditions.route
+                        )
+                    },
+                )
+                AddRowTV(
+                    icon = R.drawable.about3x,
+                    text = "About Fastest VPN",
+                    navHostController = navHostController,
+                    onClick = {
+                        navHostController.navigate(
+                            Screen.About.route
+                        )
+                    },
+                )
+                AddRowTV(
+                    icon = R.drawable.faq3x,
                     text = "Customer Support",
-                    navHostController = navHostController) {
-                    navHostController.navigate(
-                        Screen.CustomerSupport.route
-                    )
-                }
-                AddRowTV(icon = R.drawable.customer_support3x,
+                    navHostController = navHostController,
+                    onClick = {
+                        navHostController.navigate(
+                            Screen.CustomerSupport.route
+                        )
+                    },
+                    isIconTV = false
+                )
+                AddRowTV(
+                    icon = R.drawable.customer_support3x,
                     text = "Email Us",
-                    navHostController = navHostController) {
-                    navHostController.navigate(
-                        Screen.EmailUs.route
-                    )
-                }
+                    navHostController = navHostController,
+                    onClick = {
+                        navHostController.navigate(
+                            Screen.EmailUs.route
+                        )
+                    },
+                )
             }
         }
     }
@@ -141,25 +171,39 @@ fun ColumnScope.AddRowTV(
     text: String,
     navHostController: NavHostController,
     topPadding: Dp = 40.dp,
-    onClick: () -> Unit
+    focusRequester1: FocusRequester = FocusRequester(),
+    onClick: () -> Unit,
+    isIconTV: Boolean = true
 ) {
+    var isRowFocused by remember { mutableStateOf(false) }
+    val context = LocalContext.current
+    val icon1 = painterResource(id = icon)
+    val icon2 = Icons.AutoMirrored.Filled.Message
     Row(
         modifier = Modifier
             .fillMaxWidth()
             .padding(top = 5.dp)
             .clip(RoundedCornerShape(4.dp))
-            .background(Color.White)
+            .background(if (isRowFocused) Color.LightGray else Color.White)
             .height(61.dp)
-            .pointerInput(Unit) {
-                detectTapGestures {
-                    Log.d("test_row", "Clicked Row ${onClick().toString()}")
-                    onClick()
-                }
+            .focusRequester(focusRequester1)
+            .onFocusChanged {
+                isRowFocused = it.isFocused
             }
-//            .clickable {
-//                Log.d("test_row", "Clicked Row ${onClick.toString()}")
-//                onClick()
+            .focusable()
+//            .pointerInput(Unit) {
+//                detectTapGestures {
+//                    Log.d("test_row", "Clicked Row ${onClick().toString()}")
+//                    onClick()
+//                }
 //            }
+            .clickable {
+                Log.d("test_row", "Clicked Row ${onClick.toString()}")
+                Toast.makeText(
+                    context, text, Toast.LENGTH_SHORT
+                ).show()
+//                onClick()
+            }
         ,
         horizontalArrangement = Arrangement.Start,
         verticalAlignment = Alignment.CenterVertically
@@ -169,16 +213,29 @@ fun ColumnScope.AddRowTV(
             modifier = Modifier.padding(start = 20.dp),
             color = Color.Transparent
         ) {
-            Image(
-                painter = painterResource(id = icon),
-                contentDescription = "World",
-                modifier = Modifier
-                    .padding(start = 0.dp)
-                    .size(24.dp)
-                    .weight(1f),
-                colorFilter = ColorFilter.tint(
-                    MaterialTheme.colorScheme.inversePrimary)
-            )
+            if (isIconTV) {
+                Image(
+                    icon1,
+                    contentDescription = "World",
+                    modifier = Modifier
+                        .padding(start = 0.dp)
+                        .size(24.dp)
+                        .weight(1f),
+                    colorFilter = ColorFilter.tint(
+                        MaterialTheme.colorScheme.inversePrimary)
+                )
+            } else {
+                Image(
+                    icon2,
+                    contentDescription = "World",
+                    modifier = Modifier
+                        .padding(start = 0.dp)
+                        .size(24.dp)
+                        .weight(1f),
+                    colorFilter = ColorFilter.tint(
+                        MaterialTheme.colorScheme.inversePrimary)
+                )
+            }
         }
 
         Surface(
@@ -229,18 +286,22 @@ fun ColumnScope.AddRowIconTV(
     topPadding: Dp = 40.dp,
     onClick: () -> Unit
 ) {
+    var isRowFocused by remember { mutableStateOf(false) }
     Row(
         modifier = Modifier
             .fillMaxWidth()
             .padding(top = 5.dp)
-            .background(Color.White)
+            .background(if (isRowFocused) Color.LightGray else Color.White)
             .height(61.dp)
-            .pointerInput(Unit) {
-                detectTapGestures {
-                    Log.d("test_row", "Clicked Row ${onClick().toString()}")
-                    onClick()
-                }
+            .onFocusChanged {
+                isRowFocused = it.isFocused
             }
+//            .pointerInput(Unit) {
+//                detectTapGestures {
+//                    Log.d("test_row", "Clicked Row ${onClick().toString()}")
+//                    onClick()
+//                }
+//            }
 //            .clickable {
 //                Log.d("test_row", "Clicked Row ${onClick.toString()}")
 //                onClick()

+ 19 - 1
app/src/main/java/com/vpn/fastestvpnservice/screensTV/HomeScreenTV.kt

@@ -74,6 +74,7 @@ import com.vpn.fastestvpnservice.beans.toChangeServer
 import com.vpn.fastestvpnservice.constants.AppEnum
 import com.vpn.fastestvpnservice.constants.smartConnect
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
+import com.vpn.fastestvpnservice.navigation.customNavigation
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddRowSelectServer
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddText
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.ColumnText
@@ -360,7 +361,7 @@ fun HomeTV(navHostController: NavHostController) {
                             isButtonFocused = it.isFocused
                         }
 //                        .clickable {  }
-//                        .focusable()
+                        .focusable()
                         .border(
                             BorderStroke(
                                 2.dp, color
@@ -531,6 +532,23 @@ fun HomeTV(navHostController: NavHostController) {
                         .padding(horizontal = 20.dp, vertical = 5.dp)
                         .padding(top = 0.dp)
                         .height(60.dp)
+                        .onKeyEvent {
+                            when (it.key) {
+                                Key.DirectionDown -> {
+                                    Log.d("test_settings_keys", "DirectionDown")
+                                    Toast
+                                        .makeText(
+                                            context, "DirectionDown", Toast.LENGTH_SHORT
+                                        )
+                                        .show()
+//                                    focusRequesterNav1.requestFocus()
+                                    true
+                                }
+                                else -> {
+                                    false
+                                }
+                            }
+                        }
                         .onFocusChanged {
                             isLayoutFocused = it.isFocused
                         }

+ 60 - 39
app/src/main/java/com/vpn/fastestvpnservice/screensTV/SettingsScreenTV.kt

@@ -69,13 +69,11 @@ import androidx.compose.ui.graphics.ColorFilter
 import androidx.compose.ui.graphics.toArgb
 import androidx.compose.ui.graphics.vector.ImageVector
 import androidx.compose.ui.input.key.Key
-import androidx.compose.ui.input.key.KeyEventType
 import androidx.compose.ui.input.key.key
 import androidx.compose.ui.input.key.onKeyEvent
-import androidx.compose.ui.input.key.type
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.platform.LocalSoftwareKeyboardController
+import androidx.compose.ui.platform.LocalFocusManager
 import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
@@ -86,7 +84,6 @@ import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import androidx.core.content.ContextCompat
 import androidx.lifecycle.viewmodel.compose.viewModel
-import androidx.navigation.NavGraph.Companion.findStartDestination
 import androidx.navigation.NavHostController
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.isDarkTheme
@@ -94,6 +91,7 @@ import com.vpn.fastestvpnservice.beans.themesList
 import com.vpn.fastestvpnservice.constants.smartConnect
 import com.vpn.fastestvpnservice.customItems.ServerSpecificItem
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
+import com.vpn.fastestvpnservice.navigation.customNavigation
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddTextSettings
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.getAvailableProtocols
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.vpnConnectionsUtil
@@ -116,7 +114,6 @@ fun SettingsTV(navHostController: NavHostController) {
     val focusRequester4 = remember { FocusRequester() }
     val focusRequester5 = remember { FocusRequester() }
 
-
     CompositionLocalProvider(
         LocalOverscrollConfiguration provides null
     ) {
@@ -469,39 +466,40 @@ fun ColumnScope.AddRowSettingsColumnTV(
             .onKeyEvent {
                 when (it.key) {
                     Key.DirectionDown -> {
-                        Log.d("test_settings_keys","DirectionDown")
-                        Toast.makeText(
-                            context, "DirectionDown", Toast.LENGTH_SHORT
-                        ).show()
+                        Log.d("test_settings_keys", "DirectionDown")
+                        Toast
+                            .makeText(
+                                context, "DirectionDown", Toast.LENGTH_SHORT
+                            )
+                            .show()
                         focusRequester2.requestFocus()
                         true
                     }
-                    Key.DirectionUp -> {
-                        Log.d("test_settings_keys","DirectionUp")
-                        Toast.makeText(
-                            context, "DirectionUp", Toast.LENGTH_SHORT
-                        ).show()
-
-                        true
-                    }
-                    Key.DirectionRight -> {
-                        Log.d("test_settings_keys","DirectionRight")
-                        Toast.makeText(
-                            context, "DirectionRight", Toast.LENGTH_SHORT
-                        ).show()
-                        navHostController.navigate(
-                            BottomBarScreen.Help.route
-                        ) {
-                            popUpTo(
-                                navHostController.graph
-                                    .findStartDestination().id) {
-                                saveState = true
-                            }
-                            launchSingleTop = true
-                        }
-                        true
+//                    Key.DirectionLeft -> {
+//                        Log.d("test_settings_keys", "DirectionLeft")
+//                        Toast
+//                            .makeText(
+//                                context, "DirectionUp", Toast.LENGTH_SHORT
+//                            )
+//                            .show()
+//                        customNavigation(navHostController = navHostController, screen = BottomBarScreen.Home)
+//                        true
+//                    }
+//
+//                    Key.DirectionRight -> {
+//                        Log.d("test_settings_keys", "DirectionRight")
+//                        Toast
+//                            .makeText(
+//                                context, "DirectionRight", Toast.LENGTH_SHORT
+//                            )
+//                            .show()
+//                        customNavigation(navHostController = navHostController, screen = BottomBarScreen.Help)
+//                        true
+//                    }
+
+                    else -> {
+                        false
                     }
-                    else -> { false }
                 }
             }
             .focusRequester(focusRequester1)
@@ -694,17 +692,40 @@ fun ColumnScope.AddRowSettingsSmartTV(
             .padding(top = 5.dp, end = 27.dp)
             .clip(RoundedCornerShape(4.dp))
             .background(if (isRowFocused) Color.LightGray else Color.White)
+//            .onKeyEvent {
+//                when (it.key) {
+//                    Key.DirectionLeft -> {
+//                        Log.d("test_settings_keys", "DirectionLeft")
+//                        Toast
+//                            .makeText(
+//                                context, "DirectionUp", Toast.LENGTH_SHORT
+//                            )
+//                            .show()
+//                        customNavigation(navHostController = navHostController, screen = BottomBarScreen.Home)
+//                        true
+//                    }
+//                    Key.DirectionRight -> {
+//                        Log.d("test_settings_keys", "DirectionRight")
+//                        Toast
+//                            .makeText(
+//                                context, "DirectionRight", Toast.LENGTH_SHORT
+//                            )
+//                            .show()
+//                        customNavigation(navHostController = navHostController, screen = BottomBarScreen.Help)
+//                        true
+//                    }
+//                    else -> {
+//                        false
+//                    }
+//                }
+//            }
             .focusRequester(focusRequester2)
             .onFocusChanged {
                 isRowFocused = it.isFocused
 //                if (!it.isFocused) focusRequester3.requestFocus()
             }
-            .pointerInput(Unit) {
-                detectTapGestures {
-                    isSmartSheetOpen = true
-                }
-            }
             .height(61.dp)
+            .focusable()
             .clickable { isSmartSheetOpen = true },
         horizontalArrangement = Arrangement.Start,
         verticalAlignment = Alignment.CenterVertically