add svg file to header and color header

This commit is contained in:
2025-10-10 22:09:03 +02:00
parent 9ba57e6af1
commit dbb1d877b1
18 changed files with 94 additions and 32 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -4,10 +4,19 @@ import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Menu
@@ -15,6 +24,7 @@ import androidx.compose.material3.DrawerValue
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalDrawerSheet
import androidx.compose.material3.ModalNavigationDrawer
import androidx.compose.material3.NavigationDrawerItem
@@ -23,15 +33,29 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import de.lxtools.noteshop.ui.theme.NoteshopTheme
import kotlinx.coroutines.launch
// Sealed class to represent the screens in the app
sealed class Screen(val route: String, val titleRes: Int) {
object ShoppingLists : Screen("shopping_lists", R.string.menu_shopping_lists)
object Notes : Screen("notes", R.string.menu_notes)
}
class MainActivity : ComponentActivity() {
@OptIn(ExperimentalMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
@@ -48,21 +72,49 @@ class MainActivity : ComponentActivity() {
fun AppShell() {
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
val scope = rememberCoroutineScope()
var currentScreen: Screen by remember { mutableStateOf(Screen.ShoppingLists) }
val navigationItems = listOf(
Screen.ShoppingLists,
Screen.Notes
)
ModalNavigationDrawer(
drawerState = drawerState,
drawerContent = {
ModalDrawerSheet(modifier = Modifier.windowInsetsPadding(WindowInsets.systemBars)) {
NavigationDrawerItem(
label = { Text(stringResource(id = R.string.menu_notes)) },
selected = false,
onClick = { /*TODO*/ }
)
NavigationDrawerItem(
label = { Text(stringResource(id = R.string.menu_shopping_lists)) },
selected = false,
onClick = { /*TODO*/ }
)
// Drawer Header
Row(
modifier = Modifier
.fillMaxWidth()
.background(Color(0xFF6975BC))
.padding(16.dp),
verticalAlignment = Alignment.CenterVertically
) {
Image(
painter = painterResource(id = R.drawable.noteshop_fg_logo6),
contentDescription = null, // Decorative
modifier = Modifier.size(60.dp)
)
Spacer(modifier = Modifier.width(12.dp))
Text(
text = stringResource(id = R.string.app_name),
style = MaterialTheme.typography.titleLarge,
color = Color.White // Set text color to be visible on the dark background
)
}
// Navigation Items
navigationItems.forEach { screen ->
NavigationDrawerItem(
label = { Text(stringResource(id = screen.titleRes)) },
selected = screen == currentScreen,
onClick = {
currentScreen = screen
scope.launch { drawerState.close() }
}
)
}
}
}
) {
@@ -70,15 +122,9 @@ fun AppShell() {
modifier = Modifier.fillMaxSize(),
topBar = {
TopAppBar(
title = { Text(stringResource(id = R.string.app_title)) },
title = { Text(stringResource(id = currentScreen.titleRes)) },
navigationIcon = {
IconButton(onClick = {
scope.launch {
drawerState.apply {
if (isClosed) open() else close()
}
}
}) {
IconButton(onClick = { scope.launch { drawerState.apply { if (isClosed) open() else close() } } }) {
Icon(
imageVector = Icons.Default.Menu,
contentDescription = stringResource(id = R.string.menu_open)
@@ -88,25 +134,30 @@ fun AppShell() {
)
}
) { innerPadding ->
Greeting(
name = "Babubu",
modifier = Modifier.padding(innerPadding)
)
// Main content area - changes based on currentScreen
Column(
modifier = Modifier
.fillMaxSize()
.padding(innerPadding),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
when (currentScreen) {
is Screen.ShoppingLists -> {
Text(text = "Hier kommen die Einkaufslisten hin.")
}
is Screen.Notes -> {
Text(text = "Hier kommen die Notizen hin.")
}
}
}
}
}
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
fun DefaultPreview() {
NoteshopTheme {
AppShell()
}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB