From e70d8989f100120bb720da1ffae08dbfd7388516 Mon Sep 17 00:00:00 2001 From: Fawkes100 Date: Tue, 29 Apr 2025 20:19:21 +0200 Subject: [PATCH] WIP: Persist NoteEntities --- app/build.gradle.kts | 1 + .../stormborntales/notevault/MainActivity.kt | 2 +- .../notevault/ui/screens/FullScreenViewer.kt | 2 +- .../notevault/ui/screens/MainScreen.kt | 23 +++++++++++-------- gradle/libs.versions.toml | 2 ++ 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9e2bb44..f8d2be3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -60,6 +60,7 @@ dependencies { implementation(libs.androidx.room.runtime) implementation(libs.androidx.room.ktx) implementation(libs.lifecycle.livedata.ktx) + implementation(libs.compose.runtime.livedata) ksp(libs.androidx.room.compiler) } \ No newline at end of file diff --git a/app/src/main/java/come/stormborntales/notevault/MainActivity.kt b/app/src/main/java/come/stormborntales/notevault/MainActivity.kt index 990c1ab..332389d 100644 --- a/app/src/main/java/come/stormborntales/notevault/MainActivity.kt +++ b/app/src/main/java/come/stormborntales/notevault/MainActivity.kt @@ -57,7 +57,7 @@ class MainActivity : ComponentActivity() { // UI anzeigen MainScreen( - notes = notes, + viewModel = viewModel, onAddNoteClicked = { imagePickerLauncher.launch( arrayOf("image/*") diff --git a/app/src/main/java/come/stormborntales/notevault/ui/screens/FullScreenViewer.kt b/app/src/main/java/come/stormborntales/notevault/ui/screens/FullScreenViewer.kt index 6dae13f..ee0fc02 100644 --- a/app/src/main/java/come/stormborntales/notevault/ui/screens/FullScreenViewer.kt +++ b/app/src/main/java/come/stormborntales/notevault/ui/screens/FullScreenViewer.kt @@ -31,7 +31,7 @@ fun FullscreenImageViewer( HorizontalPager(state = pagerState) { page -> val context = LocalContext.current val imageBitmap = remember(images[page]) { - loadImageBitmap(context, images[page]) + loadImageBitmap(context, images[page].toString()) } imageBitmap?.let { diff --git a/app/src/main/java/come/stormborntales/notevault/ui/screens/MainScreen.kt b/app/src/main/java/come/stormborntales/notevault/ui/screens/MainScreen.kt index 2289de0..686ec1c 100644 --- a/app/src/main/java/come/stormborntales/notevault/ui/screens/MainScreen.kt +++ b/app/src/main/java/come/stormborntales/notevault/ui/screens/MainScreen.kt @@ -15,6 +15,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material3.* import androidx.compose.runtime.* +import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -23,11 +24,15 @@ import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import come.stormborntales.notevault.FullscreenImageViewerActivity +import come.stormborntales.notevault.data.local.entity.NoteEntity import come.stormborntales.notevault.data.model.NoteEntry +import come.stormborntales.notevault.ui.viewmodel.NoteViewModel import java.io.InputStream +import androidx.core.net.toUri -fun loadImageBitmap(context: Context, uri: Uri): ImageBitmap? { +fun loadImageBitmap(context: Context, uriString: String): ImageBitmap? { return try { + val uri = uriString.toUri() val inputStream: InputStream? = context.contentResolver.openInputStream(uri) val bitmap = BitmapFactory.decodeStream(inputStream) bitmap?.asImageBitmap() @@ -38,7 +43,7 @@ fun loadImageBitmap(context: Context, uri: Uri): ImageBitmap? { } @Composable -fun NoteCard(note: NoteEntry) { +fun NoteCard(note: NoteEntity) { val context = LocalContext.current val imageBitmap = remember(note.images) { note.images.firstOrNull()?.let { loadImageBitmap(context, it) } @@ -100,8 +105,11 @@ fun NoteCard(note: NoteEntry) { ) { OutlinedButton( onClick = { + val uris = ArrayList(); + note.images.forEach { uris.add(it.toUri()) } + val intent = Intent(context, FullscreenImageViewerActivity::class.java).apply { - putParcelableArrayListExtra("imageUris", ArrayList(note.images)) + putParcelableArrayListExtra("imageUris", ArrayList(uris)) } context.startActivity(intent) }, @@ -135,12 +143,9 @@ fun NoteCard(note: NoteEntry) { @Composable fun MainScreen( onAddNoteClicked: () -> Unit, // Übergib hier deine Logik für den Import - notes: MutableList, // Liste der Notenbilder (hier als URI), + viewModel: NoteViewModel ) { - val dummyNotes = notes - var noteToShow by remember { mutableStateOf(null) } - // Hole den aktuellen Context - val context = LocalContext.current + val notes by viewModel.notes.observeAsState(emptyList()) Scaffold( topBar = { TopAppBar( @@ -162,7 +167,7 @@ fun MainScreen( .fillMaxSize() .padding(16.dp) ) { - items(dummyNotes) { note -> + items(notes) { note -> NoteCard(note = note) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7084a5f..757f10d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,8 +12,10 @@ composeBom = "2024.04.01" navigationCompose = "2.8.9" room = "2.7.1" ksp="2.1.21-RC-2.0.0" +compose = "1.6.0" # oder was immer deine aktuelle Compose-Version ist [libraries] +compose-runtime-livedata = { group = "androidx.compose.runtime", name = "runtime-livedata", version.ref = "compose" } lifecycle-livedata-ktx = "androidx.lifecycle:lifecycle-livedata-ktx:2.8.7" androidx-compose-bom-v20240100 = { module = "androidx.compose:compose-bom", version.ref = "composeBomVersion" } androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }