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"
minSdk = 21
targetSdk = 34
versionCode = 20
versionName = "4.3"
versionCode = 21
versionName = "4.4"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {

View File

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

View File

@@ -28,6 +28,7 @@ import androidx.compose.material3.MaterialTheme.typography
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
@@ -50,6 +51,7 @@ var ssidSet = mutableSetOf<WifiSsid>()
fun Network(navCtrl: NavHostController){
val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf(
"Home" to R.string.network,
"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()}}},
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(
@@ -77,7 +86,7 @@ fun Network(navCtrl: NavHostController){
popExitTransition = Animations().navHostPopExitTransition,
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 = "MinWifiSecurityLevel"){WifiSecLevel()}
composable(route = "WifiSsidPolicy"){WifiSsidPolicy()}
@@ -90,11 +99,11 @@ fun Network(navCtrl: NavHostController){
}
@Composable
private fun Home(navCtrl:NavHostController){
private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
val myContext = LocalContext.current
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
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))
if(VERSION.SDK_INT>=24&&isDeviceOwner(myDpm)){
val wifimac = myDpm.getWifiMacAddress(myComponent)

View File

@@ -11,18 +11,16 @@ import android.os.Build.VERSION
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.background
import androidx.compose.foundation.focusable
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.*
import androidx.compose.material3.MaterialTheme.colorScheme
import androidx.compose.material3.MaterialTheme.typography
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
@@ -43,6 +41,7 @@ import com.binbin.androidowner.ui.theme.bgColor
fun Password(navCtrl: NavHostController){
val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf(
"ResetPasswordToken" to R.string.reset_password_token,
"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()}}},
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(
@@ -73,7 +79,7 @@ fun Password(navCtrl: NavHostController){
popExitTransition = Animations().navHostPopExitTransition,
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 = "ResetPasswordToken"){ResetPasswordToken()}
composable(route = "ResetPassword"){ResetPassword()}
@@ -89,8 +95,8 @@ fun Password(navCtrl: NavHostController){
}
@Composable
private fun Home(navCtrl:NavHostController){
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())){
private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
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))
SubPageItem(R.string.password_info,"",R.drawable.info_fill0){navCtrl.navigate("PasswordInfo")}
if(VERSION.SDK_INT>=26){

View File

@@ -21,6 +21,7 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.*
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.platform.LocalContext
@@ -47,6 +48,7 @@ import kotlinx.coroutines.launch
fun DpmPermissions(navCtrl:NavHostController){
val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf(
"Home" to R.string.permission,
"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()}}},
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(
@@ -79,7 +88,7 @@ fun DpmPermissions(navCtrl:NavHostController){
popExitTransition = Animations().navHostPopExitTransition,
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 = "DeviceAdmin"){DeviceAdmin(navCtrl)}
composable(route = "ProfileOwner"){ProfileOwner()}
@@ -96,11 +105,11 @@ fun DpmPermissions(navCtrl:NavHostController){
}
@Composable
private fun Home(localNavCtrl:NavHostController){
private fun Home(localNavCtrl:NavHostController,listScrollState:ScrollState){
val myContext = LocalContext.current
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
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))
SubPageItem(
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.compose.animation.AnimatedVisibility
import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.background
import androidx.compose.foundation.focusable
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.*
import androidx.compose.material3.MaterialTheme.colorScheme
import androidx.compose.material3.MaterialTheme.typography
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
@@ -54,6 +52,7 @@ import java.util.Date
fun SystemManage(navCtrl:NavHostController){
val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf(
"Switches" to R.string.options,
"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()}}},
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(
@@ -87,7 +93,7 @@ fun SystemManage(navCtrl:NavHostController){
popExitTransition = Animations().navHostPopExitTransition,
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 = "Keyguard"){Keyguard()}
composable(route = "BugReport"){BugReport()}
@@ -106,10 +112,10 @@ fun SystemManage(navCtrl:NavHostController){
}
@Composable
private fun Home(navCtrl: NavHostController){
private fun Home(navCtrl: NavHostController,scrollState: ScrollState){
val myContext = LocalContext.current
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))
if(isDeviceOwner(myDpm)||isProfileOwner(myDpm)){
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 androidx.activity.ComponentActivity
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.background
import androidx.compose.foundation.focusable
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.*
import androidx.compose.material3.MaterialTheme.typography
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
@@ -51,6 +49,7 @@ var affiliationID = mutableSetOf<String>()
fun UserManage(navCtrl:NavHostController) {
val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf(
"UserInfo" to R.string.user_info,
"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()}}},
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(
@@ -78,7 +84,7 @@ fun UserManage(navCtrl:NavHostController) {
popExitTransition = Animations().navHostPopExitTransition,
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 = "UserOperation"){UserOperation()}
composable(route = "CreateUser"){CreateUser()}
@@ -91,10 +97,10 @@ fun UserManage(navCtrl:NavHostController) {
}
@Composable
private fun Home(navCtrl: NavHostController){
private fun Home(navCtrl: NavHostController,scrollState: ScrollState){
val myContext = LocalContext.current
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))
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")}

View File

@@ -10,6 +10,7 @@ import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
@@ -23,6 +24,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
@@ -49,6 +51,7 @@ private data class Restriction(
fun UserRestriction(navCtrl: NavHostController){
val localNavCtrl = rememberNavController()
val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
val scrollState = rememberScrollState()
/*val titleMap = mapOf(
"Internet" to R.string.network_internet,
"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()}}},
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(
@@ -76,7 +86,7 @@ fun UserRestriction(navCtrl: NavHostController){
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
){
composable(route = "Internet"){Internet()}
composable(route = "Home"){Home(localNavCtrl)}
composable(route = "Home"){Home(localNavCtrl,scrollState)}
composable(route = "Connectivity"){Connectivity()}
composable(route = "Applications"){Application()}
composable(route = "Users"){User()}
@@ -87,11 +97,11 @@ fun UserRestriction(navCtrl: NavHostController){
}
@Composable
private fun Home(navCtrl:NavHostController){
private fun Home(navCtrl:NavHostController,scrollState: ScrollState){
val myContext = LocalContext.current
val myDpm = myContext.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
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.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)) }

View File

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