fix imports on replace buttons with icons

This commit is contained in:
2025-10-11 11:17:43 +02:00
parent 233760ad48
commit 1f06eae886
5 changed files with 62 additions and 13 deletions

View File

@@ -5,7 +5,7 @@
<list>
<ColumnSorterState>
<option name="column" value="Name" />
<option name="order" value="ASCENDING" />
<option name="order" value="DESCENDING" />
</ColumnSorterState>
</list>
</option>

View File

@@ -53,6 +53,8 @@ dependencies {
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
implementation("androidx.compose.material:material-icons-extended:1.6.8") // Oder eine neuere Version
// Room Database
implementation(libs.androidx.room.runtime)

View File

@@ -8,12 +8,19 @@ 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.imePadding // New import
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Button // New import
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.PlaylistAdd
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material3.Checkbox
import androidx.compose.material3.Icon // New import
import androidx.compose.material3.IconButton // New import
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField // New import
import androidx.compose.material3.Text
@@ -29,9 +36,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import de.lxtools.noteshop.R
import de.lxtools.noteshop.data.ShoppingList
import de.lxtools.noteshop.data.ShoppingListItem
import de.lxtools.noteshop.data.ShoppingListWithItems
import kotlinx.coroutines.launch
@Composable
@@ -79,12 +84,36 @@ fun ShoppingListDetailScreen(
modifier = Modifier.weight(1f)
)
Spacer(modifier = Modifier.width(8.dp))
Button(
IconButton( // Default Add Button
onClick = {
if (newItemName.isNotBlank()) {
coroutineScope.launch {
val itemsToAdd = if (newItemName.contains(',')) {
newItemName.split(',').map { it.trim() }.filter { it.isNotBlank() }
} else {
listOf(newItemName.trim())
}
itemsToAdd.forEach { name ->
viewModel.saveShoppingListItem(
ShoppingListItem(name = name, listId = list.shoppingList.id)
)
}
newItemName = "" // Clear input field
}
}
},
enabled = newItemName.isNotBlank()
) {
Icon(Icons.AutoMirrored.Filled.PlaylistAdd, contentDescription = stringResource(R.string.add_item_icon_desc))
}
Spacer(modifier = Modifier.width(8.dp))
IconButton( // Simple Mode Add Button
onClick = {
if (newItemName.isNotBlank()) {
coroutineScope.launch {
viewModel.saveShoppingListItem(
ShoppingListItem(name = newItemName, listId = list.shoppingList.id)
ShoppingListItem(name = newItemName.trim(), listId = list.shoppingList.id)
)
newItemName = "" // Clear input field
}
@@ -92,7 +121,7 @@ fun ShoppingListDetailScreen(
},
enabled = newItemName.isNotBlank()
) {
Text(stringResource(R.string.add_item)) // Reusing string, should be "Add"
Icon(Icons.AutoMirrored.Filled.PlaylistAdd, contentDescription = stringResource(R.string.add_item_simple_icon_desc))
}
}
Spacer(modifier = Modifier.height(16.dp))
@@ -146,22 +175,28 @@ fun ShoppingListDetailScreen(
Column(
modifier = Modifier
.align(Alignment.BottomEnd)
.padding(16.dp),
.padding(16.dp)
.imePadding(), // Apply imePadding here
horizontalAlignment = Alignment.End,
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
Button(onClick = { viewModel.toggleShowCompletedItems() }) {
Text(text = if (showCompletedItems) stringResource(R.string.hide_completed_items) else stringResource(R.string.show_completed_items))
IconButton(onClick = { viewModel.toggleShowCompletedItems() }) {
Icon(
imageVector = if (showCompletedItems) Icons.Filled.VisibilityOff else Icons.Filled.Visibility,
contentDescription = if (showCompletedItems) stringResource(R.string.hide_completed_icon_desc) else stringResource(R.string.show_completed_icon_desc)
)
}
Button(
IconButton(
onClick = {
coroutineScope.launch {
listId?.let { viewModel.deleteCompletedItems(it) }
}
},
enabled = list.items.any { it.isChecked } // Enable only if there are checked items
enabled = list.items.any { it.isChecked }
) {
Text(stringResource(R.string.remove_completed_items))
Icon(Icons.Default.Delete, contentDescription = stringResource(R.string.remove_completed_icon_desc))
}
}
}

View File

@@ -30,6 +30,12 @@
<string name="no_items_in_list">Noch keine Artikel in dieser Liste.</string>
<string name="shopping_list_not_found">Einkaufsliste nicht gefunden.</string>
<string name="search_list_hint">Listen suchen...</string>
<string name="add_item_simple_mode">Hinzufügen (Einfach)</string>
<string name="add_item_icon_desc">Artikel hinzufügen</string>
<string name="add_item_simple_icon_desc">Artikel hinzufügen (einfacher Modus)</string>
<string name="show_completed_icon_desc">Erledigte Artikel anzeigen</string>
<string name="hide_completed_icon_desc">Erledigte Artikel ausblenden</string>
<string name="remove_completed_icon_desc">Erledigte Artikel entfernen</string>
<string name="add_item_hint">Artikelname</string>
<string name="show_completed_items">Erledigte anzeigen</string>
<string name="hide_completed_items">Erledigte ausblenden</string>

View File

@@ -30,6 +30,12 @@
<string name="no_items_in_list">No items in this list yet.</string>
<string name="shopping_list_not_found">Shopping list not found.</string>
<string name="search_list_hint">Search lists...</string>
<string name="add_item_simple_mode">Add (Simple Mode)</string>
<string name="add_item_icon_desc">Add item(s)</string>
<string name="add_item_simple_icon_desc">Add item (simple mode)</string>
<string name="show_completed_icon_desc">Show completed items</string>
<string name="hide_completed_icon_desc">Hide completed items</string>
<string name="remove_completed_icon_desc">Remove completed items</string>
<string name="add_item_hint">Item name</string>
<string name="show_completed_items">Show completed</string>
<string name="hide_completed_items">Hide completed</string>