Просмотр исходного кода

adjust systemBars padding on OnBoarding screens, set splitTunnel Item UI [Check Box] and other..., Comment QR code on login screen on TV

Khubaib 11 месяцев назад
Родитель
Сommit
ab27982c9f

+ 1 - 0
.idea/gradle.xml

@@ -15,5 +15,6 @@
         <option name="resolveExternalAnnotations" value="false" />
       </GradleProjectSettings>
     </option>
+    <option name="offlineMode" value="true" />
   </component>
 </project>

+ 3 - 0
app/build.gradle.kts

@@ -135,6 +135,9 @@ dependencies {
 //    implementation("com.firebase:firebase-jobdispatcher:0.8.5")
     implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1")
 
+    implementation("com.google.zxing:core:3.4.1")
+    implementation("com.journeyapps:zxing-android-embedded:3.6.0")
+//    implementation("androidmads.library.qrgenerator:QRGenerator:1.0.3")
 
     // android view
     implementation("androidx.constraintlayout:constraintlayout:2.0.4")

+ 20 - 2
app/src/main/java/com/vpn/fastestvpnservice/activities/LoginActivityTV.kt

@@ -1,7 +1,7 @@
 package com.vpn.fastestvpnservice.activities
 
 import android.content.Intent
-import android.graphics.drawable.ColorDrawable
+import android.graphics.Bitmap
 import android.graphics.drawable.GradientDrawable
 import android.os.Bundle
 import android.text.InputType
@@ -11,6 +11,11 @@ import android.view.Window
 import androidx.appcompat.app.AppCompatActivity
 import androidx.lifecycle.Observer
 import com.google.firebase.BuildConfig
+import com.google.zxing.BarcodeFormat
+import com.google.zxing.WriterException
+import com.google.zxing.qrcode.QRCodeWriter
+import com.journeyapps.barcodescanner.BarcodeEncoder
+import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.DataResponse
 import com.vpn.fastestvpnservice.beans.UserResponse
 import com.vpn.fastestvpnservice.databinding.ActivityLoginTvBinding
@@ -19,7 +24,6 @@ import com.vpn.fastestvpnservice.utils.StaticMethods
 import com.vpn.fastestvpnservice.viewmodels.LoginViewModel
 import com.vpn.fastestvpnservice.views.CustomValidation
 import com.vpn.fastestvpnservice.widgets.SimpleAppWidget
-import com.vpn.fastestvpnservice.R
 import de.blinkt.openvpn.core.App
 
 
@@ -66,6 +70,7 @@ class LoginActivityTV : AppCompatActivity() {
 
         viewModelObserver()
         clickListeners()
+//        generateQRCode()
     }
 
     fun clickListeners() {
@@ -225,4 +230,17 @@ class LoginActivityTV : AppCompatActivity() {
         )
 
     }
+
+    fun generateQRCode() {
+        val url = "https://www.fastestvpn.com";
+        val qrCodeWriter = QRCodeWriter()
+        try {
+            val bitMatrix = qrCodeWriter.encode(url, BarcodeFormat.QR_CODE, 200, 200)
+            val barcodeEncoder: BarcodeEncoder = BarcodeEncoder()
+            val bitmap: Bitmap = barcodeEncoder.createBitmap(bitMatrix)
+            loginBinding.qrcode?.setImageBitmap(bitmap)
+        } catch (e: WriterException) {
+            e.printStackTrace()
+        }
+    }
 }

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

@@ -19,6 +19,9 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.layout.wrapContentWidth
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material.Checkbox
 import androidx.compose.material.CheckboxDefaults
@@ -52,6 +55,7 @@ import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.SelectApplicationEntry
 import com.vpn.fastestvpnservice.beans.SplitTunnelData
 import androidx.compose.ui.graphics.painter.BitmapPainter
+import androidx.compose.ui.text.style.TextOverflow
 import com.google.accompanist.drawablepainter.rememberDrawablePainter
 import com.vpn.fastestvpnservice.constants.splitList
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
@@ -78,11 +82,11 @@ fun SplitTunnelingItem(
         val context = LocalContext.current
 
         Row(
-            verticalAlignment = Alignment.Top,
+            verticalAlignment = Alignment.CenterVertically,
             horizontalArrangement = Arrangement.Start,
             modifier = Modifier
                 .fillMaxWidth()
-                .padding(start = 12.dp, end = 7.dp, top = 12.dp)
+                .padding(start = 12.dp, end = 7.dp, top = 15.dp, bottom = 15.dp)
                 .clickable(
                     indication = null,
                     interactionSource = remember {
@@ -95,26 +99,40 @@ fun SplitTunnelingItem(
                     list.get(position).setSelected(mutableStateOf(!list.get(position).isSelected().value))
                     countSelectedApp(list, context)
                 }
+                .background(Color.Transparent)
         ) {
             Image(
                 painter = rememberDrawablePainter(drawable = app.getIcon()),
                 contentDescription = "Server Logo",
 //                tint = Color.Unspecified,
                 modifier = Modifier
-                    .padding(bottom = 16.dp)
+                    .padding(bottom = 0.dp)
+                    .align(Alignment.CenterVertically)
                     .size(40.dp)
             )
             Text(text = "$app",
                 style = MaterialTheme.typography.bodySmall,
                 color = if (isSelected) MaterialTheme.colorScheme.primary
                 else MaterialTheme.colorScheme.primary,
+                maxLines = 2,
+                overflow = TextOverflow.Ellipsis,
                 modifier = Modifier
-                    .padding(start = 12.dp, bottom = 18.dp)
+                    .padding(start = 12.dp, bottom = 0.dp, end = 20.dp)
                     .align(Alignment.CenterVertically)
+                    .background(Color.Transparent)
+                    .weight(1f)
             )
-            Spacer(modifier = Modifier.weight(1F))
-
-
+//            Spacer(modifier = Modifier.weight(1F))
+
+//            Image(
+//                painter = rememberDrawablePainter(drawable = app.getIcon()),
+//                contentDescription = "Server Logo",
+////                tint = Color.Unspecified,
+//                modifier = Modifier
+//                    .padding(bottom = 18.dp, end = 8.dp)
+//                    .align(Alignment.CenterVertically)
+//                    .size(40.dp)
+//            )
             Checkbox(
                 checked = isSelected,
                 onCheckedChange = {
@@ -129,7 +147,7 @@ fun SplitTunnelingItem(
                 ),
 
                 modifier = Modifier
-                    .padding(bottom = 18.dp, end = 8.dp)
+                    .padding(start = 0.dp, bottom = 0.dp, end = 8.dp)
                     .align(Alignment.CenterVertically)
                     .background(
                         color = if (isSelected) colorResource(id = R.color.blue_text)

+ 3 - 0
app/src/main/java/com/vpn/fastestvpnservice/screens/BottomBarMainScreen.kt

@@ -9,11 +9,14 @@ import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.RowScope
 import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.systemBars
 import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.material.BottomNavigation
 import androidx.compose.material.BottomNavigationItem
 import androidx.compose.material.ContentAlpha

+ 4 - 0
app/src/main/java/com/vpn/fastestvpnservice/screens/ForgotPassword.kt

@@ -11,13 +11,16 @@ import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.systemBars
 import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.foundation.text.KeyboardActions
 import androidx.compose.foundation.text.KeyboardOptions
@@ -98,6 +101,7 @@ fun ForgotPassword(navHostController: NavHostController) {
                     keyboardController?.hide()
                 }
             }
+            .windowInsetsPadding(WindowInsets.systemBars)
         ,
 //        contentAlignment = Alignment.Center
 

+ 4 - 1
app/src/main/java/com/vpn/fastestvpnservice/screens/LoginScreen.kt

@@ -24,6 +24,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.systemBars
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.foundation.text.ClickableText
 import androidx.compose.foundation.text.KeyboardActions
@@ -128,6 +130,7 @@ fun Login(navHostController: NavHostController) {
                         contentScale = ContentScale.FillBounds
                     )
                     .alpha(if (readOnly == true) 0.6F else 1F)
+                    .windowInsetsPadding(WindowInsets.systemBars)
 //            .background(
 //                if (isSystemInDarkTheme()) Color.Black
 //                else Color.Transparent
@@ -420,7 +423,7 @@ fun Login(navHostController: NavHostController) {
                     )
                     Row (
                         modifier = Modifier
-                            .padding(bottom = 50.dp)
+                            .padding(bottom = 25.dp)
                             .align(Alignment.CenterHorizontally),
                     ){
                         TextMsgSignUp(navHostController = navHostController, loginViewModel, readOnly!!)

+ 70 - 73
app/src/main/java/com/vpn/fastestvpnservice/screens/ServerListScreen.kt

@@ -31,6 +31,7 @@ import androidx.compose.foundation.selection.selectable
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.automirrored.filled.ArrowBack
+import androidx.compose.material3.DockedSearchBar
 import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.Icon
 import androidx.compose.material3.IconButton
@@ -142,52 +143,33 @@ fun ServerList(
             val pagerState = rememberPagerState(initialPage = currentPageIndex, pageCount = {serverTabItems.size})
             val selectedIndex by remember { derivedStateOf { pagerState.currentPage } }
 
-//            if (Screen.ServerList.isTrue) {
-//                LaunchedEffect(key1 = true) {
-//                    scope.launch {
-//                        pagerState.animateScrollToPage(1)
-//                    }
-//                }
-//            }
-
-            // Tab Row [Recommended, All Locations]
-
-//            Surface(
-//                modifier = Modifier
-//                    .fillMaxWidth()
-//                    .padding(top = 16.dp)
-//                    .background(Color.Transparent)
-//                    .clip(RoundedCornerShape(28.dp))
-//                    .height(68.dp),
-//            ) {}
-
-                TabRow(
-                    selectedTabIndex = selectedIndex,
-                    containerColor = MaterialTheme.colorScheme.onBackground,
-                    modifier = Modifier
-                        .fillMaxWidth(if (isTablet()) 0.5f else 1f)
-                        .padding(top = 16.dp)
-                        .background(Color.Transparent)
-                        .clip(RoundedCornerShape(28.dp))
-                        .height(68.dp)
-                        .align(Alignment.CenterHorizontally)
+            TabRow(
+                selectedTabIndex = selectedIndex,
+                containerColor = MaterialTheme.colorScheme.onBackground,
+                modifier = Modifier
+                    .fillMaxWidth(if (isTablet()) 0.5f else 1f)
+                    .padding(top = 16.dp)
+                    .background(Color.Transparent)
+                    .clip(RoundedCornerShape(28.dp))
+                    .height(68.dp)
+                    .align(Alignment.CenterHorizontally)
 //                        .shadow(
 //                            elevation = AppBarDefaults.TopAppBarElevation,
 //                            shape = MaterialTheme.shapes.small,
 //                            clip = true
 //                        )
-                    ,
-                    indicator = {
+                ,
+                indicator = {
 //                    TabRowDefaults.Indicator()
-                    },
-                    divider = {}
-                ) {
-                    serverTabItems.forEachIndexed { index, currentTab ->
+                },
+                divider = {}
+            ) {
+                serverTabItems.forEachIndexed { index, currentTab ->
 
 //                        val color = remember { Animatable(Color.White) }
-                        var colorTab by remember { mutableStateOf(Color.White) }
-                        colorTab = if (selectedIndex == index) MaterialTheme.colorScheme.surfaceDim
-                        else MaterialTheme.colorScheme.onBackground
+                    var colorTab by remember { mutableStateOf(Color.White) }
+                    colorTab = if (selectedIndex == index) MaterialTheme.colorScheme.surfaceDim
+                    else MaterialTheme.colorScheme.onBackground
 
 //                        LaunchedEffect(key1 = selectedIndex == index) {
 //                            color.animateTo(
@@ -196,33 +178,33 @@ fun ServerList(
 //                            )
 //                        }
 
-                        Tab(
-                            selected = selectedIndex == index,
-                            onClick = {
-                                scope.launch {
-                                    pagerState.animateScrollToPage(index)
-                                }
-                            },
-                            selectedContentColor = Color.White,
-                            unselectedContentColor = Color.White,
-                            text = { Text(text = currentTab,
-                                style = MaterialTheme.typography.headlineMedium,
-                                color = if (selectedIndex == index) MaterialTheme.colorScheme.primary
-                                else MaterialTheme.colorScheme.onTertiary,
-                            ) },
-                            modifier = Modifier
-                                .padding(
-                                    start = 10.dp, end = 10.dp,
-                                    top = 10.dp, bottom = 10.dp
-                                )
-                                .background(
-                                    color = colorTab,
-                                    shape = RoundedCornerShape(20.dp)
-                                )
+                    Tab(
+                        selected = selectedIndex == index,
+                        onClick = {
+                            scope.launch {
+                                pagerState.animateScrollToPage(index)
+                            }
+                        },
+                        selectedContentColor = Color.White,
+                        unselectedContentColor = Color.White,
+                        text = { Text(text = currentTab,
+                            style = MaterialTheme.typography.headlineMedium,
+                            color = if (selectedIndex == index) MaterialTheme.colorScheme.primary
+                            else MaterialTheme.colorScheme.onTertiary,
+                        ) },
+                        modifier = Modifier
+                            .padding(
+                                start = 10.dp, end = 10.dp,
+                                top = 10.dp, bottom = 10.dp
+                            )
+                            .background(
+                                color = colorTab,
+                                shape = RoundedCornerShape(20.dp)
+                            )
 
-                        )
-                    }
+                    )
                 }
+            }
 
             HorizontalPager(
                 state = pagerState,
@@ -248,9 +230,6 @@ fun ServerList(
                         }
                     }
                 }
-
-
-
             }
         }
     }
@@ -920,13 +899,15 @@ fun ColumnScope.ShowSearchBar(
         CompositionLocalProvider(
             LocalOverscrollConfiguration provides null
         ) {
-            LazyColumn(
-                modifier = Modifier
-                    .padding(top = 0.dp, bottom = 0.dp),
-            ) {
-                val searchServersList = searchListViewModel.countriesList.value
-                items(items = searchServersList!!) { server ->
-                    ServerSearchItem(server, navHostController = navHostController) {}
+            val searchServersList = searchListViewModel.countriesList.value
+            if (searchServersList != null) {
+                LazyColumn(
+                    modifier = Modifier
+                        .padding(top = 0.dp, bottom = 0.dp),
+                ) {
+                    items(items = searchServersList) { server ->
+                        ServerSearchItem(server, navHostController = navHostController) {}
+                    }
                 }
             }
         }
@@ -1005,8 +986,24 @@ fun ServerListPreview() {
     ServerList(rememberNavController(), false)
 }
 
+//            if (Screen.ServerList.isTrue) {
+//                LaunchedEffect(key1 = true) {
+//                    scope.launch {
+//                        pagerState.animateScrollToPage(1)
+//                    }
+//                }
+//            }
 
+// Tab Row [Recommended, All Locations]
 
+//            Surface(
+//                modifier = Modifier
+//                    .fillMaxWidth()
+//                    .padding(top = 16.dp)
+//                    .background(Color.Transparent)
+//                    .clip(RoundedCornerShape(28.dp))
+//                    .height(68.dp),
+//            ) {}
 
 
 //                when (serverTabPager) {

+ 4 - 1
app/src/main/java/com/vpn/fastestvpnservice/screens/SignUpScreen.kt

@@ -15,13 +15,16 @@ import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.ColumnScope
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.systemBars
 import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.foundation.layout.wrapContentHeight
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.foundation.text.ClickableText
@@ -124,7 +127,6 @@ fun SignUp(navHostController: NavHostController) {
                         contentScale = ContentScale.FillBounds
                     )
                     .alpha(if (isSignUpEnabled!!) 0.6F else 1F)
-                    .padding(padding)
                     .fillMaxSize()
                     .pointerInput(Unit) {
                         detectTapGestures {
@@ -132,6 +134,7 @@ fun SignUp(navHostController: NavHostController) {
                             keyboardController?.hide()
                         }
                     }
+                    .windowInsetsPadding(WindowInsets.systemBars)
                     ,
             ) {
                 val view = LocalView.current

+ 5 - 1
app/src/main/java/com/vpn/fastestvpnservice/screens/SplashScreen.kt

@@ -16,12 +16,15 @@ import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.systemBars
 import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Lock
 import androidx.compose.material.icons.filled.ThumbUp
@@ -76,7 +79,8 @@ fun Splash(navHostController: NavHostController) {
         )
 //        .background(if (isSystemInDarkTheme()) Color.Black
 //        else colorResource(id = R.color.transparent))
-        .fillMaxSize(),
+        .fillMaxSize()
+        .windowInsetsPadding(WindowInsets.systemBars),
 
     ) {
         val view = LocalView.current

+ 5 - 1
app/src/main/java/com/vpn/fastestvpnservice/screens/StartedScreen.kt

@@ -13,13 +13,16 @@ import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.systemBars
 import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.foundation.layout.wrapContentHeight
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material3.Button
@@ -74,7 +77,8 @@ fun Started(navHostController: NavHostController) {
             .paint(
                 painter = painterResource(id = if (isDarkTheme.value) R.drawable.bgapp_dark else R.drawable.bg_img3),
                 contentScale = ContentScale.FillBounds
-            ),
+            )
+            .windowInsetsPadding(WindowInsets.systemBars),
     ) {
         val context = LocalContext.current
         val colors = intArrayOf(

+ 3 - 0
app/src/main/java/com/vpn/fastestvpnservice/screens/accountScreensAll/FavoriteServersScreen.kt

@@ -11,11 +11,14 @@ import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
 import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.systemBars
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.items
 import androidx.compose.material.Icon

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

@@ -220,7 +220,6 @@ fun Settings(navHostController: NavHostController) {
                     icon = R.drawable.adblock3x,
                     text = "AdBlock"
                 )
-                val context = LocalContext.current
                 AddRowSettings(
                     icon = R.drawable.kill_switch3x,
                     text = "Kill Switch",
@@ -1103,11 +1102,12 @@ fun ColumnScope.AddRowSettingsSmart(
                                 .fillMaxWidth()
                                 .height(50.dp)
                                 .padding(horizontal = 10.dp)
+                                .background(Color.Transparent)
                         ) {}
 
                         LazyColumn(
                             modifier = Modifier
-                                .padding(top = 20.dp, bottom = 0.dp),
+                                .padding(top = 20.dp, bottom = 40.dp),
                         ) {
                             val searchServersList = searchListViewModel.countriesList.value
                             items(items = searchServersList!!) { server ->

+ 4 - 0
app/src/main/java/com/vpn/fastestvpnservice/screens/helpScreensAll/EmailUsScreen.kt

@@ -9,12 +9,15 @@ import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.ColumnScope
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.WindowInsets
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.systemBars
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.foundation.text.KeyboardActions
 import androidx.compose.foundation.text.KeyboardOptions
 import androidx.compose.material.Icon
@@ -72,6 +75,7 @@ fun EmailUsScreen(navHostController: NavHostController) {
         modifier = Modifier
             .background(MaterialTheme.colorScheme.onPrimary)
             .fillMaxSize()
+
     ) {
         val view = LocalView.current
         val window = (view.context as Activity).window

+ 5 - 2
app/src/main/java/com/vpn/fastestvpnservice/screens/settingsScreenAll/SplitTunneling.kt

@@ -267,7 +267,7 @@ fun getInstalledApps(context: Context): ArrayList<SelectApplicationEntry> {
 
                 Log.d("test_splittunnel_data", "${entry.getInfo()?.name}")
 
-                Log.d("entry split", entry.toString())
+                Log.d("entry_split_FUSA","$entry")
 
                 apps.add(entry)
 //                apps2.add(entry)
@@ -302,6 +302,9 @@ fun getInstalledApps(context: Context): ArrayList<SelectApplicationEntry> {
                 apps.add(entry)
 //                apps2.add(entry)
                 seen.add(info.packageName)
+
+                Log.d("entry_split_FS","$entry")
+
             }
 
         }
@@ -311,7 +314,7 @@ fun getInstalledApps(context: Context): ArrayList<SelectApplicationEntry> {
 //    apps2.sort()
 
     apps.forEach {
-        Log.d("test_split_apps", "$it ${it.getIcon()}")
+        Log.d("test_split_apps", "$it")
     }
 //    apps2.forEach {
 //        Log.d("test_split_apps 2", "$$it ${it.getIcon()}")

+ 2 - 0
app/src/main/java/com/vpn/fastestvpnservice/viewmodels/SearchListViewModel.kt

@@ -49,6 +49,8 @@ class SearchListViewModel constructor(
 
     val basePreferenceHelper = BasePreferenceHelper(context)
 
+//    private var _countriesList = MutableLiveData<ArrayList<Server>>(getCountries())
+
     private var _countriesList = MutableLiveData<ArrayList<Server>>(getCountries())
     var countriesList: LiveData<ArrayList<Server>> = _countriesList
 

+ 9 - 0
app/src/main/res/layout-land/activity_login_tv.xml

@@ -188,6 +188,15 @@
                 app:layout_constraintTop_toBottomOf="@+id/linearLayout2" />
 
             <ImageView
+                android:id="@+id/qrcode"
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_marginTop="25dp"
+                app:layout_constraintEnd_toEndOf="@id/tvLogin"
+                app:layout_constraintStart_toStartOf="@id/tvLogin"
+                app:layout_constraintTop_toBottomOf="@id/tvLogin" />
+
+            <ImageView
                 android:id="@+id/imageView7"
                 android:layout_width="60dp"
                 android:layout_height="60dp"