Browse Source

worked on home screen focus

Khubaib 9 tháng trước cách đây
mục cha
commit
97cf883593

+ 1 - 1
.idea/deploymentTargetSelector.xml

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

+ 5 - 3
app/src/main/java/com/vpn/fastestvpnservice/screensTV/BottomBarMainScreenTV.kt

@@ -132,6 +132,7 @@ fun RowScope.AddItemTV(
     navHostController: NavHostController
 ) {
     var isClicked by remember { mutableStateOf(false) }
+    var isFocused by remember { mutableStateOf(false) }
     val route = currentRouteTV(navController = navHostController)
     val context = LocalContext.current
     Log.d("currentRoute -> ", route.toString())
@@ -148,9 +149,9 @@ fun RowScope.AddItemTV(
                     popUpTo(
                         navHostController.graph
                             .findStartDestination().id) {
-                        saveState = true
+                        saveState = false
                     }
-                    launchSingleTop = true
+                    launchSingleTop = false
                 }
             }
         }
@@ -159,9 +160,10 @@ fun RowScope.AddItemTV(
     BottomNavigationItem(
         modifier = Modifier
             .onFocusChanged {
-                if (it.isFocused) isClicked = true
+//                if (it.isFocused) isClicked = it.isFocused
                 Log.d("test_bottom_navbar", "onFocusChanged {}")
             }
+
         ,
 //        label = {
 //            if (currentDestination?.route == screen.route) {

+ 217 - 135
app/src/main/java/com/vpn/fastestvpnservice/screensTV/HomeScreenTV.kt

@@ -3,11 +3,15 @@ package com.vpn.fastestvpnservice.screensTV
 import android.content.Context
 import android.content.Intent
 import android.util.Log
+import android.widget.Toast
 import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.Image
 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.interaction.MutableInteractionSource
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
@@ -31,16 +35,27 @@ import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Surface
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
 import androidx.compose.runtime.livedata.observeAsState
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberCoroutineScope
+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.draw.paint
+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
+import androidx.compose.ui.input.key.Key
+import androidx.compose.ui.input.key.key
+import androidx.compose.ui.input.key.onKeyEvent
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.platform.LocalContext
@@ -66,6 +81,7 @@ import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.blueBackground
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.isServerDialog
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.serverObj
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.vpnConnectionsUtil
+import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
 import com.vpn.fastestvpnservice.sealedClass.Screen
 import com.vpn.fastestvpnservice.ui.theme.customTypography
 import com.vpn.fastestvpnservice.utils.Utils
@@ -86,6 +102,14 @@ fun HomeTV(navHostController: NavHostController) {
     }
     var isConnect: Int? = homeViewModel.isConnect.observeAsState().value
     isConnect = basePreferenceHelper.getConnectState()
+    val focusRequester1 = remember { FocusRequester() }
+    val focusRequester2 = remember { FocusRequester() }
+    val focusRequester3 = remember { FocusRequester() }
+    var isButtonFocused by remember { mutableStateOf(false) }
+
+    LaunchedEffect(key1 = Unit) {
+        focusRequester1.requestFocus()
+    }
 
     Column(
         modifier = Modifier
@@ -255,61 +279,93 @@ fun HomeTV(navHostController: NavHostController) {
                     }
                     .background(Color.Transparent)
             ) {
+                val color = if (isButtonFocused && isConnect == App.CONNECTED) colorResource(id = R.color.blue_text)
+                else if (isButtonFocused) colorResource(id = R.color.maroon_text)
+                else colorResource(id = R.color.transparent)
+
                 IconButton(
                     onClick = {
-                        val connectedServer = basePreferenceHelper.getConnectedServer()
-                        val serverObject = basePreferenceHelper.getServerObject()
-                        Log.d("test_conn_ser_obj", "cs = ${connectedServer?.server_name} so = ${serverObject?.server_name}")
-                        Log.d("isConnect_State", "onClick{} -> $isConnect")
-                        Log.d("isConnect_State_vpn", "onClick{} -> $isConnect")
-                        prefHelper.getProduct()?.identifier.let {
-                            val identifier = it
-
-                            if (identifier == AppEnum.FREE.key) {
-                                Log.d("isConnect_State", "identifier -> $identifier")
-                                Screen.Subscription.isTrue = true
-                                navHostController.navigate(
-                                    Screen.Subscription.route
-                                )
-
-                            }
-                            else {
-
-                                prefHelper.getServerObject()?.let {
-                                    prefHelper.setConnectedServer(it)
-                                }
-                                Log.d("isConnect_State", "identifier -> $identifier")
-                                if (isConnect == App.CONNECTED || isConnect == App.CONNECTING) {
-                                    Log.d("isConnect_State_vpn", "stopVPN")
-                                    vpnConnectionsUtil.stopVpn()
-                                    homeViewModel.getIp()
-                                } else {
-                                    Log.d("isConnect_State_vpn", "startVPN")
-
-                                    if (basePreferenceHelper.getServerObject() != null) {
-                                        vpnConnectionsUtil.startVpn()
-                                    }
-                                    else {
-                                        toChangeServer.value = false
-                                        navHostController.navigate(
-                                            Screen.ServerList.route
-                                        )
-                                        Screen.ServerList.isTrue = true
-                                        Log.d("button_click_change", "Pressed")
-                                    }
-                                }
-
-
-
-                                val widgetIntent = Intent(context, SimpleAppWidget::class.java)
-                                widgetIntent.action = SimpleAppWidget.ACTION_CHANGE_SERVER
-                                context.sendBroadcast(widgetIntent)
-                            }
-                        }
+                              Toast.makeText(
+                                  context, "Connect onClick{}", Toast.LENGTH_SHORT
+                              ).show()
+//                        val connectedServer = basePreferenceHelper.getConnectedServer()
+//                        val serverObject = basePreferenceHelper.getServerObject()
+//                        Log.d(
+//                            "test_conn_ser_obj",
+//                            "cs = ${connectedServer?.server_name} so = ${serverObject?.server_name}"
+//                        )
+//                        Log.d("isConnect_State", "onClick{} -> $isConnect")
+//                        Log.d("isConnect_State_vpn", "onClick{} -> $isConnect")
+//                        prefHelper.getProduct()?.identifier.let {
+//                            val identifier = it
+//
+//                            if (identifier == AppEnum.FREE.key) {
+//                                Log.d("isConnect_State", "identifier -> $identifier")
+//                                Screen.Subscription.isTrue = true
+//                                navHostController.navigate(
+//                                    Screen.Subscription.route
+//                                )
+//
+//                            } else {
+//
+//                                prefHelper.getServerObject()?.let {
+//                                    prefHelper.setConnectedServer(it)
+//                                }
+//                                Log.d("isConnect_State", "identifier -> $identifier")
+//                                if (isConnect == App.CONNECTED || isConnect == App.CONNECTING) {
+//                                    Log.d("isConnect_State_vpn", "stopVPN")
+//                                    vpnConnectionsUtil.stopVpn()
+//                                    homeViewModel.getIp()
+//                                } else {
+//                                    Log.d("isConnect_State_vpn", "startVPN")
+//
+//                                    if (basePreferenceHelper.getServerObject() != null) {
+//                                        vpnConnectionsUtil.startVpn()
+//                                    } else {
+//                                        toChangeServer.value = false
+//                                        navHostController.navigate(
+//                                            Screen.ServerList.route
+//                                        )
+//                                        Screen.ServerList.isTrue = true
+//                                        Log.d("button_click_change", "Pressed")
+//                                    }
+//                                }
+//
+//
+//                                val widgetIntent = Intent(context, SimpleAppWidget::class.java)
+//                                widgetIntent.action = SimpleAppWidget.ACTION_CHANGE_SERVER
+//                                context.sendBroadcast(widgetIntent)
+//                            }
+//                        }
                     },
                     modifier = Modifier
                         .padding(bottom = 0.dp)
-                        .size(200.dp),
+                        .size(200.dp)
+                        .onKeyEvent {
+                            when (it.key) {
+                                Key.DirectionDown -> {
+                                    Log.d("test_settings_keys","DirectionDown")
+                                    Toast.makeText(
+                                        context, "DirectionDown", Toast.LENGTH_SHORT
+                                    ).show()
+                                    focusRequester2.requestFocus()
+                                    true
+                                }
+                                else -> { false }
+                            }
+                        }
+                        .focusRequester(focusRequester1)
+                        .background(Color.Transparent)
+                        .onFocusChanged {
+                            isButtonFocused = it.isFocused
+                        }
+//                        .clickable {  }
+//                        .focusable()
+                        .border(
+                            BorderStroke(
+                                2.dp, color
+                            ), shape = CircleShape
+                        ),
                 )
                 {
                     if (isConnect == App.CONNECTED) {
@@ -365,10 +421,17 @@ fun HomeTV(navHostController: NavHostController) {
                         )
                         .align(Alignment.CenterHorizontally),
                 ) {
-                    AddRowSmartTV(navHostController, basePreferenceHelper, context, isTablet())
+                    AddRowSmartTV(
+                        navHostController,
+                        basePreferenceHelper,
+                        context,
+                        isTablet(),
+                        focusRequester2
+                    )
                     var smartServer = basePreferenceHelper.getSmartServerObject()
                     val recommended = basePreferenceHelper.getRecommendedServerObject()
                     val selectedSmartList = basePreferenceHelper.getSmartList()
+                    var isSmartButtonFocused by remember { mutableStateOf(false) }
                     when(selectedSmartList) {
                         smartConnect[0] -> {
                             smartServer = basePreferenceHelper.getRecommendedServerObject()
@@ -383,62 +446,66 @@ fun HomeTV(navHostController: NavHostController) {
                     }
                     Button(
                         onClick = {
-                            Log.d("test_button", "onClick Smart Connect ${smartServer?.server_name}")
-                            basePreferenceHelper.setSmartServerObject(smartServer)
-//                            basePreferenceHelper.setConnectedServer(smartServer)
-
-                            if (isConnect == App.CONNECTED) {
-                                Log.d("isConnect_State_vpn", "stopVPN")
-                                val lastServer = basePreferenceHelper.getConnectedServer()
-                                Log.d("test_conn_ser_obj", "smart => ${lastServer?.server_name} ${smartServer?.server_name}")
-
-                                if (lastServer?.id != smartServer?.id) {
-                                    isServerDialog.value = true
-                                    if (smartServer != null) {
-                                        serverObj.value = smartServer
-                                    }
-//                                    basePreferenceHelper.setConnectedServer(smartServer)
-
-                                }
-                                else {
-                                    vpnConnectionsUtil.stopVpn()
-                                }
-
-
+                                  Toast.makeText(
+                                      context, "Smart onClick{}", Toast.LENGTH_SHORT
+                                  ).show()
+//                            Log.d("test_button", "onClick Smart Connect ${smartServer?.server_name}")
+//                            basePreferenceHelper.setSmartServerObject(smartServer)
+//                            if (isConnect == App.CONNECTED) {
+//                                Log.d("isConnect_State_vpn", "stopVPN")
+//                                val lastServer = basePreferenceHelper.getConnectedServer()
+//                                Log.d("test_conn_ser_obj", "smart => ${lastServer?.server_name} ${smartServer?.server_name}")
+//
+//                                if (lastServer?.id != smartServer?.id) {
+//                                    isServerDialog.value = true
+//                                    if (smartServer != null) {
+//                                        serverObj.value = smartServer
+//                                    }
+////                                    basePreferenceHelper.setConnectedServer(smartServer)
+//
+//                                }
+//                                else {
+//                                    vpnConnectionsUtil.stopVpn()
+//                                }
+//
+//
+////                                vpnConnectionsUtil.stopVpn()
+////                                Handler().postDelayed(Runnable {
+////                                    vpnConnectionsUtil.startVpn()
+////                                }, 500)
+////                                homeViewModel.getIp()
+//                            }
+//                            else if (isConnect == App.CONNECTING) {
 //                                vpnConnectionsUtil.stopVpn()
-//                                Handler().postDelayed(Runnable {
-//                                    vpnConnectionsUtil.startVpn()
-//                                }, 500)
-//                                homeViewModel.getIp()
-                            }
-                            else if (isConnect == App.CONNECTING) {
-                                vpnConnectionsUtil.stopVpn()
-                            }
-                            else if (isConnect == App.DISCONNECTED) {
-                                Log.d("isConnect_State_vpn", "startVPN")
-                                basePreferenceHelper.setConnectedServer(smartServer)
-                                if (smartServer != null) {
-//                                serverListViewModel.setRecentlyConnectedServer(smartServer)
-                                }
-                                vpnConnectionsUtil.startVpn()
-                            }
-
-//                                navHostController.navigate(
-//                                    BottomBarScreen.Settings.route
-//                                )
-//                                BottomBarScreen.Settings.isTrue = true
-
+//                            }
+//                            else if (isConnect == App.DISCONNECTED) {
+//                                Log.d("isConnect_State_vpn", "startVPN")
+//                                basePreferenceHelper.setConnectedServer(smartServer)
+//                                if (smartServer != null) {
+////                                serverListViewModel.setRecentlyConnectedServer(smartServer)
+//                                }
+//                                vpnConnectionsUtil.startVpn()
+//                            }
                         },
                         modifier = Modifier
                             .padding(start = 14.dp, end = 14.dp, bottom = 8.dp, top = 16.dp)
                             .align(Alignment.BottomCenter)
                             .background(colorResource(id = R.color.transparent))
+                            .onFocusChanged {
+                                isSmartButtonFocused = it.isFocused
+                            }
+//                            .focusable()
+//                            .clickable {
+//                                Toast.makeText(
+//                                    context, "Smart clickable{}", Toast.LENGTH_SHORT
+//                                ).show()
+//                            }
                             .fillMaxWidth()
                             .height(40.dp),
                         shape = RoundedCornerShape(16.dp),
                         colors = ButtonDefaults.buttonColors(
                             contentColor = colorResource(id = R.color.white),
-                            containerColor = colorResource(id = R.color.blue_text),
+                            containerColor = if (isSmartButtonFocused) colorResource(id = R.color.maroon_text) else colorResource(id = R.color.blue_text),
                         ),
                     ) {
                         Text(
@@ -456,14 +523,27 @@ fun HomeTV(navHostController: NavHostController) {
 
 //                Spacer(modifier = Modifier.weight(1f))
 
+                var isLayoutFocused by remember { mutableStateOf(false) }
+                val color = if (isLayoutFocused) colorResource(id = R.color.maroon_text) else colorResource(id = R.color.white)
                 Box(
                     modifier = Modifier
                         .fillMaxWidth(fraction = if (isTablet()) 0.5f else 1f)
                         .padding(horizontal = 20.dp, vertical = 5.dp)
                         .padding(top = 0.dp)
                         .height(60.dp)
+                        .onFocusChanged {
+                            isLayoutFocused = it.isFocused
+                        }
+                        .focusable()
+
+                        .clickable(
+                            indication = null,
+                            interactionSource = remember { MutableInteractionSource() }
+                            ) {
+                            Toast.makeText(context, "See All Pressed", Toast.LENGTH_SHORT).show()
+                        }
                         .border(
-                            border = BorderStroke(2.dp, colorResource(id = R.color.white)),
+                            border = BorderStroke(2.dp, color),
                             shape = RoundedCornerShape(28.dp)
                         )
                         .background(
@@ -486,35 +566,22 @@ fun BoxScope.AddRowSmartTV(
     navHostController: NavHostController,
     basePreferenceHelper: BasePreferenceHelper,
     context: Context,
-    isTablet: Boolean
+    isTablet: Boolean,
+    focusRequester2: FocusRequester
 ) {
     val smart = basePreferenceHelper.getSmartServerObject()
     val recommended = basePreferenceHelper.getRecommendedServerObject()
     val recently = basePreferenceHelper.getConnectedServer()
     val anySpecific = basePreferenceHelper.getSmartServerObject()
-
     val ipInfo = basePreferenceHelper.getIpinfo()
     val selectedSmartList = basePreferenceHelper.getSmartList()
     var selectedServer = basePreferenceHelper.getRecommendedServerObject()
     var selectedSmartServer = basePreferenceHelper.getSmartServerObject()
+    var isButtonFocused by remember { mutableStateOf(false) }
 
     Log.d("smartLocationList", "Home:: server = ${selectedServer?.server_name}")
     var icon = Utils.getDrawable(context, selectedServer?.iso)
 
-//    if (MainActivity.isSelectedServersShown) {
-//        selectedServer = basePreferenceHelper.getServerObject()
-//        icon = Utils.getDrawable(context, selectedServer?.iso)
-//
-//        when(selectedSmartList) {
-//            smartConnect[0] -> {
-//                selectedSmartServer = recommended
-//            }
-//        }
-//
-//    } else {
-//
-//    }
-
     when(selectedSmartList) {
         smartConnect[0] -> {
             icon = Utils.getDrawable(context, recommended?.iso)
@@ -534,8 +601,6 @@ fun BoxScope.AddRowSmartTV(
         else -> {}
     }
 
-//    basePreferenceHelper.setSmartServerObject(selectedSmartServer)
-
     Row(
         modifier = Modifier
             .fillMaxWidth()
@@ -593,23 +658,39 @@ fun BoxScope.AddRowSmartTV(
         }
         Spacer(modifier = Modifier.weight(1F))
         Surface(
-            modifier = Modifier.padding(start = 15.dp),
+            modifier = Modifier
+                .padding(start = 15.dp),
             color = Color.Transparent
         ) {
             ClickableText(
+                modifier = Modifier
+                    .focusRequester(focusRequester2)
+                    .onFocusChanged {
+                        isButtonFocused = it.isFocused
+                    }
+                    .clickable {
+                        Toast.makeText(
+                            context, "Change Pressed()", Toast.LENGTH_SHORT
+                        ).show()
+                    }
+                    .focusable()
+                ,
                 text = AnnotatedString("Change"),
                 style = MaterialTheme.typography.customTypography.headlineMedium.copy(
 //                    MaterialTheme.colorScheme.surfaceContainerLow,
-                    color = colorResource(id = R.color.blue_text),
+                    color = if (isButtonFocused) colorResource(id = R.color.maroon_text) else colorResource(id = R.color.blue_text),
                     fontSize = if (isTablet()) 20.sp else 14.sp
                 ),
                 onClick = {
-                    toChangeServer.value = true
-                    navHostController.navigate(
-                        Screen.ServerList.route
-                    )
-                    Screen.ServerList.isTrue = false
-                    Log.d("button_click_change", "Pressed")
+                    Toast.makeText(
+                        context, "Change Clicked()", Toast.LENGTH_SHORT
+                    ).show()
+//                    toChangeServer.value = true
+//                    navHostController.navigate(
+//                        Screen.ServerList.route
+//                    )
+//                    Screen.ServerList.isTrue = false
+//                    Log.d("button_click_change", "Pressed")
                 },
             )
         }
@@ -618,24 +699,25 @@ fun BoxScope.AddRowSmartTV(
 
 @Composable
 fun BoxScope.AddRowSelectServerTV(navHostController: NavHostController, isTablet: Boolean) {
+
+    val context = LocalContext.current
     Row(
         modifier = Modifier
             .fillMaxWidth()
             .padding(15.dp)
             .background(Color.Transparent)
-            .pointerInput(Unit) {
-                detectTapGestures {
-                    toChangeServer.value = false
-                    navHostController.navigate(
-                        Screen.ServerList.route
-                    )
-                    Screen.ServerList.isTrue = true
-                    Log.d("button_click_change", "Pressed")
-                }
-            }
-//            .clickable {
-//                Log.d("test_server_button", "ServerTab Clicked")
+
+//            .pointerInput(Unit) {
+//                detectTapGestures {
+//                    toChangeServer.value = false
+//                    navHostController.navigate(
+//                        Screen.ServerList.route
+//                    )
+//                    Screen.ServerList.isTrue = true
+//                    Log.d("button_click_change", "Pressed")
+//                }
 //            }
+
         ,
         horizontalArrangement = Arrangement.Start,
         verticalAlignment = Alignment.CenterVertically

+ 57 - 8
app/src/main/java/com/vpn/fastestvpnservice/screensTV/SettingsScreenTV.kt

@@ -7,11 +7,13 @@ import android.os.Build
 import android.os.Bundle
 import android.os.Handler
 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.clickable
+import androidx.compose.foundation.focusable
 import androidx.compose.foundation.gestures.detectTapGestures
 import androidx.compose.foundation.isSystemInDarkTheme
 import androidx.compose.foundation.layout.Arrangement
@@ -66,6 +68,11 @@ 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.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
@@ -79,6 +86,7 @@ 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
@@ -160,7 +168,8 @@ fun SettingsTV(navHostController: NavHostController) {
                     icon = R.drawable.vpn_protocols3x,
                     text = "VPN Protocols",
                     focusRequester1,
-                    focusRequester2
+                    focusRequester2,
+                    navHostController
                 )
                 AddRowSettingsSmartTV(
                     icon = R.drawable.smart_connect3x,
@@ -427,7 +436,8 @@ fun ColumnScope.AddRowSettingsColumnTV(
     icon: Int,
     text: String,
     focusRequester1: FocusRequester,
-    focusRequester2: FocusRequester
+    focusRequester2: FocusRequester,
+    navHostController: NavHostController
 ) {
     val context = LocalContext.current
     val basePreferenceHelper = BasePreferenceHelper(context = context)
@@ -456,17 +466,56 @@ fun ColumnScope.AddRowSettingsColumnTV(
             .clip(RoundedCornerShape(4.dp))
             .background(if (isFirstRowFocused) Color.LightGray else Color.White)
             .height(61.dp)
+            .onKeyEvent {
+                when (it.key) {
+                    Key.DirectionDown -> {
+                        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
+                    }
+                    else -> { false }
+                }
+            }
             .focusRequester(focusRequester1)
             .onFocusChanged {
                 isFirstRowFocused = it.isFocused
 //                if (!it.isFocused) focusRequester2.requestFocus()
 
             }
-            .pointerInput(Unit) {
-                detectTapGestures {
-                    isSheetOpen = true
-                }
-            }
+            .focusable()
+//            .pointerInput(Unit) {
+//                detectTapGestures {
+//                    isSheetOpen = true
+//                }
+//            }
             .clickable { isSheetOpen = true }
         ,
         horizontalArrangement = Arrangement.Start,
@@ -645,7 +694,7 @@ fun ColumnScope.AddRowSettingsSmartTV(
             .padding(top = 5.dp, end = 27.dp)
             .clip(RoundedCornerShape(4.dp))
             .background(if (isRowFocused) Color.LightGray else Color.White)
-//            .focusRequester(focusRequester2)
+            .focusRequester(focusRequester2)
             .onFocusChanged {
                 isRowFocused = it.isFocused
 //                if (!it.isFocused) focusRequester3.requestFocus()