ADD: Select multiple pictures as one NoteEntry
This commit is contained in:
parent
43c22ea6d6
commit
b132779730
@ -3,22 +3,14 @@ package come.stormborntales.notevault
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.PickVisualMediaRequest
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.mutableStateListOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import come.stormborntales.notevault.data.model.NoteEntry
|
||||
import come.stormborntales.notevault.ui.screens.MainScreen
|
||||
import come.stormborntales.notevault.ui.theme.NoteVaultTheme
|
||||
import java.io.File
|
||||
@ -27,28 +19,35 @@ import java.io.InputStream
|
||||
class MainActivity : ComponentActivity() {
|
||||
private lateinit var imagePickerLauncher: ActivityResultLauncher<PickVisualMediaRequest>
|
||||
// Definiere notes als MutableStateList für die gesamte Aktivität
|
||||
private val notes = mutableStateListOf<Uri>()
|
||||
private val notes = mutableStateListOf<NoteEntry>()
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
enableEdgeToEdge()
|
||||
|
||||
// Launcher für die Bildauswahl einrichten
|
||||
imagePickerLauncher = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri ->
|
||||
uri?.let {
|
||||
// Hier kannst du die Logik zum Speichern und Anzeigen des Bildes hinzufügen
|
||||
imagePickerLauncher = registerForActivityResult(ActivityResultContracts.PickMultipleVisualMedia()) { uris ->
|
||||
if (!uris.isNullOrEmpty()) {
|
||||
val context: Context = applicationContext
|
||||
val inputStream: InputStream? = contentResolver.openInputStream(uri)
|
||||
val outputFile = File(context.filesDir, "note_${System.currentTimeMillis()}.jpg")
|
||||
|
||||
inputStream?.use { input ->
|
||||
outputFile.outputStream().use { output ->
|
||||
input.copyTo(output)
|
||||
addNoteToList(notes, it)
|
||||
val copiedUris = uris.mapNotNull { uri ->
|
||||
try {
|
||||
val inputStream: InputStream? = contentResolver.openInputStream(uri)
|
||||
val outputFile =
|
||||
File(context.filesDir, "note_${System.currentTimeMillis()}_${uri.lastPathSegment}")
|
||||
inputStream?.use { input ->
|
||||
outputFile.outputStream().use { output ->
|
||||
input.copyTo(output)
|
||||
}
|
||||
}
|
||||
Uri.fromFile(outputFile)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
Log.d("MainActivity", "Bild gespeichert: ${outputFile.absolutePath}")
|
||||
|
||||
if (copiedUris.isNotEmpty()) {
|
||||
notes.add(NoteEntry(images = copiedUris)) // Titel optional setzen
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,10 +63,4 @@ class MainActivity : ComponentActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Funktion zum Hinzufügen von Noten zur Liste
|
||||
private fun addNoteToList(notes: MutableList<Uri>, uri: Uri) {
|
||||
// Hier wird das Bild zur Liste hinzugefügt
|
||||
notes.add(uri)
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package come.stormborntales.notevault.data.model
|
||||
|
||||
import android.net.Uri
|
||||
|
||||
class NoteEntry(images: List<Uri>) {
|
||||
val title: String = "Unbenannt" // oder optional
|
||||
val images: List<Uri> = images;
|
||||
|
||||
|
||||
}
|
@ -18,6 +18,7 @@ import androidx.compose.ui.graphics.ImageBitmap
|
||||
import androidx.compose.ui.graphics.asImageBitmap
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.unit.dp
|
||||
import come.stormborntales.notevault.data.model.NoteEntry
|
||||
import java.io.InputStream
|
||||
|
||||
fun loadImageBitmap(context: Context, uri: Uri): ImageBitmap? {
|
||||
@ -46,7 +47,7 @@ fun getFileNameFromUri(context: Context, uri: Uri): String? {
|
||||
@Composable
|
||||
fun MainScreen(
|
||||
onAddNoteClicked: () -> Unit, // Übergib hier deine Logik für den Import
|
||||
notes: MutableList<Uri>, // Liste der Notenbilder (hier als URI),
|
||||
notes: MutableList<NoteEntry>, // Liste der Notenbilder (hier als URI),
|
||||
) {
|
||||
val dummyNotes = notes
|
||||
// Hole den aktuellen Context
|
||||
@ -73,8 +74,8 @@ fun MainScreen(
|
||||
.padding(16.dp)
|
||||
) {
|
||||
items(dummyNotes) { noteUri ->
|
||||
val imageBitmap = loadImageBitmap(context, noteUri)
|
||||
val fileName = getFileNameFromUri(context, noteUri)
|
||||
val imageBitmap = loadImageBitmap(context, noteUri.images[0])
|
||||
val fileName = noteUri.title
|
||||
|
||||
if (imageBitmap != null) {
|
||||
Card(
|
||||
|
Loading…
Reference in New Issue
Block a user