ADD: Adding Notes to Collections

This commit is contained in:
sebastian 2025-05-10 14:11:07 +02:00
parent caece7bfea
commit 6df3f756ec
4 changed files with 16 additions and 12 deletions

View File

@ -49,6 +49,8 @@ import come.stormborntales.notevault.ui.screens.MainScreen
import come.stormborntales.notevault.ui.screens.NotesScreen import come.stormborntales.notevault.ui.screens.NotesScreen
import come.stormborntales.notevault.ui.screens.SettingsScreen import come.stormborntales.notevault.ui.screens.SettingsScreen
import come.stormborntales.notevault.ui.theme.NoteVaultTheme import come.stormborntales.notevault.ui.theme.NoteVaultTheme
import come.stormborntales.notevault.ui.viewmodel.NoteBrowserViewModel
import come.stormborntales.notevault.ui.viewmodel.NoteBrowserViewModelFactory
import come.stormborntales.notevault.ui.viewmodel.NoteViewModel import come.stormborntales.notevault.ui.viewmodel.NoteViewModel
import come.stormborntales.notevault.ui.viewmodel.NoteViewModelFactory import come.stormborntales.notevault.ui.viewmodel.NoteViewModelFactory
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -63,12 +65,13 @@ class MainActivity : ComponentActivity() {
val noteRepository = NoteRepository(database.noteDao()) val noteRepository = NoteRepository(database.noteDao())
val collectionRepository = CollectionRepository(database.collectionDao()) val collectionRepository = CollectionRepository(database.collectionDao())
val viewModelFactory = NoteViewModelFactory(noteRepository) val viewModelFactory = NoteViewModelFactory(noteRepository)
val noteBrowserViewModelFactory = NoteBrowserViewModelFactory(noteRepository, collectionRepository)
setContent { setContent {
NoteVaultTheme { NoteVaultTheme {
val navController = rememberNavController() val navController = rememberNavController()
val viewModel: NoteViewModel = viewModel(factory = viewModelFactory) val viewModel: NoteViewModel = viewModel(factory = viewModelFactory)
val noteBrowserViewModelFactory: NoteBrowserViewModel = viewModel(factory = noteBrowserViewModelFactory)
var selectedUris by remember { mutableStateOf<List<Uri>>(emptyList()) } var selectedUris by remember { mutableStateOf<List<Uri>>(emptyList()) }
var showDialog by remember { mutableStateOf(false) } var showDialog by remember { mutableStateOf(false) }
var noteToEdit by remember { mutableStateOf<NoteEntity?>(null) } var noteToEdit by remember { mutableStateOf<NoteEntity?>(null) }
@ -208,7 +211,9 @@ class MainActivity : ComponentActivity() {
SettingsScreen() SettingsScreen()
} }
composable("notes") { composable("notes") {
NotesScreen(collectionRepository, noteRepository) NotesScreen(collectionRepository, noteRepository, onImportNotes = {
imagePickerLauncher.launch(arrayOf("image/*"))
}, noteBrowserViewModelFactory)
} }
} }
@ -226,6 +231,7 @@ class MainActivity : ComponentActivity() {
genre = genre, genre = genre,
description = description, description = description,
selectedUris = selectedUris, selectedUris = selectedUris,
collectionID = noteBrowserViewModelFactory.currentParentId.value,
onDone = { showDialog = false } onDone = { showDialog = false }
) )
} else { } else {

View File

@ -19,7 +19,8 @@ fun AddNoteDialog(
initialComposer: String? = null, initialComposer: String? = null,
initialYear: Int? = null, initialYear: Int? = null,
initialGenre: String? = null, initialGenre: String? = null,
initialDescription: String? = null initialDescription: String? = null,
collectionId: Int? = null
) { ) {
var title by remember { mutableStateOf(initialTitle) } var title by remember { mutableStateOf(initialTitle) }
var composer by remember { mutableStateOf(initialComposer ?: "") } var composer by remember { mutableStateOf(initialComposer ?: "") }

View File

@ -237,15 +237,12 @@ fun NoteGrid(
fun NotesScreen( fun NotesScreen(
collectionRepository: CollectionRepository, collectionRepository: CollectionRepository,
noteRepository: NoteRepository, noteRepository: NoteRepository,
onImportNotes: (Int?) -> Unit,
viewModel: NoteBrowserViewModel
) { ) {
var menuExpanded by remember { mutableStateOf(false) } var menuExpanded by remember { mutableStateOf(false) }
var showDialog by remember { mutableStateOf(false) } var showDialog by remember { mutableStateOf(false) }
val viewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current)
val viewModel: NoteBrowserViewModel = viewModel(
viewModelStoreOwner,
factory = NoteBrowserViewModelFactory(noteRepository, collectionRepository)
)
val collections by viewModel.currentCollections.collectAsState() val collections by viewModel.currentCollections.collectAsState()
val notes by viewModel.currentNotes.collectAsState() val notes by viewModel.currentNotes.collectAsState()
@ -274,7 +271,7 @@ fun NotesScreen(
text = { Text("Noten importieren") }, text = { Text("Noten importieren") },
onClick = { onClick = {
menuExpanded = false menuExpanded = false
// Handle action onImportNotes(viewModel.currentParentId.value)
} }
) )
} }

View File

@ -61,7 +61,7 @@ class NoteViewModel(
} }
} }
fun addNote(context: Context, title: String, composer: String?, year: Int?, genre: String?, description: String?, selectedUris: List<Uri>, onDone:() -> Unit) { fun addNote(context: Context, title: String, composer: String?, year: Int?, genre: String?, description: String?, selectedUris: List<Uri>, collectionID: Int?, onDone:() -> Unit) {
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
val copiedUris = selectedUris.mapNotNull { uri -> val copiedUris = selectedUris.mapNotNull { uri ->
try { try {
@ -94,7 +94,7 @@ class NoteViewModel(
genre = genre, genre = genre,
description = description, description = description,
imagePreview = preview_image_path.toString(), imagePreview = preview_image_path.toString(),
collectionId = null collectionId = collectionID
) )
repository.insert(note) repository.insert(note)