ソースを参照

Split tunneling functionality implemented..

Khubaib 1 年間 前
コミット
88c484090a

+ 14 - 1
.idea/deploymentTargetDropDown.xml

@@ -6,7 +6,20 @@
         <State />
       </entry>
       <entry key="app">
-        <State />
+        <State>
+          <runningDeviceTargetSelectedWithDropDown>
+            <Target>
+              <type value="RUNNING_DEVICE_TARGET" />
+              <deviceKey>
+                <Key>
+                  <type value="SERIAL_NUMBER" />
+                  <value value="1C051FDF60048Z" />
+                </Key>
+              </deviceKey>
+            </Target>
+          </runningDeviceTargetSelectedWithDropDown>
+          <timeTargetWasSelectedWithDropDown value="2024-03-07T16:00:49.568400127Z" />
+        </State>
       </entry>
     </value>
   </component>

+ 8 - 4
app/src/main/java/com/vpn/fastestvpnservice/customItems/SplitTunnelingItem.kt

@@ -62,7 +62,7 @@ fun SplitTunnelingItem(
     list: List<SelectApplicationEntry>,
     position: Int
 ) {
-    var isSelected by rememberSaveable { mutableStateOf(list.get(position).isSelected().value) }
+    var isSelected by rememberSaveable { mutableStateOf(app.isSelected().value) }
 
     Surface(
         modifier = Modifier
@@ -89,9 +89,10 @@ fun SplitTunnelingItem(
                         MutableInteractionSource()
                     },
                 ) {
-                    list.get(position).setSelected(mutableStateOf(!isSelected))
+                    isSelected = !isSelected
 //                    Log.d("test_splittunnel_data", "$app ${list.get(position).isSelected().value}")
 
+                    list.get(position).setSelected(mutableStateOf(!list.get(position).isSelected().value))
                     countSelectedApp(list, context)
                 }
         ) {
@@ -103,7 +104,7 @@ fun SplitTunnelingItem(
                     .padding(bottom = 16.dp)
                     .size(40.dp)
             )
-            Text(text = app.toString() + " " + list.get(position).isSelected().value,
+            Text(text = "$app",
                 style = TextStyle(
                     fontSize = 14.sp,
                     color = if (isSelected) colorResource(id = R.color.dark_blue_gray_text)
@@ -119,7 +120,10 @@ fun SplitTunnelingItem(
             Checkbox(
                 checked = isSelected,
                 onCheckedChange = {
-                    list.get(position).setSelected(mutableStateOf(it))
+                    isSelected = !isSelected
+
+                    list.get(position).setSelected(mutableStateOf(!list.get(position).isSelected().value))
+                    countSelectedApp(list, context)
                 },
                 colors = CheckboxDefaults.colors(
                     uncheckedColor = colorResource(id = R.color.switch_gray),

+ 10 - 6
app/src/main/java/com/vpn/fastestvpnservice/screens/settingsScreenAll/SplitTunneling.kt

@@ -1,6 +1,7 @@
 package com.vpn.fastestvpnservice.screens.settingsScreenAll
 
 import android.Manifest
+import android.content.Context
 import android.content.pm.ApplicationInfo
 import android.content.pm.PackageManager
 import android.util.Log
@@ -61,6 +62,8 @@ import java.util.TreeSet
 
 @Composable
 fun SplitTunneling(navHostController: NavHostController) {
+    Log.d("test_split_compose", "SplitTunneling Screen")
+
     Box(
         modifier = Modifier
             .fillMaxSize()
@@ -126,9 +129,10 @@ fun SplitTunneling(navHostController: NavHostController) {
 
 @Composable
 fun ColumnScope.ShowRadioButtons() {
+    Log.d("test_split_compose", "ShowRadioButtons()")
     val context = LocalContext.current
     val prefHelper = BasePreferenceHelper(context = context)
-
+    var apps = ArrayList<SelectApplicationEntry>()
 
     var selectedList by remember { mutableStateOf(prefHelper.getSplitPosition()) }
 
@@ -145,6 +149,8 @@ fun ColumnScope.ShowRadioButtons() {
                         onClick = {
                             selectedList = list
                             prefHelper.saveSplitPosition(list)
+                            apps = getInstalledApps(context)
+
                         },
                     )
 //                                    .indication(
@@ -160,6 +166,7 @@ fun ColumnScope.ShowRadioButtons() {
                     onClick = {
                         selectedList = list
                         prefHelper.saveSplitPosition(list)
+                        apps = getInstalledApps(context)
                     },
                     colors = RadioButtonDefaults.colors(
                         selectedColor = colorResource(
@@ -189,8 +196,7 @@ fun ColumnScope.ShowRadioButtons() {
     ) {}
 
 
-    val apps = getInstalledApps()
-    val apps2 = getInstalledApps()
+    apps = getInstalledApps(context)
 
     Log.d("test_split_compose", "apps called : ${apps.size}")
 
@@ -222,9 +228,7 @@ fun ColumnScope.ShowRadioButtons() {
     }
 }
 
-@Composable
-fun getInstalledApps(): ArrayList<SelectApplicationEntry> {
-    val context = LocalContext.current
+fun getInstalledApps(context: Context): ArrayList<SelectApplicationEntry> {
     val prefHelper = BasePreferenceHelper(context)
     val apps: ArrayList<SelectApplicationEntry> = ArrayList()
 //    val apps2: ArrayList<SelectApplicationEntry> = ArrayList()