fix imports on replace buttons with icons
This commit is contained in:
2
.idea/deviceManager.xml
generated
2
.idea/deviceManager.xml
generated
@@ -5,7 +5,7 @@
|
||||
<list>
|
||||
<ColumnSorterState>
|
||||
<option name="column" value="Name" />
|
||||
<option name="order" value="ASCENDING" />
|
||||
<option name="order" value="DESCENDING" />
|
||||
</ColumnSorterState>
|
||||
</list>
|
||||
</option>
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user