feat: update demo

This commit is contained in:
2024-01-17 14:36:12 +08:00
parent deec17c180
commit 5d52fdf2bf
4 changed files with 8 additions and 138 deletions

View File

@@ -34,6 +34,7 @@ import com.highcapable.flexiui.component.Surface
import com.highcapable.flexiui.demo.screen.LazyListScreen import com.highcapable.flexiui.demo.screen.LazyListScreen
import com.highcapable.flexiui.demo.screen.MainScreen import com.highcapable.flexiui.demo.screen.MainScreen
import com.highcapable.flexiui.demo.screen.SecondaryScreen import com.highcapable.flexiui.demo.screen.SecondaryScreen
import com.highcapable.flexiui.toColors
const val PROJECT_URL = "https://github.com/BetterAndroid/FlexiUI" const val PROJECT_URL = "https://github.com/BetterAndroid/FlexiUI"

View File

@@ -1,134 +0,0 @@
/*
* Flexi UI - A flexible and useful UI component library.
* Copyright (C) 2019-2024 HighCapable
* https://github.com/BetterAndroid/FlexiUI
*
* Apache License Version 2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* This file is created by fankes on 2024/1/16.
*/
package com.highcapable.flexiui.demo
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import com.highcapable.flexiui.blueColors
import com.highcapable.flexiui.defaultColors
import com.highcapable.flexiui.greenColors
import com.highcapable.flexiui.isSystemColorAvailable
import com.highcapable.flexiui.orangeColors
import com.highcapable.flexiui.pinkColors
import com.highcapable.flexiui.purpleColors
import com.highcapable.flexiui.redColors
import com.highcapable.flexiui.systemColors
import com.highcapable.flexiui.yellowColors
// TODO: Include ColorScheme to Flexi UI's Colors.kt
@Stable
enum class ColorScheme {
Default,
DefaultBlack,
System,
SystemBlack,
Red,
RedBlack,
Pink,
PinkBlack,
Purple,
PurpleBlack,
Orange,
OrangeBlack,
Yellow,
YellowBlack,
Green,
GreenBlack,
Blue,
BlueBlack
}
@Composable
fun colorSchemes(): Array<ColorScheme> {
val defaultColors = arrayOf(
ColorScheme.Default,
ColorScheme.DefaultBlack
)
val systemColors = arrayOf(
ColorScheme.System,
ColorScheme.SystemBlack
)
val presetColors = arrayOf(
ColorScheme.Red,
ColorScheme.RedBlack,
ColorScheme.Pink,
ColorScheme.PinkBlack,
ColorScheme.Purple,
ColorScheme.PurpleBlack,
ColorScheme.Orange,
ColorScheme.OrangeBlack,
ColorScheme.Yellow,
ColorScheme.YellowBlack,
ColorScheme.Green,
ColorScheme.GreenBlack,
ColorScheme.Blue,
ColorScheme.BlueBlack
)
return if (isSystemColorAvailable())
defaultColors + systemColors + presetColors
else defaultColors + presetColors
}
@Composable
fun ColorScheme.toColors(darkMode: Boolean) = when (this) {
ColorScheme.Default -> defaultColors(darkMode)
ColorScheme.DefaultBlack -> defaultColors(darkMode, blackDarkMode = true)
ColorScheme.System -> systemColors(darkMode)
ColorScheme.SystemBlack -> systemColors(darkMode, blackDarkMode = true)
ColorScheme.Red -> redColors(darkMode)
ColorScheme.RedBlack -> redColors(darkMode, blackDarkMode = true)
ColorScheme.Pink -> pinkColors(darkMode)
ColorScheme.PinkBlack -> pinkColors(darkMode, blackDarkMode = true)
ColorScheme.Purple -> purpleColors(darkMode)
ColorScheme.PurpleBlack -> purpleColors(darkMode, blackDarkMode = true)
ColorScheme.Orange -> orangeColors(darkMode)
ColorScheme.OrangeBlack -> orangeColors(darkMode, blackDarkMode = true)
ColorScheme.Yellow -> yellowColors(darkMode)
ColorScheme.YellowBlack -> yellowColors(darkMode, blackDarkMode = true)
ColorScheme.Green -> greenColors(darkMode)
ColorScheme.GreenBlack -> greenColors(darkMode, blackDarkMode = true)
ColorScheme.Blue -> blueColors(darkMode)
ColorScheme.BlueBlack -> blueColors(darkMode, blackDarkMode = true)
}
@Stable
fun ColorScheme.toName() = when (this) {
ColorScheme.Default -> "Default"
ColorScheme.DefaultBlack -> "Default (Black)"
ColorScheme.System -> "System"
ColorScheme.SystemBlack -> "System (Black)"
ColorScheme.Red -> "Red"
ColorScheme.RedBlack -> "Red (Black)"
ColorScheme.Pink -> "Pink"
ColorScheme.PinkBlack -> "Pink (Black)"
ColorScheme.Purple -> "Purple"
ColorScheme.PurpleBlack -> "Purple (Black)"
ColorScheme.Orange -> "Orange"
ColorScheme.OrangeBlack -> "Orange (Black)"
ColorScheme.Yellow -> "Yellow"
ColorScheme.YellowBlack -> "Yellow (Black)"
ColorScheme.Green -> "Green"
ColorScheme.GreenBlack -> "Green (Black)"
ColorScheme.Blue -> "Blue"
ColorScheme.BlueBlack -> "Blue (Black)"
}

View File

@@ -24,6 +24,7 @@ package com.highcapable.flexiui.demo
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
import androidx.compose.runtime.Stable import androidx.compose.runtime.Stable
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import com.highcapable.flexiui.ColorScheme
@Stable @Stable
data class AppPreferences( data class AppPreferences(

View File

@@ -46,6 +46,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.highcapable.flexiui.availableColorSchemes
import com.highcapable.flexiui.component.AreaBox import com.highcapable.flexiui.component.AreaBox
import com.highcapable.flexiui.component.AreaColumn import com.highcapable.flexiui.component.AreaColumn
import com.highcapable.flexiui.component.Button import com.highcapable.flexiui.component.Button
@@ -73,11 +74,11 @@ import com.highcapable.flexiui.demo.Screen
import com.highcapable.flexiui.demo.SecondarySpacer import com.highcapable.flexiui.demo.SecondarySpacer
import com.highcapable.flexiui.demo.SecondaryText import com.highcapable.flexiui.demo.SecondaryText
import com.highcapable.flexiui.demo.Style import com.highcapable.flexiui.demo.Style
import com.highcapable.flexiui.demo.colorSchemes
import com.highcapable.flexiui.demo.locales import com.highcapable.flexiui.demo.locales
import com.highcapable.flexiui.demo.rememberRouter import com.highcapable.flexiui.demo.rememberRouter
import com.highcapable.flexiui.demo.strings import com.highcapable.flexiui.demo.strings
import com.highcapable.flexiui.demo.toName import com.highcapable.flexiui.demo.toName
import com.highcapable.flexiui.displayName
import com.highcapable.flexiui.resources.FlexiIcons import com.highcapable.flexiui.resources.FlexiIcons
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -191,6 +192,7 @@ fun MainHomePage(modifier: Modifier) {
} }
PrimarySpacer() PrimarySpacer()
AreaColumn(modifier = Modifier.fillMaxWidth()) { AreaColumn(modifier = Modifier.fillMaxWidth()) {
val colorSchemes = availableColorSchemes()
var colorScheme by remember { Preferences.colorScheme } var colorScheme by remember { Preferences.colorScheme }
var darkMode by remember { Preferences.darkMode } var darkMode by remember { Preferences.darkMode }
var followSystemDarkMode by remember { Preferences.followSystemDarkMode } var followSystemDarkMode by remember { Preferences.followSystemDarkMode }
@@ -229,16 +231,16 @@ fun MainHomePage(modifier: Modifier) {
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
expanded = expanded, expanded = expanded,
onExpandedChange = { expanded = it }, onExpandedChange = { expanded = it },
text = { Text(colorScheme.toName()) }, text = { Text(colorScheme.displayName) },
) { ) {
colorSchemes().forEach { colorSchemes.forEach {
DropdownMenuItem( DropdownMenuItem(
actived = colorScheme == it, actived = colorScheme == it,
onClick = { onClick = {
expanded = false expanded = false
colorScheme = it colorScheme = it
} }
) { Text(it.toName()) } ) { Text(it.displayName) }
} }
} }
} }