This commit is contained in:
f1rq 2025-04-29 17:18:28 +02:00
parent f78b2c43c3
commit 7af5be51d3
7 changed files with 155 additions and 349 deletions

3
.idea/misc.xml generated
View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -0,0 +1,47 @@
kotlin version: 2.0.21
error message: Incremental compilation failed: Expected absolute path but found relative path: E:\f1rq\Programowanie\LifeMap\app\src\main\java\com\f1rq\lifemap\components\NavBar.kt
java.lang.IllegalStateException: Expected absolute path but found relative path: E:\f1rq\Programowanie\LifeMap\app\src\main\java\com\f1rq\lifemap\components\NavBar.kt
at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:20)
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:50)
at org.jetbrains.kotlin.incremental.storage.FileDescriptor.getHashCode(FileToPathConverter.kt:30)
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.hashKey(LinkedCustomHashMap.java:109)
at org.jetbrains.kotlin.com.intellij.util.containers.LinkedCustomHashMap.remove(LinkedCustomHashMap.java:153)
at org.jetbrains.kotlin.com.intellij.util.containers.SLRUMap.remove(SLRUMap.java:89)
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.flushAppendCache(PersistentMapImpl.java:999)
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.doGet(PersistentMapImpl.java:640)
at org.jetbrains.kotlin.com.intellij.util.io.PersistentMapImpl.get(PersistentMapImpl.java:613)
at org.jetbrains.kotlin.com.intellij.util.io.PersistentHashMap.get(PersistentHashMap.java:196)
at org.jetbrains.kotlin.incremental.storage.LazyStorage.get(LazyStorage.kt:76)
at org.jetbrains.kotlin.incremental.storage.InMemoryStorage.get(InMemoryStorage.kt:68)
at org.jetbrains.kotlin.incremental.storage.AppendableInMemoryStorage.get(InMemoryStorage.kt:155)
at org.jetbrains.kotlin.incremental.storage.AppendableInMemoryStorage.get(InMemoryStorage.kt:147)
at org.jetbrains.kotlin.incremental.storage.AppendableSetBasicMap.get(BasicMap.kt:137)
at org.jetbrains.kotlin.incremental.storage.AbstractSourceToOutputMap.getFqNames(SourceToOutputMaps.kt:50)
at org.jetbrains.kotlin.incremental.AbstractIncrementalCache.classesFqNamesBySources(AbstractIncrementalCache.kt:95)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.getRemovedClassesChanges(IncrementalCompilerRunner.kt:622)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.calculateSourcesToCompileImpl(IncrementalJvmCompilerRunner.kt:274)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.calculateSourcesToCompile(IncrementalJvmCompilerRunner.kt:143)
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.calculateSourcesToCompile(IncrementalJvmCompilerRunner.kt:73)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.tryCompileIncrementally$lambda$9$compile(IncrementalCompilerRunner.kt:225)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.tryCompileIncrementally(IncrementalCompilerRunner.kt:267)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:120)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:675)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:92)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1660)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source)
at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Unknown Source)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)

View File

@ -1,4 +1,3 @@
<<<<<<< HEAD
package com.f1rq.lifemap package com.f1rq.lifemap
import android.os.Bundle import android.os.Bundle
@ -73,90 +72,7 @@ class MainActivity : ComponentActivity() {
composable("mapview") { MapView(Modifier) } composable("mapview") { MapView(Modifier) }
composable("listview") { ListView(Modifier) } composable("listview") { ListView(Modifier) }
composable("settings") { SettingsScreen(navController = navController, Modifier)} composable("settings") { SettingsScreen(navController = navController, Modifier)}
composable("notifications") { NotificationsScreen(Modifier)} composable("notifications") { NotificationsScreen(navController = navController, Modifier)}
composable("settings_notifications") { SettingsNotificationsScreen(Modifier) }
}
}
}
}
}
}
=======
package com.f1rq.lifemap
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.ui.Modifier
import androidx.core.view.WindowCompat
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import androidx.compose.runtime.SideEffect
import androidx.compose.ui.platform.LocalView
import com.f1rq.lifemap.screens.ListView
import com.f1rq.lifemap.screens.MapView
import com.f1rq.lifemap.screens.SettingsScreen
import com.f1rq.lifemap.screens.NotificationsScreen
import com.f1rq.lifemap.ui.theme.LifeMapTheme
import com.f1rq.lifemap.ui.theme.ActiveNavColor
import com.f1rq.lifemap.ui.theme.InactiveNavColor
import com.f1rq.lifemap.components.TopBar
import com.f1rq.lifemap.components.NavBar
import com.f1rq.lifemap.screens.settingsScreens.SettingsNotificationsScreen
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
LifeMapTheme {
val navController = rememberNavController()
val view = LocalView.current
val darkTheme = !isSystemInDarkTheme()
SideEffect {
WindowCompat.setDecorFitsSystemWindows(window, false)
val insetsController = WindowCompat.getInsetsController(window, view)
insetsController.isAppearanceLightStatusBars = true
insetsController.isAppearanceLightNavigationBars = true
}
Scaffold(
topBar = {
TopBar(
onSettingsButtonClick = { navController.navigate("settings")},
onNotificationsButtonClick = { navController.navigate("notifications")}
)
},
bottomBar = {
val navBackStackEntry = navController.currentBackStackEntryAsState()
val currentRoute = navBackStackEntry.value?.destination?.route
NavBar(
onMapViewClicked = { navController.navigate("mapview") },
onListViewClicked = { navController.navigate("listview") },
mapViewBackgroundColor = if (currentRoute == "mapview") ActiveNavColor else InactiveNavColor,
listViewBackgroundColor = if (currentRoute == "listview") ActiveNavColor else InactiveNavColor
)
}
) { innerPadding ->
NavHost(
navController = navController,
startDestination = "mapview",
modifier = Modifier.padding(innerPadding)
) {
composable("mapview") { MapView(Modifier) }
composable("listview") { ListView(Modifier) }
composable("settings") { SettingsScreen(navController = navController, Modifier)}
composable("notifications") { NotificationsScreen(Modifier)}
composable("settings_notifications") { SettingsNotificationsScreen(navController = navController, Modifier) } composable("settings_notifications") { SettingsNotificationsScreen(navController = navController, Modifier) }
} }
} }
@ -164,4 +80,3 @@ class MainActivity : ComponentActivity() {
} }
} }
} }
>>>>>>> 774f07c0804f103a0523e1f7da3f969046a53aec

View File

@ -1,4 +1,3 @@
<<<<<<< HEAD
package com.f1rq.lifemap.components package com.f1rq.lifemap.components
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
@ -28,7 +27,6 @@ import com.f1rq.lifemap.ui.theme.ActiveNavColor
import com.f1rq.lifemap.ui.theme.PrimaryColor import com.f1rq.lifemap.ui.theme.PrimaryColor
import com.f1rq.lifemap.R.drawable.navbar_listview_button import com.f1rq.lifemap.R.drawable.navbar_listview_button
import com.f1rq.lifemap.R.drawable.navbar_mapview_button import com.f1rq.lifemap.R.drawable.navbar_mapview_button
import com.google.relay.compose.BoxScopeInstanceImpl.align
@Composable @Composable
fun NavBar( fun NavBar(
@ -107,116 +105,79 @@ fun NavBar(
} }
@Preview //@Composable
@Composable //fun NavBar(
fun NavBarPreview() { // modifier: Modifier = Modifier,
NavBar() // onMapViewClicked: () -> Unit = {},
======= // onListViewClicked: () -> Unit = {},
package com.f1rq.lifemap.components // mapViewBackgroundColor: Color = ActiveNavColor,
// listViewBackgroundColor: Color = InactiveNavColor,
import androidx.compose.foundation.layout.* //) {
import androidx.compose.foundation.shape.RoundedCornerShape // Box(
import androidx.compose.material3.Icon // modifier = modifier
import androidx.compose.material3.IconButton // .fillMaxWidth()
import androidx.compose.foundation.background // ) {
import androidx.compose.foundation.layout.fillMaxWidth //
import androidx.compose.foundation.layout.padding // Card(
import androidx.compose.material3.Card // modifier = Modifier.fillMaxWidth(),
import androidx.compose.material3.CardDefaults // colors = CardDefaults.cardColors(containerColor = MainBG),
import androidx.compose.runtime.Composable // elevation = CardDefaults.cardElevation(defaultElevation = 6.dp),
import androidx.compose.ui.Alignment // ) {
import androidx.compose.ui.unit.dp // Row(
import androidx.compose.ui.Modifier // modifier = Modifier
import androidx.compose.ui.graphics.Color // .padding(
import androidx.compose.ui.res.painterResource // top = 12.dp,
import androidx.compose.ui.tooling.preview.Preview // bottom = WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding() + 6.dp,
import com.f1rq.lifemap.ui.theme.MainBG // ),
import com.f1rq.lifemap.ui.theme.InactiveNavColor // verticalAlignment = Alignment.CenterVertically
import com.f1rq.lifemap.ui.theme.ActiveNavColor // ) {
import com.f1rq.lifemap.ui.theme.PrimaryColor // Box(
import com.f1rq.lifemap.R.drawable.navbar_listview_button // modifier = Modifier
import com.f1rq.lifemap.R.drawable.navbar_mapview_button // .weight(1f),
// contentAlignment = Alignment.Center
@Composable // ) {
fun NavBar( // IconButton(
modifier: Modifier = Modifier, // onClick = onMapViewClicked,
onMapViewClicked: () -> Unit = {}, // modifier = Modifier
onListViewClicked: () -> Unit = {}, // .size(48.dp)
mapViewBackgroundColor: Color = ActiveNavColor, // .background(
listViewBackgroundColor: Color = InactiveNavColor, // color = mapViewBackgroundColor,
) { // shape = RoundedCornerShape(16.dp)
Box( // )
modifier = modifier // ) {
.fillMaxWidth() // Icon(
) { // painter = painterResource(id = navbar_mapview_button),
// contentDescription = "Map View",
Card( // modifier = Modifier.requiredSize(24.dp),
modifier = Modifier.fillMaxWidth(), // tint = PrimaryColor
colors = CardDefaults.cardColors(containerColor = MainBG), // )
elevation = CardDefaults.cardElevation(defaultElevation = 6.dp), // }
) { // }
Row( //
modifier = Modifier // Box(
.padding( // modifier = Modifier
top = 12.dp, // .weight(1f),
bottom = WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding() + 6.dp, // contentAlignment = Alignment.Center
), // ) {
verticalAlignment = Alignment.CenterVertically // IconButton(
) { // onClick = onListViewClicked,
Box( // modifier = Modifier
modifier = Modifier // .size(48.dp)
.weight(1f), // .background(
contentAlignment = Alignment.Center // color = listViewBackgroundColor,
) { // shape = RoundedCornerShape(16.dp)
IconButton( // )
onClick = onMapViewClicked, // ) {
modifier = Modifier // Icon(
.size(48.dp) // painter = painterResource(id = navbar_listview_button),
.background( // contentDescription = "List View",
color = mapViewBackgroundColor, // modifier = Modifier.requiredSize(24.dp),
shape = RoundedCornerShape(16.dp) // tint = PrimaryColor
) // )
) { // }
Icon( // }
painter = painterResource(id = navbar_mapview_button), // }
contentDescription = "Map View", // }
modifier = Modifier.requiredSize(24.dp), // }
tint = PrimaryColor //}
) //
}
}
Box(
modifier = Modifier
.weight(1f),
contentAlignment = Alignment.Center
) {
IconButton(
onClick = onListViewClicked,
modifier = Modifier
.size(48.dp)
.background(
color = listViewBackgroundColor,
shape = RoundedCornerShape(16.dp)
)
) {
Icon(
painter = painterResource(id = navbar_listview_button),
contentDescription = "List View",
modifier = Modifier.requiredSize(24.dp),
tint = PrimaryColor
)
}
}
}
}
}
}
@Preview
@Composable
fun NavBarPreview() {
NavBar()
>>>>>>> 774f07c0804f103a0523e1f7da3f969046a53aec
}

View File

@ -1,39 +1,23 @@
package com.f1rq.lifemap.screens package com.f1rq.lifemap.screens
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.f1rq.lifemap.ui.theme.MainTextColor import androidx.navigation.NavController
import com.f1rq.lifemap.components.ScreenTitle
@Composable @Composable
fun NotificationsScreen(modifier: Modifier = Modifier) { fun NotificationsScreen(navController: NavController, modifier: Modifier = Modifier) {
Box( Column(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
.padding(horizontal = 16.dp, vertical = 16.dp),
verticalArrangement = Arrangement.spacedBy(16.dp),
) { ) {
Column( ScreenTitle("Notifications")
verticalArrangement = Arrangement.spacedBy(4.dp),
) {
Text(
text = "Settings",
style = MaterialTheme.typography.titleMedium,
fontSize = MaterialTheme.typography.titleLarge.fontSize,
fontFamily = MaterialTheme.typography.titleLarge.fontFamily,
color = MainTextColor,
modifier = Modifier
.padding(
top = 24.dp,
start = 24.dp
),
)
}
} }
} }

View File

@ -1,82 +1,3 @@
<<<<<<< HEAD
package com.f1rq.lifemap.screens
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.List
import androidx.compose.material.icons.filled.MailOutline
import androidx.compose.material.icons.filled.Notifications
import androidx.compose.material.icons.outlined.Email
import androidx.compose.material.icons.outlined.Notifications
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.navigation.NavController
import com.f1rq.lifemap.components.SettingsLabel
import com.f1rq.lifemap.ui.theme.MainTextColor
import com.f1rq.lifemap.R.drawable.contact_icon
import com.f1rq.lifemap.R.drawable.feedback_icon
@Composable
fun SettingsScreen(navController: NavController, modifier: Modifier = Modifier) {
Box(
modifier = Modifier
.fillMaxSize()
) {
Column (
verticalArrangement = Arrangement.spacedBy(4.dp),
) {
Text(
text = "Settings",
style = MaterialTheme.typography.titleMedium,
fontSize = MaterialTheme.typography.titleLarge.fontSize,
fontFamily = MaterialTheme.typography.titleLarge.fontFamily,
color = MainTextColor,
modifier = Modifier
.padding(
top = 24.dp,
start = 24.dp
),
)
SettingsLabel(
text = "Notifications",
iconResource = Icons.Outlined.Notifications,
desc = "Notifications",
modifier = Modifier
.padding(
horizontal = 16.dp
),
onClick = { navController.navigate("settings_notifications") }
)
SettingsLabel(
text = "Contact",
iconResource = Icons.Outlined.Email,
desc = "Contact us",
modifier = Modifier
.padding(
horizontal = 16.dp
)
)
SettingsLabel(
text = "Report a bug",
iconResource = Icons.Outlined.Email,
desc = "Report a bug",
modifier = Modifier
.padding(
horizontal = 16.dp
)
)
}
}
=======
package com.f1rq.lifemap.screens package com.f1rq.lifemap.screens
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@ -122,5 +43,4 @@ fun SettingsScreen(navController: NavController, modifier: Modifier = Modifier)
desc = "Report a bug" desc = "Report a bug"
) )
} }
>>>>>>> 774f07c0804f103a0523e1f7da3f969046a53aec
} }

View File

@ -1,24 +1,3 @@
<<<<<<< HEAD
package com.f1rq.lifemap.screens.settingsScreens
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@Composable
fun SettingsNotificationsScreen(modifier: Modifier = Modifier) {
Box(
modifier = Modifier
.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text("Notifications settings")
}
}
=======
package com.f1rq.lifemap.screens.settingsScreens package com.f1rq.lifemap.screens.settingsScreens
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@ -69,4 +48,3 @@ fun SettingsNotificationsScreen(navController: NavController, modifier: Modifier
} }
} }
} }
>>>>>>> 774f07c0804f103a0523e1f7da3f969046a53aec