show label on topbar

This commit is contained in:
BinTianqi
2024-03-24 16:39:30 +08:00
parent a91b5837ce
commit 75e9e199ba
9 changed files with 90 additions and 47 deletions

View File

@@ -11,8 +11,8 @@ android {
applicationId = "com.binbin.androidowner" applicationId = "com.binbin.androidowner"
minSdk = 21 minSdk = 21
targetSdk = 34 targetSdk = 34
versionCode = 20 versionCode = 21
versionName = "4.3" versionName = "4.4"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables { vectorDrawables {

View File

@@ -192,13 +192,13 @@ fun HomePageItem(name:Int, imgVector:Int, navTo:String, myNav:NavHostController)
.padding(vertical = 13.dp), .padding(vertical = 13.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Spacer(modifier = Modifier.fillMaxWidth(0.08F)) Spacer(Modifier.padding(start = 30.dp))
Icon( Icon(
painter = painterResource(imgVector), painter = painterResource(imgVector),
contentDescription = null, contentDescription = null,
tint = colorScheme.onBackground tint = colorScheme.onBackground
) )
Spacer(modifier = Modifier.fillMaxWidth(0.05F)) Spacer(Modifier.padding(start = 15.dp))
Column { Column {
Text( Text(
text = stringResource(name), text = stringResource(name),

View File

@@ -28,6 +28,7 @@ import androidx.compose.material3.MaterialTheme.typography
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@@ -50,6 +51,7 @@ var ssidSet = mutableSetOf<WifiSsid>()
fun Network(navCtrl: NavHostController){ fun Network(navCtrl: NavHostController){
val localNavCtrl = rememberNavController() val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState() val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf( /*val titleMap = mapOf(
"Home" to R.string.network, "Home" to R.string.network,
"MinWifiSecurityLevel" to R.string.min_wifi_security_level, "MinWifiSecurityLevel" to R.string.min_wifi_security_level,
@@ -66,7 +68,14 @@ fun Network(navCtrl: NavHostController){
navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}}, navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}},
colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant) colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant)
)*/ )*/
TopBar(backStackEntry, navCtrl, localNavCtrl) TopBar(backStackEntry,navCtrl,localNavCtrl){
if(backStackEntry?.destination?.route=="Home"){
Text(
text = stringResource(R.string.network),
modifier = Modifier.alpha((maxOf(scrollState.value-30,0)).toFloat()/80)
)
}
}
} }
){ ){
NavHost( NavHost(
@@ -77,7 +86,7 @@ fun Network(navCtrl: NavHostController){
popExitTransition = Animations().navHostPopExitTransition, popExitTransition = Animations().navHostPopExitTransition,
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
){ ){
composable(route = "Home"){Home(localNavCtrl)} composable(route = "Home"){Home(localNavCtrl,scrollState)}
composable(route = "Switches"){Switches()} composable(route = "Switches"){Switches()}
composable(route = "MinWifiSecurityLevel"){WifiSecLevel()} composable(route = "MinWifiSecurityLevel"){WifiSecLevel()}
composable(route = "WifiSsidPolicy"){WifiSsidPolicy()} composable(route = "WifiSsidPolicy"){WifiSsidPolicy()}
@@ -90,11 +99,11 @@ fun Network(navCtrl: NavHostController){
} }
@Composable @Composable
private fun Home(navCtrl:NavHostController){ private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
val myContext = LocalContext.current val myContext = LocalContext.current
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java) val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())){ Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)){
Text(text = stringResource(R.string.network), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp)) Text(text = stringResource(R.string.network), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp))
if(VERSION.SDK_INT>=24&&isDeviceOwner(myDpm)){ if(VERSION.SDK_INT>=24&&isDeviceOwner(myDpm)){
val wifimac = myDpm.getWifiMacAddress(myComponent) val wifimac = myDpm.getWifiMacAddress(myComponent)

View File

@@ -11,18 +11,16 @@ import android.os.Build.VERSION
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.background import androidx.compose.foundation.*
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.material3.MaterialTheme.colorScheme import androidx.compose.material3.MaterialTheme.colorScheme
import androidx.compose.material3.MaterialTheme.typography import androidx.compose.material3.MaterialTheme.typography
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@@ -43,6 +41,7 @@ import com.binbin.androidowner.ui.theme.bgColor
fun Password(navCtrl: NavHostController){ fun Password(navCtrl: NavHostController){
val localNavCtrl = rememberNavController() val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState() val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf( /*val titleMap = mapOf(
"ResetPasswordToken" to R.string.reset_password_token, "ResetPasswordToken" to R.string.reset_password_token,
"PasswordInfo" to R.string.password_info, "PasswordInfo" to R.string.password_info,
@@ -62,7 +61,14 @@ fun Password(navCtrl: NavHostController){
navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}}, navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}},
colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant) colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant)
)*/ )*/
TopBar(backStackEntry, navCtrl, localNavCtrl) TopBar(backStackEntry,navCtrl,localNavCtrl){
if(backStackEntry?.destination?.route=="Home"){
Text(
text = stringResource(R.string.password_and_keyguard),
modifier = Modifier.alpha((maxOf(scrollState.value-30,0)).toFloat()/80)
)
}
}
} }
){ ){
NavHost( NavHost(
@@ -73,7 +79,7 @@ fun Password(navCtrl: NavHostController){
popExitTransition = Animations().navHostPopExitTransition, popExitTransition = Animations().navHostPopExitTransition,
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
){ ){
composable(route = "Home"){Home(localNavCtrl)} composable(route = "Home"){Home(localNavCtrl,scrollState)}
composable(route = "PasswordInfo"){PasswordInfo()} composable(route = "PasswordInfo"){PasswordInfo()}
composable(route = "ResetPasswordToken"){ResetPasswordToken()} composable(route = "ResetPasswordToken"){ResetPasswordToken()}
composable(route = "ResetPassword"){ResetPassword()} composable(route = "ResetPassword"){ResetPassword()}
@@ -89,8 +95,8 @@ fun Password(navCtrl: NavHostController){
} }
@Composable @Composable
private fun Home(navCtrl:NavHostController){ private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())){ Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)){
Text(text = stringResource(R.string.password_and_keyguard), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp)) Text(text = stringResource(R.string.password_and_keyguard), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp))
SubPageItem(R.string.password_info,"",R.drawable.info_fill0){navCtrl.navigate("PasswordInfo")} SubPageItem(R.string.password_info,"",R.drawable.info_fill0){navCtrl.navigate("PasswordInfo")}
if(VERSION.SDK_INT>=26){ if(VERSION.SDK_INT>=26){

View File

@@ -21,6 +21,7 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
@@ -47,6 +48,7 @@ import kotlinx.coroutines.launch
fun DpmPermissions(navCtrl:NavHostController){ fun DpmPermissions(navCtrl:NavHostController){
val localNavCtrl = rememberNavController() val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState() val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf( /*val titleMap = mapOf(
"Home" to R.string.permission, "Home" to R.string.permission,
"Shizuku" to R.string.shizuku, "Shizuku" to R.string.shizuku,
@@ -68,7 +70,14 @@ fun DpmPermissions(navCtrl:NavHostController){
navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}}, navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}},
colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant) colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant)
)*/ )*/
TopBar(backStackEntry,navCtrl,localNavCtrl) TopBar(backStackEntry,navCtrl,localNavCtrl){
if(backStackEntry?.destination?.route=="Home"){
Text(
text = stringResource(R.string.permission),
modifier = Modifier.alpha((maxOf(scrollState.value-30,0)).toFloat()/80)
)
}
}
} }
){ ){
NavHost( NavHost(
@@ -79,7 +88,7 @@ fun DpmPermissions(navCtrl:NavHostController){
popExitTransition = Animations().navHostPopExitTransition, popExitTransition = Animations().navHostPopExitTransition,
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
){ ){
composable(route = "Home"){Home(localNavCtrl)} composable(route = "Home"){Home(localNavCtrl,scrollState)}
composable(route = "Shizuku"){ShizukuActivate()} composable(route = "Shizuku"){ShizukuActivate()}
composable(route = "DeviceAdmin"){DeviceAdmin(navCtrl)} composable(route = "DeviceAdmin"){DeviceAdmin(navCtrl)}
composable(route = "ProfileOwner"){ProfileOwner()} composable(route = "ProfileOwner"){ProfileOwner()}
@@ -96,11 +105,11 @@ fun DpmPermissions(navCtrl:NavHostController){
} }
@Composable @Composable
private fun Home(localNavCtrl:NavHostController){ private fun Home(localNavCtrl:NavHostController,listScrollState:ScrollState){
val myContext = LocalContext.current val myContext = LocalContext.current
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java) val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())) { Column(modifier = Modifier.fillMaxSize().verticalScroll(listScrollState)) {
Text(text = stringResource(R.string.permission), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp)) Text(text = stringResource(R.string.permission), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp))
SubPageItem( SubPageItem(
R.string.device_admin, stringResource(if(myDpm.isAdminActive(myComponent)){R.string.activated}else{R.string.deactivated}), R.string.device_admin, stringResource(if(myDpm.isAdminActive(myComponent)){R.string.activated}else{R.string.deactivated}),

View File

@@ -19,19 +19,17 @@ import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.animateContentSize import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.background import androidx.compose.foundation.*
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.material3.MaterialTheme.colorScheme import androidx.compose.material3.MaterialTheme.colorScheme
import androidx.compose.material3.MaterialTheme.typography import androidx.compose.material3.MaterialTheme.typography
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@@ -54,6 +52,7 @@ import java.util.Date
fun SystemManage(navCtrl:NavHostController){ fun SystemManage(navCtrl:NavHostController){
val localNavCtrl = rememberNavController() val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState() val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf( /*val titleMap = mapOf(
"Switches" to R.string.options, "Switches" to R.string.options,
"Keyguard" to R.string.keyguard, "Keyguard" to R.string.keyguard,
@@ -76,7 +75,14 @@ fun SystemManage(navCtrl:NavHostController){
navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}}, navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}},
colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant) colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant)
)*/ )*/
TopBar(backStackEntry,navCtrl,localNavCtrl) TopBar(backStackEntry,navCtrl,localNavCtrl){
if(backStackEntry?.destination?.route=="Home"){
Text(
text = stringResource(R.string.device_ctrl),
modifier = Modifier.alpha((maxOf(scrollState.value-30,0)).toFloat()/80)
)
}
}
} }
){ ){
NavHost( NavHost(
@@ -87,7 +93,7 @@ fun SystemManage(navCtrl:NavHostController){
popExitTransition = Animations().navHostPopExitTransition, popExitTransition = Animations().navHostPopExitTransition,
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
){ ){
composable(route = "Home"){Home(localNavCtrl)} composable(route = "Home"){Home(localNavCtrl,scrollState)}
composable(route = "Switches"){Switches()} composable(route = "Switches"){Switches()}
composable(route = "Keyguard"){Keyguard()} composable(route = "Keyguard"){Keyguard()}
composable(route = "BugReport"){BugReport()} composable(route = "BugReport"){BugReport()}
@@ -106,10 +112,10 @@ fun SystemManage(navCtrl:NavHostController){
} }
@Composable @Composable
private fun Home(navCtrl: NavHostController){ private fun Home(navCtrl: NavHostController,scrollState: ScrollState){
val myContext = LocalContext.current val myContext = LocalContext.current
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())){ Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)){
Text(text = stringResource(R.string.device_ctrl), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp)) Text(text = stringResource(R.string.device_ctrl), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp))
if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){ if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){
SubPageItem(R.string.options,"",R.drawable.tune_fill0){navCtrl.navigate("Switches")} SubPageItem(R.string.options,"",R.drawable.tune_fill0){navCtrl.navigate("Switches")}

View File

@@ -15,18 +15,16 @@ import android.provider.MediaStore
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.background import androidx.compose.foundation.*
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.material3.MaterialTheme.typography import androidx.compose.material3.MaterialTheme.typography
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@@ -51,6 +49,7 @@ var affiliationID = mutableSetOf<String>()
fun UserManage(navCtrl:NavHostController) { fun UserManage(navCtrl:NavHostController) {
val localNavCtrl = rememberNavController() val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState() val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf( /*val titleMap = mapOf(
"UserInfo" to R.string.user_info, "UserInfo" to R.string.user_info,
"UserOperation" to R.string.user_operation, "UserOperation" to R.string.user_operation,
@@ -67,7 +66,14 @@ fun UserManage(navCtrl:NavHostController) {
navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}}, navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}},
colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant) colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant)
)*/ )*/
TopBar(backStackEntry,navCtrl,localNavCtrl) TopBar(backStackEntry,navCtrl,localNavCtrl){
if(backStackEntry?.destination?.route=="Home"){
Text(
text = stringResource(R.string.user_manage),
modifier = Modifier.alpha((maxOf(scrollState.value-30,0)).toFloat()/80)
)
}
}
} }
){ ){
NavHost( NavHost(
@@ -78,7 +84,7 @@ fun UserManage(navCtrl:NavHostController) {
popExitTransition = Animations().navHostPopExitTransition, popExitTransition = Animations().navHostPopExitTransition,
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
){ ){
composable(route = "Home"){Home(localNavCtrl)} composable(route = "Home"){Home(localNavCtrl,scrollState)}
composable(route = "UserInfo"){CurrentUserInfo()} composable(route = "UserInfo"){CurrentUserInfo()}
composable(route = "UserOperation"){UserOperation()} composable(route = "UserOperation"){UserOperation()}
composable(route = "CreateUser"){CreateUser()} composable(route = "CreateUser"){CreateUser()}
@@ -91,10 +97,10 @@ fun UserManage(navCtrl:NavHostController) {
} }
@Composable @Composable
private fun Home(navCtrl: NavHostController){ private fun Home(navCtrl: NavHostController,scrollState: ScrollState){
val myContext = LocalContext.current val myContext = LocalContext.current
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())){ Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)){
Text(text = stringResource(R.string.user_manage), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp)) Text(text = stringResource(R.string.user_manage), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 5.dp, start = 15.dp))
SubPageItem(R.string.user_info,"",R.drawable.person_fill0){navCtrl.navigate("UserInfo")} SubPageItem(R.string.user_info,"",R.drawable.person_fill0){navCtrl.navigate("UserInfo")}
SubPageItem(R.string.user_operation,"",R.drawable.sync_alt_fill0){navCtrl.navigate("UserOperation")} SubPageItem(R.string.user_operation,"",R.drawable.sync_alt_fill0){navCtrl.navigate("UserOperation")}

View File

@@ -10,6 +10,7 @@ import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@@ -23,6 +24,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -49,6 +51,7 @@ private data class Restriction(
fun UserRestriction(navCtrl: NavHostController){ fun UserRestriction(navCtrl: NavHostController){
val localNavCtrl = rememberNavController() val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState() val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf( /*val titleMap = mapOf(
"Internet" to R.string.network_internet, "Internet" to R.string.network_internet,
"Connectivity" to R.string.more_connectivity, "Connectivity" to R.string.more_connectivity,
@@ -64,7 +67,14 @@ fun UserRestriction(navCtrl: NavHostController){
navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}}, navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}},
colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant) colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.surfaceVariant)
)*/ )*/
TopBar(backStackEntry,navCtrl,localNavCtrl) TopBar(backStackEntry,navCtrl,localNavCtrl){
if(backStackEntry?.destination?.route=="Home"){
Text(
text = stringResource(R.string.user_restrict),
modifier = Modifier.alpha((maxOf(scrollState.value-30,0)).toFloat()/80)
)
}
}
} }
){ ){
NavHost( NavHost(
@@ -76,7 +86,7 @@ fun UserRestriction(navCtrl: NavHostController){
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
){ ){
composable(route = "Internet"){Internet()} composable(route = "Internet"){Internet()}
composable(route = "Home"){Home(localNavCtrl)} composable(route = "Home"){Home(localNavCtrl,scrollState)}
composable(route = "Connectivity"){Connectivity()} composable(route = "Connectivity"){Connectivity()}
composable(route = "Applications"){Application()} composable(route = "Applications"){Application()}
composable(route = "Users"){User()} composable(route = "Users"){User()}
@@ -87,11 +97,11 @@ fun UserRestriction(navCtrl: NavHostController){
} }
@Composable @Composable
private fun Home(navCtrl:NavHostController){ private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
val myContext = LocalContext.current val myContext = LocalContext.current
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java) val myComponent = ComponentName(myContext,MyDeviceAdminReceiver::class.java)
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())){ Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)){
Text(text = stringResource(R.string.user_restrict), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 7.dp, start = 15.dp)) Text(text = stringResource(R.string.user_restrict), style = typography.headlineLarge, modifier = Modifier.padding(top = 8.dp, bottom = 7.dp, start = 15.dp))
Text(text = stringResource(R.string.switch_to_disable_feature), modifier = Modifier.padding(start = 15.dp)) Text(text = stringResource(R.string.switch_to_disable_feature), modifier = Modifier.padding(start = 15.dp))
if(isProfileOwner(myDpm)){ Text(text = stringResource(R.string.profile_owner_is_restricted), modifier = Modifier.padding(start = 15.dp)) } if(isProfileOwner(myDpm)){ Text(text = stringResource(R.string.profile_owner_is_restricted), modifier = Modifier.padding(start = 15.dp)) }

View File

@@ -21,7 +21,6 @@ import androidx.compose.ui.unit.dp
import androidx.navigation.NavBackStackEntry import androidx.navigation.NavBackStackEntry
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import com.binbin.androidowner.R import com.binbin.androidowner.R
import com.binbin.androidowner.displayMetrics
import com.binbin.androidowner.ui.theme.bgColor import com.binbin.androidowner.ui.theme.bgColor
@Composable @Composable
@@ -35,11 +34,10 @@ fun SubPageItem(
modifier = Modifier.fillMaxWidth().clickable(onClick = operation).padding(vertical = 15.dp), modifier = Modifier.fillMaxWidth().clickable(onClick = operation).padding(vertical = 15.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
){ ){
Spacer(Modifier.padding(start = (displayMetrics.widthPixels/20).dp)) Spacer(Modifier.padding(start = 30.dp))
if(icon!=null){ if(icon!=null){
Spacer(Modifier.padding(start = (displayMetrics.widthPixels/60).dp))
Icon(painter = painterResource(icon), contentDescription = stringResource(title), modifier = Modifier.padding(top = 1.dp)) Icon(painter = painterResource(icon), contentDescription = stringResource(title), modifier = Modifier.padding(top = 1.dp))
Spacer(Modifier.padding(start = (displayMetrics.widthPixels/30).dp)) Spacer(Modifier.padding(start = 15.dp))
} }
Column { Column {
Text(text = stringResource(title), style = typography.titleLarge, modifier = Modifier.padding(bottom = 1.dp)) Text(text = stringResource(title), style = typography.titleLarge, modifier = Modifier.padding(bottom = 1.dp))
@@ -131,11 +129,10 @@ fun SwitchItem(
checked = getState() checked = getState()
Box(modifier = Modifier.fillMaxWidth().padding(vertical = 5.dp)) { Box(modifier = Modifier.fillMaxWidth().padding(vertical = 5.dp)) {
Row(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.align(Alignment.CenterStart)){ Row(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.align(Alignment.CenterStart)){
Spacer(Modifier.padding(start = (displayMetrics.widthPixels/20).dp)) Spacer(Modifier.padding(start = 30.dp))
if(icon!=null){ if(icon!=null){
Spacer(Modifier.padding(start = (displayMetrics.widthPixels/60).dp))
Icon(painter = painterResource(icon),contentDescription = null) Icon(painter = painterResource(icon),contentDescription = null)
Spacer(Modifier.padding(start = (displayMetrics.widthPixels/30).dp)) Spacer(Modifier.padding(start = 15.dp))
} }
Column(modifier = Modifier.padding(end = 60.dp)){ Column(modifier = Modifier.padding(end = 60.dp)){
Text(text = stringResource(title), style = typography.titleLarge) Text(text = stringResource(title), style = typography.titleLarge)