diff --git a/.idea/.gitignore b/.idea/.gitignore index 13566b8..5645927 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -6,3 +6,4 @@ # Datasource local storage ignored files /dataSources/ /dataSources.local.xml +/AndroidProjectSystem.xml diff --git a/app/src/main/java/come/stormborntales/notevault/MainActivity.kt b/app/src/main/java/come/stormborntales/notevault/MainActivity.kt index a3e1cdc..3b6ce01 100644 --- a/app/src/main/java/come/stormborntales/notevault/MainActivity.kt +++ b/app/src/main/java/come/stormborntales/notevault/MainActivity.kt @@ -45,6 +45,7 @@ import come.stormborntales.notevault.data.local.entity.NoteEntity import come.stormborntales.notevault.data.repository.NoteRepository import come.stormborntales.notevault.ui.screens.AddNoteDialog import come.stormborntales.notevault.ui.screens.MainScreen +import come.stormborntales.notevault.ui.screens.NotesScreen import come.stormborntales.notevault.ui.screens.SettingsScreen import come.stormborntales.notevault.ui.theme.NoteVaultTheme import come.stormborntales.notevault.ui.viewmodel.NoteViewModel @@ -90,6 +91,7 @@ class MainActivity : ComponentActivity() { val navItems = listOf( "Home" to "main", + "Notes" to "notes", "Einstellungen" to "settings" ) @@ -203,6 +205,9 @@ class MainActivity : ComponentActivity() { composable("settings") { SettingsScreen() } + composable("notes") { + NotesScreen() + } } if (showDialog) { diff --git a/app/src/main/java/come/stormborntales/notevault/data/local/AppDatabase.kt b/app/src/main/java/come/stormborntales/notevault/data/local/AppDatabase.kt index abdda36..ea9cf37 100644 --- a/app/src/main/java/come/stormborntales/notevault/data/local/AppDatabase.kt +++ b/app/src/main/java/come/stormborntales/notevault/data/local/AppDatabase.kt @@ -7,9 +7,10 @@ import androidx.room.Room import androidx.room.RoomDatabase import androidx.room.TypeConverters import come.stormborntales.notevault.data.local.dao.NoteDao +import come.stormborntales.notevault.data.local.entity.NoteCollection import come.stormborntales.notevault.data.local.entity.NoteEntity -@Database(entities = [NoteEntity::class], version = 1) +@Database(entities = [NoteEntity::class, NoteCollection::class], version = 1) @TypeConverters(UriListConverter::class) abstract class AppDatabase : RoomDatabase() { abstract fun noteDao(): NoteDao diff --git a/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteCollection.kt b/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteCollection.kt new file mode 100644 index 0000000..a17e35c --- /dev/null +++ b/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteCollection.kt @@ -0,0 +1,11 @@ +package come.stormborntales.notevault.data.local.entity + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity("note_collections") +data class NoteCollection( + @PrimaryKey(autoGenerate = true) var id: Int = 0, + var name: String, + var parentId: Int? = null +) diff --git a/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteEntity.kt b/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteEntity.kt index 9be2a13..17fa7e6 100644 --- a/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteEntity.kt +++ b/app/src/main/java/come/stormborntales/notevault/data/local/entity/NoteEntity.kt @@ -1,9 +1,16 @@ package come.stormborntales.notevault.data.local.entity import androidx.room.Entity +import androidx.room.ForeignKey import androidx.room.PrimaryKey -@Entity(tableName = "notes") +@Entity(tableName = "notes", + foreignKeys = [ForeignKey( + entity = NoteCollection::class, + parentColumns = ["id"], + childColumns = ["collectionId"], + onDelete = ForeignKey.CASCADE + )]) data class NoteEntity( @PrimaryKey(autoGenerate = true) val id: Int = 0, var title: String, @@ -12,5 +19,6 @@ data class NoteEntity( var year: Int?, var genre: String?, var description: String?, - val imagePreview: String -) + val imagePreview: String, + val collectionId: Int? +) \ No newline at end of file diff --git a/app/src/main/java/come/stormborntales/notevault/ui/screens/NotesBrowser.kt b/app/src/main/java/come/stormborntales/notevault/ui/screens/NotesBrowser.kt new file mode 100644 index 0000000..fe8de69 --- /dev/null +++ b/app/src/main/java/come/stormborntales/notevault/ui/screens/NotesBrowser.kt @@ -0,0 +1,24 @@ +package come.stormborntales.notevault.ui.screens + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Divider +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp + + +@Composable +fun NotesScreen() { + +} \ No newline at end of file diff --git a/app/src/main/java/come/stormborntales/notevault/ui/viewmodel/NoteViewModel.kt b/app/src/main/java/come/stormborntales/notevault/ui/viewmodel/NoteViewModel.kt index 17bfaaf..b16129f 100644 --- a/app/src/main/java/come/stormborntales/notevault/ui/viewmodel/NoteViewModel.kt +++ b/app/src/main/java/come/stormborntales/notevault/ui/viewmodel/NoteViewModel.kt @@ -93,7 +93,8 @@ class NoteViewModel( year = year, genre = genre, description = description, - imagePreview = preview_image_path.toString() + imagePreview = preview_image_path.toString(), + collectionId = null ) repository.insert(note)