Parcourir la source

If auto-connect is enabled then items are clickable otherwise disabled

Khubaib il y a 4 mois
Parent
commit
02cc038472

+ 42 - 24
app/src/main/java/com/vpn/fastestvpnservice/customItems/AutoConnectItem.kt

@@ -47,11 +47,16 @@ import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.isHomeViewModel1
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.isVpnConnectionsUtil
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.settingsViewModel
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.vpnConnectionsUtil
+import com.vpn.fastestvpnservice.screens.settingsScreenAll.isSwitchMutable
 import com.vpn.fastestvpnservice.viewmodels.HomeViewModel
 import de.blinkt.openvpn.core.App
 
 @Composable
-fun AutoConnectItem(mobileNetworkState: Boolean, basePreferenceHelper: BasePreferenceHelper) {
+fun AutoConnectItem(
+    mobileNetworkState: Boolean,
+    basePreferenceHelper: BasePreferenceHelper,
+    isEnabled: Boolean
+) {
     var isAdded by rememberSaveable { mutableStateOf(mobileNetworkState) }
 
     Box(
@@ -102,8 +107,10 @@ fun AutoConnectItem(mobileNetworkState: Boolean, basePreferenceHelper: BasePrefe
                 .background(Color.Transparent)
                 .pointerInput(Unit) {
                     detectTapGestures {
-                        isAdded = !isAdded
-                        basePreferenceHelper.setMobileNetworkState(isAdded)
+                        if (isSwitchMutable.value) {
+                            isAdded = !isAdded
+                            onClickMobileItem(basePreferenceHelper, isAdded)
+                        }
                     }
                 },
             verticalAlignment = Alignment.CenterVertically
@@ -120,8 +127,10 @@ fun AutoConnectItem(mobileNetworkState: Boolean, basePreferenceHelper: BasePrefe
                 modifier = Modifier
                     .size(20.dp),
                 onClick = {
-                    isAdded = !isAdded
-                    basePreferenceHelper.setMobileNetworkState(isAdded)
+                    if (isSwitchMutable.value) {
+                        isAdded = !isAdded
+                        onClickMobileItem(basePreferenceHelper, isAdded)
+                    }
                 }
             ) {
                 Icon(
@@ -136,12 +145,17 @@ fun AutoConnectItem(mobileNetworkState: Boolean, basePreferenceHelper: BasePrefe
     }
 }
 
+fun onClickMobileItem(basePreferenceHelper: BasePreferenceHelper, isAdded: Boolean) {
+    basePreferenceHelper.setMobileNetworkState(isAdded)
+}
+
 @Composable
 fun AutoConnectWifiItem(
     wifiList: AutoConnectModel,
     basePreferenceHelper: BasePreferenceHelper,
     connectedWifiSsid: String,
-    context: Context
+    context: Context,
+    isEnabled: Boolean
 ) {
     Log.d("autoconnect", "AutoConnectWifiItem = ${wifiList.wifiName} ${wifiList.isAdded}")
 
@@ -216,15 +230,17 @@ fun AutoConnectWifiItem(
                 .background(Color.Transparent)
                 .pointerInput(Unit) {
                     detectTapGestures {
-                        isAddedWifi = !isAddedWifi
-
-                        onClickAutoConnect(
-                            basePreferenceHelper,
-                            isAddedWifi,
-                            wifiList,
-                            connectedWifiSsid,
-                            homeViewModel,
-                        )
+                        if (isSwitchMutable.value) {
+                            isAddedWifi = !isAddedWifi
+
+                            onClickAutoConnect(
+                                basePreferenceHelper,
+                                isAddedWifi,
+                                wifiList,
+                                connectedWifiSsid,
+                                homeViewModel,
+                            )
+                        }
                     }
                 },
             verticalAlignment = Alignment.CenterVertically
@@ -241,15 +257,17 @@ fun AutoConnectWifiItem(
                 modifier = Modifier
                     .size(20.dp),
                 onClick = {
-                    isAddedWifi = !isAddedWifi
-
-                    onClickAutoConnect(
-                        basePreferenceHelper,
-                        isAddedWifi,
-                        wifiList,
-                        connectedWifiSsid,
-                        homeViewModel,
-                    )
+                    if (isSwitchMutable.value) {
+                        isAddedWifi = !isAddedWifi
+
+                        onClickAutoConnect(
+                            basePreferenceHelper,
+                            isAddedWifi,
+                            wifiList,
+                            connectedWifiSsid,
+                            homeViewModel,
+                        )
+                    }
                 }
             ) {
                 Icon(

+ 10 - 2
app/src/main/java/com/vpn/fastestvpnservice/screens/bottomNavBarScreens/SettingsScreen.kt

@@ -73,6 +73,7 @@ import androidx.compose.runtime.mutableFloatStateOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
@@ -119,6 +120,7 @@ import com.vpn.fastestvpnservice.screens.isServerModelInitialized
 import com.vpn.fastestvpnservice.screens.isSplashModelInitialized
 import com.vpn.fastestvpnservice.screens.searchListViewModelSplash
 import com.vpn.fastestvpnservice.screens.serverListViewModelSplash
+import com.vpn.fastestvpnservice.screens.settingsScreenAll.isSwitchMutable
 import com.vpn.fastestvpnservice.screens.settingsScreenAll.selectedSmart
 import com.vpn.fastestvpnservice.screens.splashViewModelSplash
 import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
@@ -210,7 +212,7 @@ fun Settings(navHostController: NavHostController, activity: ComponentActivity)
                     icon = R.drawable.smart_connect3x,
                     text = context.getString(R.string.smart_connect),
                     isRowShown = true,
-                    isSheetShown = false,
+                    isSheetShown = true,
                     navHostController
                 )
                 AddRowSwitch(
@@ -1394,7 +1396,13 @@ fun ColumnScope.AddRowSettingsSmart(
             .background(Color.Transparent)
             .pointerInput(Unit) {
                 detectTapGestures {
-                    isSmartSheetOpen = true
+                    if (isSheetShown) {
+                        isSmartSheetOpen = true
+                    } else {
+                        if (isSwitchMutable.value) {
+                            isSmartSheetOpen = true
+                        }
+                    }
                 }
             }
             .height(30.dp),

+ 92 - 91
app/src/main/java/com/vpn/fastestvpnservice/screens/settingsScreenAll/AutoConnectScreen.kt

@@ -3,10 +3,8 @@ package com.vpn.fastestvpnservice.screens.settingsScreenAll
 import android.app.Activity
 import android.content.Intent
 import android.os.Build
-import android.provider.Settings
 import android.util.Log
 import androidx.compose.foundation.BorderStroke
-import androidx.compose.foundation.Image
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
 import androidx.compose.foundation.layout.Arrangement
@@ -44,7 +42,6 @@ import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.alpha
 import androidx.compose.ui.draw.scale
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.ColorFilter
 import androidx.compose.ui.graphics.toArgb
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalView
@@ -59,9 +56,9 @@ import com.vpn.fastestvpnservice.fcm.WiFiMonitorService
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.AddRowSettingsSmart
 import com.vpn.fastestvpnservice.screens.bottomNavBarScreens.settingsViewModel
-import com.vpn.fastestvpnservice.utils.WireGuardService
 
 var selectedSmart: MutableState<String> = mutableStateOf("")
+var isSwitchMutable: MutableState<Boolean> = mutableStateOf(false)
 
 @Composable
 fun AutoConnectScreen(navHostController: NavHostController) {
@@ -71,6 +68,7 @@ fun AutoConnectScreen(navHostController: NavHostController) {
     var isAdded by rememberSaveable { mutableStateOf(false) }
     var isAddedWifi by rememberSaveable { mutableStateOf(false) }
     var isSwitch by rememberSaveable { mutableStateOf(basePreferenceHelper.getAutoConnectState()) }
+    isSwitchMutable.value = isSwitch
 
     val wifiList = settingsViewModel.liveDataConnectedWifi.observeAsState().value
     val connectedWifiSsid = settingsViewModel.liveDataConnectedSsid.observeAsState().value
@@ -155,114 +153,117 @@ fun AutoConnectScreen(navHostController: NavHostController) {
             }
         }
 
-        if (isSwitch) {
-            Column(
-                verticalArrangement = Arrangement.Top,
-                horizontalAlignment = Alignment.Start,
+        val alpha1 = if (isSwitch) 1f else 0.6f
+
+        Column(
+            verticalArrangement = Arrangement.Top,
+            horizontalAlignment = Alignment.Start,
+            modifier = Modifier
+                .padding(top = 170.dp, start = 16.dp, end = 0.dp)
+                .fillMaxSize()
+                .background(Color.Transparent)
+                .alpha(alpha1)
+        ) {
+            Text(
+                text = context.getString(R.string.preferred_location),
+                color = MaterialTheme.colorScheme.primary,
+                style = MaterialTheme.typography.titleSmall,
                 modifier = Modifier
-                    .padding(top = 170.dp, start = 16.dp, end = 0.dp)
-                    .fillMaxSize()
-                    .background(Color.Transparent)
-            ) {
-                Text(
-                    text = context.getString(R.string.preferred_location),
-                    color = MaterialTheme.colorScheme.primary,
-                    style = MaterialTheme.typography.titleSmall,
-                    modifier = Modifier
-                        .padding(end = 27.dp)
-                )
+                    .padding(end = 27.dp)
+            )
 
-                Text(
-                    text = context.getString(R.string.auto_connect_location),
-                    color = colorResource(id = R.color.gray_icon),
-                    style = MaterialTheme.typography.displaySmall,
-                    modifier = Modifier
-                        .padding(top = 5.dp, end = 27.dp)
-                        .alpha(1f)
-                )
+            Text(
+                text = context.getString(R.string.auto_connect_location),
+                color = colorResource(id = R.color.gray_icon),
+                style = MaterialTheme.typography.displaySmall,
+                modifier = Modifier
+                    .padding(top = 5.dp, end = 27.dp)
+                    .alpha(1f)
+            )
 
-                AddRowSettingsSmart(
-                    icon = R.drawable.smart_connect3x,
-                    text = selectedSmart.value,
-                    isRowShown = true,
-                    isSheetShown = false,
-                    navHostController = navHostController,
-                    topPadding = 20.dp
-                )
+            AddRowSettingsSmart(
+                icon = R.drawable.smart_connect3x,
+                text = selectedSmart.value,
+                isRowShown = false,
+                isSheetShown = isSwitchMutable.value,
+                navHostController = navHostController,
+                topPadding = 20.dp
+            )
 
-                Box(
-                    modifier = Modifier
-                        .wrapContentHeight()
-                        .fillMaxWidth()
-                        .padding(top = 20.dp, end = 27.dp)
-                        .border(
-                            border = BorderStroke(1.dp, colorResource(id = R.color.graywidget)),
-                            shape = RoundedCornerShape(14.dp)
-                        )
-                        .background(
-                            shape = RoundedCornerShape(14.dp),
-                            color = MaterialTheme.colorScheme.onBackground
-                        )
-                ) {
-                    Text(
-                        text = context.getString(R.string.auto_connect_functionality),
-                        color = colorResource(id = R.color.gray_icon),
-                        style = MaterialTheme.typography.displaySmall,
-                        modifier = Modifier
-                            .padding(all = 10.dp)
-                            .alpha(1f)
+            Box(
+                modifier = Modifier
+                    .wrapContentHeight()
+                    .fillMaxWidth()
+                    .padding(top = 20.dp, end = 27.dp)
+                    .border(
+                        border = BorderStroke(1.dp, colorResource(id = R.color.graywidget)),
+                        shape = RoundedCornerShape(14.dp)
                     )
-                }
-
-                Surface(
-                    modifier = Modifier
-                        .padding(top = 20.dp, end = 27.dp)
-                        .height(1.dp)
-                        .fillMaxWidth()
-                        .alpha(0.5F),
-                    color = colorResource(id = R.color.gray_icon)
-                ) {}
-
-                Text(
-                    text = context.getString(R.string.trusted_network),
-                    color = MaterialTheme.colorScheme.primary,
-                    style = MaterialTheme.typography.titleSmall,
-                    modifier = Modifier.padding(top = 20.dp)
-                )
-
+                    .background(
+                        shape = RoundedCornerShape(14.dp),
+                        color = MaterialTheme.colorScheme.onBackground
+                    )
+            ) {
                 Text(
-                    text = context.getString(R.string.trusted_network_disconnected),
+                    text = context.getString(R.string.auto_connect_functionality),
                     color = colorResource(id = R.color.gray_icon),
                     style = MaterialTheme.typography.displaySmall,
                     modifier = Modifier
-                        .padding(top = 15.dp, end = 27.dp)
+                        .padding(all = 10.dp)
                         .alpha(1f)
                 )
+            }
 
-                Text(
-                    text = context.getString(R.string.trusted_network_reconnected),
-                    color = colorResource(id = R.color.gray_icon),
-                    style = MaterialTheme.typography.displaySmall,
-                    modifier = Modifier
-                        .padding(top = 5.dp, end = 27.dp)
-                        .alpha(1f)
-                )
+            Surface(
+                modifier = Modifier
+                    .padding(top = 20.dp, end = 27.dp)
+                    .height(1.dp)
+                    .fillMaxWidth()
+                    .alpha(0.5F),
+                color = colorResource(id = R.color.gray_icon)
+            ) {}
 
-                val mobileNetworkState = basePreferenceHelper.getMobileNetworkState()
+            Text(
+                text = context.getString(R.string.trusted_network),
+                color = MaterialTheme.colorScheme.primary,
+                style = MaterialTheme.typography.titleSmall,
+                modifier = Modifier.padding(top = 20.dp)
+            )
 
-                AutoConnectItem(mobileNetworkState, basePreferenceHelper)
+            Text(
+                text = context.getString(R.string.trusted_network_disconnected),
+                color = colorResource(id = R.color.gray_icon),
+                style = MaterialTheme.typography.displaySmall,
+                modifier = Modifier
+                    .padding(top = 15.dp, end = 27.dp)
+                    .alpha(1f)
+            )
 
+            Text(
+                text = context.getString(R.string.trusted_network_reconnected),
+                color = colorResource(id = R.color.gray_icon),
+                style = MaterialTheme.typography.displaySmall,
+                modifier = Modifier
+                    .padding(top = 5.dp, end = 27.dp)
+                    .alpha(1f)
+            )
 
-                wifiList?.let {
-                    LazyColumn {
-                        items(items = wifiList) {
-                            AutoConnectWifiItem(it, basePreferenceHelper, connectedWifiSsid ?: "", context)
-                        }
+            val mobileNetworkState = basePreferenceHelper.getMobileNetworkState()
+
+            AutoConnectItem(mobileNetworkState, basePreferenceHelper, isSwitchMutable.value)
+
+
+            wifiList?.let {
+                LazyColumn {
+                    items(items = wifiList) {
+                        AutoConnectWifiItem(it, basePreferenceHelper, connectedWifiSsid ?: "", context, isSwitchMutable.value)
                     }
                 }
             }
         }
+
     }
+
 }
 
 @Composable