mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 19:15:58 +00:00
switch Material you theme and black theme without relaunch app
This commit is contained in:
@@ -40,21 +40,23 @@ import androidx.navigation.compose.rememberNavController
|
|||||||
import com.bintianqi.owndroid.dpm.*
|
import com.bintianqi.owndroid.dpm.*
|
||||||
import com.bintianqi.owndroid.ui.Animations
|
import com.bintianqi.owndroid.ui.Animations
|
||||||
import com.bintianqi.owndroid.ui.theme.OwnDroidTheme
|
import com.bintianqi.owndroid.ui.theme.OwnDroidTheme
|
||||||
import com.bintianqi.owndroid.ui.theme.SetDarkTheme
|
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
|
|
||||||
var backToHome = false
|
var backToHome = false
|
||||||
@ExperimentalMaterial3Api
|
@ExperimentalMaterial3Api
|
||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
|
@SuppressLint("UnrememberedMutableState")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
enableEdgeToEdge()
|
enableEdgeToEdge()
|
||||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
registerActivityResult(this)
|
registerActivityResult(this)
|
||||||
|
val sharedPref = applicationContext.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||||
setContent {
|
setContent {
|
||||||
OwnDroidTheme {
|
val materialYou = mutableStateOf(sharedPref.getBoolean("material_you",true))
|
||||||
MyScaffold()
|
val blackTheme = mutableStateOf(sharedPref.getBoolean("black_theme", false))
|
||||||
|
OwnDroidTheme(materialYou.value, blackTheme.value){
|
||||||
|
MyScaffold(materialYou, blackTheme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -63,7 +65,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
@SuppressLint("UnrememberedMutableState")
|
@SuppressLint("UnrememberedMutableState")
|
||||||
@ExperimentalMaterial3Api
|
@ExperimentalMaterial3Api
|
||||||
@Composable
|
@Composable
|
||||||
fun MyScaffold(){
|
fun MyScaffold(materialYou:MutableState<Boolean>, blackTheme:MutableState<Boolean>){
|
||||||
val navCtrl = rememberNavController()
|
val navCtrl = rememberNavController()
|
||||||
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
|
||||||
@@ -72,7 +74,6 @@ fun MyScaffold(){
|
|||||||
val focusMgr = LocalFocusManager.current
|
val focusMgr = LocalFocusManager.current
|
||||||
val pkgName = mutableStateOf("")
|
val pkgName = mutableStateOf("")
|
||||||
val dialogStatus = mutableIntStateOf(0)
|
val dialogStatus = mutableIntStateOf(0)
|
||||||
SetDarkTheme()
|
|
||||||
LaunchedEffect(Unit){
|
LaunchedEffect(Unit){
|
||||||
while(true){
|
while(true){
|
||||||
if(backToHome){ navCtrl.navigateUp(); backToHome=false }
|
if(backToHome){ navCtrl.navigateUp(); backToHome=false }
|
||||||
@@ -84,7 +85,7 @@ fun MyScaffold(){
|
|||||||
startDestination = "HomePage",
|
startDestination = "HomePage",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.background(bgColor)
|
.background(colorScheme.background)
|
||||||
.imePadding()
|
.imePadding()
|
||||||
.pointerInput(Unit) {detectTapGestures(onTap = {focusMgr.clearFocus()})},
|
.pointerInput(Unit) {detectTapGestures(onTap = {focusMgr.clearFocus()})},
|
||||||
enterTransition = Animations.navHostEnterTransition,
|
enterTransition = Animations.navHostEnterTransition,
|
||||||
@@ -100,7 +101,7 @@ fun MyScaffold(){
|
|||||||
composable(route = "UserRestriction", content = { UserRestriction(navCtrl)})
|
composable(route = "UserRestriction", content = { UserRestriction(navCtrl)})
|
||||||
composable(route = "UserManage", content = { UserManage(navCtrl)})
|
composable(route = "UserManage", content = { UserManage(navCtrl)})
|
||||||
composable(route = "Password", content = { Password(navCtrl)})
|
composable(route = "Password", content = { Password(navCtrl)})
|
||||||
composable(route = "AppSetting", content = { AppSetting(navCtrl)})
|
composable(route = "AppSetting", content = { AppSetting(navCtrl, materialYou, blackTheme)})
|
||||||
composable(route = "Network", content = {Network(navCtrl)})
|
composable(route = "Network", content = {Network(navCtrl)})
|
||||||
composable(route = "PackageSelector"){PackageSelector(navCtrl, pkgName)}
|
composable(route = "PackageSelector"){PackageSelector(navCtrl, pkgName)}
|
||||||
composable(route = "PermissionPicker"){PermissionPicker(navCtrl)}
|
composable(route = "PermissionPicker"){PermissionPicker(navCtrl)}
|
||||||
@@ -131,7 +132,10 @@ private fun HomePage(navCtrl:NavHostController, pkgName: MutableState<String>){
|
|||||||
LaunchedEffect(Unit){ pkgName.value = "" }
|
LaunchedEffect(Unit){ pkgName.value = "" }
|
||||||
Column(modifier = Modifier.statusBarsPadding().verticalScroll(rememberScrollState())) {
|
Column(modifier = Modifier.statusBarsPadding().verticalScroll(rememberScrollState())) {
|
||||||
Spacer(Modifier.padding(vertical = 25.dp))
|
Spacer(Modifier.padding(vertical = 25.dp))
|
||||||
Text(text = stringResource(R.string.app_name), style = typography.headlineLarge, modifier = Modifier.padding(start = 10.dp), color = colorScheme.onBackground)
|
Text(
|
||||||
|
text = stringResource(R.string.app_name), style = typography.headlineLarge,
|
||||||
|
modifier = Modifier.padding(start = 10.dp), color = colorScheme.onBackground
|
||||||
|
)
|
||||||
Spacer(Modifier.padding(vertical = 8.dp))
|
Spacer(Modifier.padding(vertical = 8.dp))
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package com.bintianqi.owndroid
|
|||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.os.Build.VERSION
|
import android.os.Build.VERSION
|
||||||
import androidx.compose.foundation.background
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
@@ -17,7 +16,6 @@ import androidx.navigation.NavHostController
|
|||||||
import com.bintianqi.owndroid.dpm.applySelectedPermission
|
import com.bintianqi.owndroid.dpm.applySelectedPermission
|
||||||
import com.bintianqi.owndroid.dpm.selectedPermission
|
import com.bintianqi.owndroid.dpm.selectedPermission
|
||||||
import com.bintianqi.owndroid.ui.NavIcon
|
import com.bintianqi.owndroid.ui.NavIcon
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
@@ -27,12 +25,12 @@ fun PermissionPicker(navCtrl: NavHostController){
|
|||||||
TopAppBar(
|
TopAppBar(
|
||||||
title = {Text(text = stringResource(R.string.permission_picker))},
|
title = {Text(text = stringResource(R.string.permission_picker))},
|
||||||
navigationIcon = {NavIcon{navCtrl.navigateUp()}},
|
navigationIcon = {NavIcon{navCtrl.navigateUp()}},
|
||||||
colors = TopAppBarDefaults.topAppBarColors(containerColor = bgColor)
|
colors = TopAppBarDefaults.topAppBarColors(containerColor = MaterialTheme.colorScheme.background)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
){ paddingValues->
|
){ paddingValues->
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
modifier = Modifier.fillMaxSize().padding(top = paddingValues.calculateTopPadding()).background(bgColor)
|
modifier = Modifier.fillMaxSize().padding(top = paddingValues.calculateTopPadding())
|
||||||
){
|
){
|
||||||
items(permissionList()){
|
items(permissionList()){
|
||||||
Column(
|
Column(
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import androidx.compose.foundation.lazy.items
|
|||||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material3.*
|
||||||
|
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.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
@@ -22,7 +23,6 @@ import androidx.compose.ui.res.stringResource
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.navigation.NavHostController
|
import androidx.navigation.NavHostController
|
||||||
import com.bintianqi.owndroid.ui.NavIcon
|
import com.bintianqi.owndroid.ui.NavIcon
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
import com.google.accompanist.drawablepainter.rememberDrawablePainter
|
import com.google.accompanist.drawablepainter.rememberDrawablePainter
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -124,14 +124,14 @@ fun PackageSelector(navCtrl:NavHostController, pkgName: MutableState<String>){
|
|||||||
title = {
|
title = {
|
||||||
Text(text = stringResource(R.string.pkg_selector))
|
Text(text = stringResource(R.string.pkg_selector))
|
||||||
},
|
},
|
||||||
navigationIcon = {NavIcon{navCtrl.navigateUp()}},
|
navigationIcon = { NavIcon{navCtrl.navigateUp()} },
|
||||||
colors = TopAppBarDefaults.topAppBarColors(containerColor = bgColor)
|
colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.background)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
){paddingValues->
|
){paddingValues->
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
modifier = Modifier.fillMaxSize().background(bgColor).padding(top = paddingValues.calculateTopPadding()),
|
modifier = Modifier.fillMaxSize().padding(top = paddingValues.calculateTopPadding()),
|
||||||
state = scrollState
|
state = scrollState
|
||||||
){
|
){
|
||||||
items(1){
|
items(1){
|
||||||
|
|||||||
@@ -3,19 +3,21 @@ package com.bintianqi.owndroid
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.compose.foundation.background
|
import android.os.Build.VERSION
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.isSystemInDarkTheme
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material3.MaterialTheme.colorScheme
|
|
||||||
import androidx.compose.material3.MaterialTheme.typography
|
import androidx.compose.material3.MaterialTheme.typography
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.MutableState
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
|
||||||
import androidx.compose.ui.graphics.toArgb
|
|
||||||
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
|
||||||
@@ -24,12 +26,13 @@ import androidx.navigation.compose.NavHost
|
|||||||
import androidx.navigation.compose.composable
|
import androidx.navigation.compose.composable
|
||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import com.bintianqi.owndroid.ui.*
|
import com.bintianqi.owndroid.ui.Animations
|
||||||
import com.bintianqi.owndroid.ui.theme.SetDarkTheme
|
import com.bintianqi.owndroid.ui.SubPageItem
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
import com.bintianqi.owndroid.ui.SwitchItem
|
||||||
|
import com.bintianqi.owndroid.ui.TopBar
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AppSetting(navCtrl:NavHostController){
|
fun AppSetting(navCtrl:NavHostController, materialYou: MutableState<Boolean>, blackTheme: MutableState<Boolean>){
|
||||||
val localNavCtrl = rememberNavController()
|
val localNavCtrl = rememberNavController()
|
||||||
val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
|
val backStackEntry by localNavCtrl.currentBackStackEntryAsState()
|
||||||
/*val titleMap = mapOf(
|
/*val titleMap = mapOf(
|
||||||
@@ -51,10 +54,10 @@ fun AppSetting(navCtrl:NavHostController){
|
|||||||
exitTransition = Animations.navHostExitTransition,
|
exitTransition = Animations.navHostExitTransition,
|
||||||
popEnterTransition = Animations.navHostPopEnterTransition,
|
popEnterTransition = Animations.navHostPopEnterTransition,
|
||||||
popExitTransition = Animations.navHostPopExitTransition,
|
popExitTransition = Animations.navHostPopExitTransition,
|
||||||
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
|
modifier = Modifier.padding(top = it.calculateTopPadding())
|
||||||
){
|
){
|
||||||
composable(route = "Home"){Home(localNavCtrl)}
|
composable(route = "Home"){Home(localNavCtrl)}
|
||||||
composable(route = "Settings"){Settings()}
|
composable(route = "Settings"){Settings(materialYou, blackTheme)}
|
||||||
composable(route = "About"){About()}
|
composable(route = "About"){About()}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,24 +72,28 @@ private fun Home(navCtrl: NavHostController){
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun Settings(){
|
private fun Settings(materialYou:MutableState<Boolean>, blackTheme:MutableState<Boolean>){
|
||||||
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||||
SetDarkTheme()
|
|
||||||
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())) {
|
Column(modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState())) {
|
||||||
|
if(VERSION.SDK_INT>=31){
|
||||||
SwitchItem(
|
SwitchItem(
|
||||||
R.string.dynamic_color, stringResource(R.string.dynamic_color_desc),null,
|
R.string.material_you_color, stringResource(R.string.dynamic_color_desc), null,
|
||||||
{sharedPref.getBoolean("dynamicColor",false)},{sharedPref.edit().putBoolean("dynamicColor",it).apply()}
|
{ sharedPref.getBoolean("material_you",true) },
|
||||||
)
|
{
|
||||||
if(colorScheme.background.toArgb()!=Color(0xFF000000).toArgb()){
|
sharedPref.edit().putBoolean("material_you",it).apply()
|
||||||
SwitchItem(
|
materialYou.value = it
|
||||||
R.string.blackTheme, stringResource(R.string.blackTheme_desc),null,
|
}
|
||||||
{sharedPref.getBoolean("blackTheme",false)},{sharedPref.edit().putBoolean("blackTheme",it).apply()}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Box(modifier = Modifier.padding(10.dp)){
|
if(isSystemInDarkTheme()){
|
||||||
Information {
|
SwitchItem(
|
||||||
Text(text = stringResource(R.string.need_relaunch))
|
R.string.amoled_black, stringResource(R.string.blackTheme_desc), null,
|
||||||
|
{ sharedPref.getBoolean("black_theme",false) },
|
||||||
|
{
|
||||||
|
sharedPref.edit().putBoolean("black_theme",it).apply()
|
||||||
|
blackTheme.value = it
|
||||||
}
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ import androidx.navigation.compose.rememberNavController
|
|||||||
import com.bintianqi.owndroid.*
|
import com.bintianqi.owndroid.*
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.ui.*
|
import com.bintianqi.owndroid.ui.*
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
@@ -122,8 +121,7 @@ fun ApplicationManage(navCtrl:NavHostController, pkgName: MutableState<String>,
|
|||||||
enterTransition = Animations.navHostEnterTransition,
|
enterTransition = Animations.navHostEnterTransition,
|
||||||
exitTransition = Animations.navHostExitTransition,
|
exitTransition = Animations.navHostExitTransition,
|
||||||
popEnterTransition = Animations.navHostPopEnterTransition,
|
popEnterTransition = Animations.navHostPopEnterTransition,
|
||||||
popExitTransition = Animations.navHostPopExitTransition,
|
popExitTransition = Animations.navHostPopExitTransition
|
||||||
modifier = Modifier.background(bgColor)
|
|
||||||
){
|
){
|
||||||
composable(route = "Home"){Home(localNavCtrl, pkgName.value, dialogStatus)}
|
composable(route = "Home"){Home(localNavCtrl, pkgName.value, dialogStatus)}
|
||||||
composable(route = "UserControlDisabled"){UserCtrlDisabledPkg(pkgName.value)}
|
composable(route = "UserControlDisabled"){UserCtrlDisabledPkg(pkgName.value)}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ 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.focusable
|
import androidx.compose.foundation.focusable
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
@@ -17,9 +16,12 @@ 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.foundation.verticalScroll
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material3.Button
|
||||||
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.material3.OutlinedTextField
|
||||||
|
import androidx.compose.material3.Scaffold
|
||||||
|
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.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
@@ -36,7 +38,6 @@ import androidx.navigation.compose.rememberNavController
|
|||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
import com.bintianqi.owndroid.Receiver
|
||||||
import com.bintianqi.owndroid.ui.*
|
import com.bintianqi.owndroid.ui.*
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ManagedProfile(navCtrl: NavHostController) {
|
fun ManagedProfile(navCtrl: NavHostController) {
|
||||||
@@ -65,7 +66,7 @@ fun ManagedProfile(navCtrl: NavHostController) {
|
|||||||
exitTransition = Animations.navHostExitTransition,
|
exitTransition = Animations.navHostExitTransition,
|
||||||
popEnterTransition = Animations.navHostPopEnterTransition,
|
popEnterTransition = Animations.navHostPopEnterTransition,
|
||||||
popExitTransition = Animations.navHostPopExitTransition,
|
popExitTransition = Animations.navHostPopExitTransition,
|
||||||
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
|
modifier = Modifier.padding(top = it.calculateTopPadding())
|
||||||
){
|
){
|
||||||
composable(route = "Home"){Home(localNavCtrl)}
|
composable(route = "Home"){Home(localNavCtrl)}
|
||||||
composable(route = "OrgOwnedWorkProfile"){OrgOwnedProfile()}
|
composable(route = "OrgOwnedWorkProfile"){OrgOwnedProfile()}
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ import com.bintianqi.owndroid.R
|
|||||||
import com.bintianqi.owndroid.Receiver
|
import com.bintianqi.owndroid.Receiver
|
||||||
import com.bintianqi.owndroid.toText
|
import com.bintianqi.owndroid.toText
|
||||||
import com.bintianqi.owndroid.ui.*
|
import com.bintianqi.owndroid.ui.*
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
|
|
||||||
var ssidSet = mutableSetOf<WifiSsid>()
|
var ssidSet = mutableSetOf<WifiSsid>()
|
||||||
@Composable
|
@Composable
|
||||||
@@ -85,7 +84,7 @@ fun Network(navCtrl: NavHostController){
|
|||||||
exitTransition = Animations.navHostExitTransition,
|
exitTransition = Animations.navHostExitTransition,
|
||||||
popEnterTransition = Animations.navHostPopEnterTransition,
|
popEnterTransition = Animations.navHostPopEnterTransition,
|
||||||
popExitTransition = Animations.navHostPopExitTransition,
|
popExitTransition = Animations.navHostPopExitTransition,
|
||||||
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
|
modifier = Modifier.padding(top = it.calculateTopPadding())
|
||||||
){
|
){
|
||||||
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
||||||
composable(route = "Switches"){Switches()}
|
composable(route = "Switches"){Switches()}
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ import androidx.navigation.compose.rememberNavController
|
|||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
import com.bintianqi.owndroid.Receiver
|
||||||
import com.bintianqi.owndroid.ui.*
|
import com.bintianqi.owndroid.ui.*
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Password(navCtrl: NavHostController){
|
fun Password(navCtrl: NavHostController){
|
||||||
@@ -78,7 +77,7 @@ fun Password(navCtrl: NavHostController){
|
|||||||
exitTransition = Animations.navHostExitTransition,
|
exitTransition = Animations.navHostExitTransition,
|
||||||
popEnterTransition = Animations.navHostPopEnterTransition,
|
popEnterTransition = Animations.navHostPopEnterTransition,
|
||||||
popExitTransition = Animations.navHostPopExitTransition,
|
popExitTransition = Animations.navHostPopExitTransition,
|
||||||
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
|
modifier = Modifier.padding(top = it.calculateTopPadding())
|
||||||
){
|
){
|
||||||
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
||||||
composable(route = "PasswordInfo"){PasswordInfo()}
|
composable(route = "PasswordInfo"){PasswordInfo()}
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ import androidx.navigation.compose.rememberNavController
|
|||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.Receiver
|
import com.bintianqi.owndroid.Receiver
|
||||||
import com.bintianqi.owndroid.ui.*
|
import com.bintianqi.owndroid.ui.*
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@@ -82,7 +81,7 @@ fun DpmPermissions(navCtrl:NavHostController){
|
|||||||
exitTransition = Animations.navHostExitTransition,
|
exitTransition = Animations.navHostExitTransition,
|
||||||
popEnterTransition = Animations.navHostPopEnterTransition,
|
popEnterTransition = Animations.navHostPopEnterTransition,
|
||||||
popExitTransition = Animations.navHostPopExitTransition,
|
popExitTransition = Animations.navHostPopExitTransition,
|
||||||
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
|
modifier = Modifier.padding(top = it.calculateTopPadding())
|
||||||
){
|
){
|
||||||
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
||||||
composable(route = "Shizuku"){ShizukuActivate()}
|
composable(route = "Shizuku"){ShizukuActivate()}
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ import androidx.navigation.compose.rememberNavController
|
|||||||
import com.bintianqi.owndroid.*
|
import com.bintianqi.owndroid.*
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.ui.*
|
import com.bintianqi.owndroid.ui.*
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
@@ -91,7 +90,7 @@ fun SystemManage(navCtrl:NavHostController){
|
|||||||
exitTransition = Animations.navHostExitTransition,
|
exitTransition = Animations.navHostExitTransition,
|
||||||
popEnterTransition = Animations.navHostPopEnterTransition,
|
popEnterTransition = Animations.navHostPopEnterTransition,
|
||||||
popExitTransition = Animations.navHostPopExitTransition,
|
popExitTransition = Animations.navHostPopExitTransition,
|
||||||
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
|
modifier = Modifier.padding(top = it.calculateTopPadding())
|
||||||
){
|
){
|
||||||
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
||||||
composable(route = "Switches"){Switches()}
|
composable(route = "Switches"){Switches()}
|
||||||
@@ -610,6 +609,7 @@ private fun CaCert(){
|
|||||||
}
|
}
|
||||||
exist = myDpm.hasCaCertInstalled(myComponent, caCertByteArray)
|
exist = myDpm.hasCaCertInstalled(myComponent, caCertByteArray)
|
||||||
}
|
}
|
||||||
|
uriPath = fileUri?.path?:""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LaunchedEffect(exist){ while(true){ refresh();delay(500) } }
|
LaunchedEffect(exist){ while(true){ refresh();delay(500) } }
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ import androidx.navigation.compose.rememberNavController
|
|||||||
import com.bintianqi.owndroid.*
|
import com.bintianqi.owndroid.*
|
||||||
import com.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.ui.*
|
import com.bintianqi.owndroid.ui.*
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
|
|
||||||
var affiliationID = mutableSetOf<String>()
|
var affiliationID = mutableSetOf<String>()
|
||||||
@@ -84,7 +83,7 @@ fun UserManage(navCtrl:NavHostController) {
|
|||||||
exitTransition = Animations.navHostExitTransition,
|
exitTransition = Animations.navHostExitTransition,
|
||||||
popEnterTransition = Animations.navHostPopEnterTransition,
|
popEnterTransition = Animations.navHostPopEnterTransition,
|
||||||
popExitTransition = Animations.navHostPopExitTransition,
|
popExitTransition = Animations.navHostPopExitTransition,
|
||||||
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
|
modifier = Modifier.padding(top = it.calculateTopPadding())
|
||||||
){
|
){
|
||||||
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
||||||
composable(route = "UserInfo"){CurrentUserInfo()}
|
composable(route = "UserInfo"){CurrentUserInfo()}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ 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.ScrollState
|
||||||
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
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
@@ -39,7 +38,6 @@ import com.bintianqi.owndroid.ui.Animations
|
|||||||
import com.bintianqi.owndroid.ui.SubPageItem
|
import com.bintianqi.owndroid.ui.SubPageItem
|
||||||
import com.bintianqi.owndroid.ui.SwitchItem
|
import com.bintianqi.owndroid.ui.SwitchItem
|
||||||
import com.bintianqi.owndroid.ui.TopBar
|
import com.bintianqi.owndroid.ui.TopBar
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
|
|
||||||
private data class Restriction(
|
private data class Restriction(
|
||||||
val restriction:String,
|
val restriction:String,
|
||||||
@@ -84,7 +82,7 @@ fun UserRestriction(navCtrl: NavHostController){
|
|||||||
exitTransition = Animations.navHostExitTransition,
|
exitTransition = Animations.navHostExitTransition,
|
||||||
popEnterTransition = Animations.navHostPopEnterTransition,
|
popEnterTransition = Animations.navHostPopEnterTransition,
|
||||||
popExitTransition = Animations.navHostPopExitTransition,
|
popExitTransition = Animations.navHostPopExitTransition,
|
||||||
modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding())
|
modifier = Modifier.padding(top = it.calculateTopPadding())
|
||||||
){
|
){
|
||||||
composable(route = "Internet"){Internet()}
|
composable(route = "Internet"){Internet()}
|
||||||
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
composable(route = "Home"){Home(localNavCtrl,scrollState)}
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ import android.widget.Toast
|
|||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.animation.animateContentSize
|
import androidx.compose.animation.animateContentSize
|
||||||
import androidx.compose.foundation.LocalIndication
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material3.*
|
||||||
@@ -25,7 +23,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.bintianqi.owndroid.R
|
import com.bintianqi.owndroid.R
|
||||||
import com.bintianqi.owndroid.ui.theme.bgColor
|
|
||||||
import com.bintianqi.owndroid.writeClipBoard
|
import com.bintianqi.owndroid.writeClipBoard
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -173,8 +170,12 @@ fun TopBar(
|
|||||||
TopAppBar(
|
TopAppBar(
|
||||||
//Text(text = stringResource(titleMap[backStackEntry?.destination?.route]?:R.string.user_restrict))
|
//Text(text = stringResource(titleMap[backStackEntry?.destination?.route]?:R.string.user_restrict))
|
||||||
title = title,
|
title = title,
|
||||||
navigationIcon = {NavIcon{if(backStackEntry?.destination?.route=="Home"){navCtrl.navigateUp()}else{localNavCtrl.navigateUp()}}},
|
navigationIcon = {
|
||||||
colors = TopAppBarDefaults.topAppBarColors(containerColor = bgColor)
|
NavIcon{
|
||||||
|
if(backStackEntry?.destination?.route=="Home"){ navCtrl.navigateUp() }else{ localNavCtrl.navigateUp() }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
colors = TopAppBarDefaults.topAppBarColors(containerColor = colorScheme.background)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,9 @@ package com.bintianqi.owndroid.ui.theme
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Build
|
|
||||||
import android.os.Build.VERSION
|
import android.os.Build.VERSION
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
import androidx.compose.foundation.isSystemInDarkTheme
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material3.*
|
||||||
import androidx.compose.material3.MaterialTheme.colorScheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.SideEffect
|
import androidx.compose.runtime.SideEffect
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
@@ -79,41 +77,31 @@ private val LightColorScheme = lightColorScheme(
|
|||||||
scrim = md_theme_light_scrim
|
scrim = md_theme_light_scrim
|
||||||
)
|
)
|
||||||
|
|
||||||
var bgColor = Color(0xFF000000)
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun SetDarkTheme(){
|
|
||||||
val dark = isSystemInDarkTheme()
|
|
||||||
val sharedPref = LocalContext.current.getSharedPreferences("data", Context.MODE_PRIVATE)
|
|
||||||
val bg = colorScheme.background
|
|
||||||
val lightBg = colorScheme.primary.copy(alpha = 0.05F)
|
|
||||||
bgColor = if(dark){
|
|
||||||
if(sharedPref.getBoolean("blackTheme",true)){ Color(0xFF000000) }else{ bg }
|
|
||||||
}else{
|
|
||||||
lightBg
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun OwnDroidTheme(
|
fun OwnDroidTheme(
|
||||||
darkTheme: Boolean = isSystemInDarkTheme(),
|
materialYou: Boolean,
|
||||||
|
blackTheme: Boolean,
|
||||||
content: @Composable () -> Unit
|
content: @Composable () -> Unit
|
||||||
) {
|
) {
|
||||||
SetDarkTheme()
|
val darkTheme = isSystemInDarkTheme()
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val sharedPref = context.getSharedPreferences("data", Context.MODE_PRIVATE)
|
val sharedPref = context.getSharedPreferences("data", Context.MODE_PRIVATE)
|
||||||
if(!sharedPref.contains("dynamicColor")&&VERSION.SDK_INT>=32){
|
if(!sharedPref.contains("dynamicColor")&&VERSION.SDK_INT>=32){
|
||||||
sharedPref.edit().putBoolean("dynamicColor",true).apply()
|
sharedPref.edit().putBoolean("dynamicColor",true).apply()
|
||||||
}
|
}
|
||||||
val dynamicColor = sharedPref.getBoolean("dynamicColor",false)
|
var colorScheme = when {
|
||||||
val colorScheme = when {
|
materialYou && VERSION.SDK_INT>=31 -> {
|
||||||
dynamicColor && VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
|
if(darkTheme){ dynamicDarkColorScheme(context) }else{ dynamicLightColorScheme(context) }
|
||||||
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
darkTheme -> DarkColorScheme
|
darkTheme -> DarkColorScheme
|
||||||
else -> LightColorScheme
|
else -> LightColorScheme
|
||||||
}
|
}
|
||||||
|
if(darkTheme&&blackTheme){
|
||||||
|
colorScheme = colorScheme.copy(background = Color.Black)
|
||||||
|
}
|
||||||
|
if(!darkTheme){
|
||||||
|
colorScheme = colorScheme.copy(background = colorScheme.primary.copy(alpha = 0.05f))
|
||||||
|
}
|
||||||
val view = LocalView.current
|
val view = LocalView.current
|
||||||
SideEffect {
|
SideEffect {
|
||||||
val window = (view.context as Activity).window
|
val window = (view.context as Activity).window
|
||||||
|
|||||||
@@ -472,15 +472,14 @@
|
|||||||
|
|
||||||
<!--Settings&About-->
|
<!--Settings&About-->
|
||||||
<string name="setting">设置</string>
|
<string name="setting">设置</string>
|
||||||
<string name="dynamic_color">动态取色</string>
|
<string name="material_you_color">Material you 颜色</string>
|
||||||
<string name="dynamic_color_desc">安卓12+</string>
|
<string name="dynamic_color_desc">安卓12+</string>
|
||||||
<string name="about">关于</string>
|
<string name="about">关于</string>
|
||||||
<string name="about_desc">使用安卓的Device admin、Device owner、Profile owner,全方位掌控你的设备</string>
|
<string name="about_desc">使用安卓的Device admin、Device owner、Profile owner,全方位掌控你的设备</string>
|
||||||
<string name="user_guide">使用教程</string>
|
<string name="user_guide">使用教程</string>
|
||||||
<string name="source_code">源代码</string>
|
<string name="source_code">源代码</string>
|
||||||
<string name="blackTheme">纯黑夜间主题</string>
|
<string name="amoled_black">纯黑夜间主题</string>
|
||||||
<string name="blackTheme_desc">需要打开夜间模式</string>
|
<string name="blackTheme_desc">需要打开夜间模式</string>
|
||||||
<string name="need_relaunch">需要重启应用</string>
|
|
||||||
|
|
||||||
<!--AndroidPermission-->
|
<!--AndroidPermission-->
|
||||||
<string name="permission_READ_EXTERNAL_STORAGE">读取外部存储</string>
|
<string name="permission_READ_EXTERNAL_STORAGE">读取外部存储</string>
|
||||||
|
|||||||
@@ -487,15 +487,14 @@
|
|||||||
|
|
||||||
<!--Settings&About-->
|
<!--Settings&About-->
|
||||||
<string name="setting">Settings</string>
|
<string name="setting">Settings</string>
|
||||||
<string name="dynamic_color">Dynamic color</string>
|
<string name="material_you_color">Material you color</string>
|
||||||
<string name="dynamic_color_desc">Android 12+</string>
|
<string name="dynamic_color_desc">Android 12+</string>
|
||||||
<string name="about">About</string>
|
<string name="about">About</string>
|
||||||
<string name="about_desc">Use Device admin, Profile owner and Device owner privilege to take full control of your device. </string>
|
<string name="about_desc">Use Device admin, Profile owner and Device owner privilege to take full control of your device. </string>
|
||||||
<string name="user_guide">User guide</string>
|
<string name="user_guide">User guide</string>
|
||||||
<string name="source_code">Source code</string>
|
<string name="source_code">Source code</string>
|
||||||
<string name="blackTheme">Black theme</string>
|
<string name="amoled_black">Black theme</string>
|
||||||
<string name="blackTheme_desc">Require dark mode on</string>
|
<string name="blackTheme_desc">Require dark mode on</string>
|
||||||
<string name="need_relaunch">Require restart this app</string>
|
|
||||||
|
|
||||||
<!--AndroidPermission-->
|
<!--AndroidPermission-->
|
||||||
<string name="permission_READ_EXTERNAL_STORAGE">Read external storage</string>
|
<string name="permission_READ_EXTERNAL_STORAGE">Read external storage</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user