|
@@ -30,6 +30,7 @@ import androidx.compose.foundation.pager.HorizontalPager
|
|
|
import androidx.compose.foundation.pager.rememberPagerState
|
|
|
import androidx.compose.foundation.selection.selectable
|
|
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
|
+import androidx.compose.material.AppBarDefaults
|
|
|
import androidx.compose.material.icons.Icons
|
|
|
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
|
@@ -71,11 +72,13 @@ import androidx.compose.runtime.livedata.observeAsState
|
|
|
import androidx.compose.runtime.saveable.rememberSaveable
|
|
|
import androidx.compose.ui.draw.alpha
|
|
|
import androidx.compose.ui.draw.clip
|
|
|
+import androidx.compose.ui.draw.shadow
|
|
|
import androidx.compose.ui.graphics.Color
|
|
|
import androidx.compose.ui.input.pointer.pointerInput
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
import androidx.compose.ui.platform.LocalFocusManager
|
|
|
import androidx.compose.ui.res.painterResource
|
|
|
+import androidx.compose.ui.zIndex
|
|
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
|
|
import com.vpn.fastestvpnservice.R
|
|
|
import com.vpn.fastestvpnservice.beans.Server
|
|
@@ -139,87 +142,103 @@ fun ServerList(
|
|
|
}
|
|
|
|
|
|
// Tab Row [Recommended, All Locations]
|
|
|
- TabRow(
|
|
|
- selectedTabIndex = selectedIndex,
|
|
|
- containerColor = Color.White,
|
|
|
- modifier = Modifier
|
|
|
- .fillMaxWidth()
|
|
|
- .padding(top = 16.dp)
|
|
|
- .background(Color.Transparent)
|
|
|
- .clip(RoundedCornerShape(28.dp))
|
|
|
- .height(68.dp)
|
|
|
- ,
|
|
|
- indicator = {
|
|
|
+
|
|
|
+// Surface(
|
|
|
+// modifier = Modifier
|
|
|
+// .fillMaxWidth()
|
|
|
+// .padding(top = 16.dp)
|
|
|
+// .background(Color.Transparent)
|
|
|
+// .clip(RoundedCornerShape(28.dp))
|
|
|
+// .height(68.dp),
|
|
|
+// ) {}
|
|
|
+
|
|
|
+ TabRow(
|
|
|
+ selectedTabIndex = selectedIndex,
|
|
|
+ containerColor = Color.White,
|
|
|
+ modifier = Modifier
|
|
|
+ .fillMaxWidth()
|
|
|
+ .padding(top = 16.dp)
|
|
|
+ .background(Color.Transparent)
|
|
|
+ .clip(RoundedCornerShape(28.dp))
|
|
|
+ .height(68.dp)
|
|
|
+// .shadow(
|
|
|
+// elevation = AppBarDefaults.TopAppBarElevation,
|
|
|
+// shape = MaterialTheme.shapes.small,
|
|
|
+// clip = true
|
|
|
+// )
|
|
|
+ ,
|
|
|
+ indicator = {
|
|
|
// TabRowDefaults.Indicator()
|
|
|
- },
|
|
|
- divider = {}
|
|
|
- ) {
|
|
|
- serverTabItems.forEachIndexed { index, currentTab ->
|
|
|
+ },
|
|
|
+ divider = {}
|
|
|
+ ) {
|
|
|
+ serverTabItems.forEachIndexed { index, currentTab ->
|
|
|
|
|
|
- val color = remember { Animatable(Color.White) }
|
|
|
+ val color = remember { Animatable(Color.White) }
|
|
|
|
|
|
- LaunchedEffect(key1 = selectedIndex == index) {
|
|
|
- color.animateTo(
|
|
|
- if (selectedIndex == index) Color(0xFFE9EDF9)
|
|
|
- else Color.White
|
|
|
- )
|
|
|
- }
|
|
|
+ LaunchedEffect(key1 = selectedIndex == index) {
|
|
|
+ color.animateTo(
|
|
|
+ if (selectedIndex == index) Color(0xFFE9EDF9)
|
|
|
+ else Color.White
|
|
|
+ )
|
|
|
+ }
|
|
|
|
|
|
- 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 = colorResource(id = R.color.dark_blue_gray_text),
|
|
|
+ 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 = colorResource(id = R.color.dark_blue_gray_text),
|
|
|
) },
|
|
|
- modifier = Modifier
|
|
|
- .padding(
|
|
|
- start = 10.dp, end = 10.dp,
|
|
|
- top = 10.dp, bottom = 10.dp
|
|
|
- )
|
|
|
- .background(
|
|
|
- color = color.value,
|
|
|
- shape = RoundedCornerShape(20.dp)
|
|
|
- )
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(
|
|
|
+ start = 10.dp, end = 10.dp,
|
|
|
+ top = 10.dp, bottom = 10.dp
|
|
|
+ )
|
|
|
+ .background(
|
|
|
+ color = color.value,
|
|
|
+ shape = RoundedCornerShape(20.dp)
|
|
|
+ )
|
|
|
|
|
|
- )
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- HorizontalPager(
|
|
|
- state = pagerState,
|
|
|
- modifier = Modifier
|
|
|
- .padding(top = 14.dp)
|
|
|
- .fillMaxWidth()
|
|
|
- .background(Color.Transparent),
|
|
|
- userScrollEnabled = false
|
|
|
- ) { page ->
|
|
|
- CompositionLocalProvider(
|
|
|
- LocalOverscrollConfiguration provides null
|
|
|
+
|
|
|
+ HorizontalPager(
|
|
|
+ state = pagerState,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(top = 14.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ .background(Color.Transparent),
|
|
|
+ userScrollEnabled = false
|
|
|
+ ) { page ->
|
|
|
+ CompositionLocalProvider(
|
|
|
+ LocalOverscrollConfiguration provides null
|
|
|
+ ) {
|
|
|
+ Column(
|
|
|
+ modifier = Modifier
|
|
|
+ .fillMaxSize()
|
|
|
+ .padding(top = 0.dp, bottom = 10.dp)
|
|
|
) {
|
|
|
- Column(
|
|
|
- modifier = Modifier
|
|
|
- .fillMaxSize()
|
|
|
- .padding(top = 0.dp, bottom = 10.dp)
|
|
|
- ) {
|
|
|
- if (page == 0) {
|
|
|
- ShowRecommendedList(serverListViewModel, basePreferenceHelper, navHostController)
|
|
|
- }
|
|
|
- else if (page == 1) {
|
|
|
- ShowAllLocationsList(serverListViewModel, basePreferenceHelper, navHostController)
|
|
|
- }
|
|
|
+ if (page == 0) {
|
|
|
+ ShowRecommendedList(serverListViewModel, basePreferenceHelper, navHostController)
|
|
|
+ }
|
|
|
+ else if (page == 1) {
|
|
|
+ ShowAllLocationsList(serverListViewModel, basePreferenceHelper, navHostController)
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -643,7 +662,8 @@ fun ColumnScope.ShowAllLocationsList(
|
|
|
LocalOverscrollConfiguration provides null
|
|
|
) {
|
|
|
Log.d("test_compose_servers", "serverTabPager = $serverTabPager")
|
|
|
- filterServersList = if (data[serverTabPager].name?.lowercase().toString() == "servers") {
|
|
|
+ filterServersList = if (
|
|
|
+ data[serverTabPager].name?.lowercase().toString() == "servers") {
|
|
|
data.get(serverTabPager).servers?.let {
|
|
|
serverListViewModel.filterServersByISO(
|
|
|
it, isAlphabetList.value
|
|
@@ -665,10 +685,11 @@ fun ColumnScope.ShowAllLocationsList(
|
|
|
LazyColumn() {
|
|
|
// Log.d("test_servers_size","size " + filterServersList?.size.toString())
|
|
|
items(items = filterServersList) { country ->
|
|
|
- calculatePing(country) {
|
|
|
- country.ping = it
|
|
|
- }
|
|
|
- CountryItem(server = country, data[serverTabPager].name!!, navHostController )
|
|
|
+// calculatePing(country) {
|
|
|
+// country.ping = it
|
|
|
+// }
|
|
|
+ CountryItem(server = country, data[serverTabPager].name!!,
|
|
|
+ navHostController )
|
|
|
}
|
|
|
}
|
|
|
}
|