Compare commits
1 Commits
feature/IS
...
feature/IS
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c9a07bf9a |
@@ -108,15 +108,15 @@ fun PresetIconButton(
|
|||||||
Image(
|
Image(
|
||||||
painter = painterResource(id =
|
painter = painterResource(id =
|
||||||
if (type == PresetButtonType.SAVE) {
|
if (type == PresetButtonType.SAVE) {
|
||||||
R.drawable.ic_preset_save2
|
R.drawable.ic_preset_save
|
||||||
} else {
|
} else {
|
||||||
R.drawable.ic_preset_load
|
R.drawable.ic_preset_load
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
contentDescription = "",
|
contentDescription = "",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(30.px.dp),
|
.size(20.px.dp),
|
||||||
contentScale = ContentScale.Fit
|
contentScale = ContentScale.Crop
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -552,12 +552,12 @@ fun PresetLoadPopup(
|
|||||||
horizontalArrangement = Arrangement.Center,
|
horizontalArrangement = Arrangement.Center,
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
|
Spacer(Modifier.weight(1f))
|
||||||
|
|
||||||
if (isEditMode) {
|
if (isEditMode) {
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
// Edit Mode
|
// Edit Mode
|
||||||
|
|
||||||
Spacer(modifier = Modifier.width(10.px.dp))
|
|
||||||
|
|
||||||
// Preset Delete (Delete confirm popup)
|
// Preset Delete (Delete confirm popup)
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
@@ -578,7 +578,7 @@ fun PresetLoadPopup(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(Modifier.weight(1f))
|
Spacer(Modifier.width(10.px.dp))
|
||||||
|
|
||||||
// Preset Cancel (Reload selected item from mainViewModel)
|
// Preset Cancel (Reload selected item from mainViewModel)
|
||||||
Box(
|
Box(
|
||||||
@@ -646,7 +646,7 @@ fun PresetLoadPopup(
|
|||||||
Timber.d("onClick - Confirm Save")
|
Timber.d("onClick - Confirm Save")
|
||||||
|
|
||||||
// Check empty names and conflict priority exist in the preset viewmodel's presetList
|
// Check empty names and conflict priority exist in the preset viewmodel's presetList
|
||||||
val listToValidate = presetViewModel.presetList.value
|
var listToValidate = presetViewModel.presetList.value
|
||||||
|
|
||||||
// Check for any presets with an empty name
|
// Check for any presets with an empty name
|
||||||
val hasEmptyName =
|
val hasEmptyName =
|
||||||
@@ -678,18 +678,32 @@ fun PresetLoadPopup(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check for duplicate priorities (ignoring priority 0)
|
// Check for duplicate priorities (ignoring priority 0)
|
||||||
val priorityConflicts = listToValidate
|
val duplicatePriorityGroups = listToValidate
|
||||||
.filter { it.priority > 0 } // Only consider prioritized items
|
.filter { it.priority > 0 }
|
||||||
.groupBy { it.priority } // Group them by priority
|
.groupBy { it.priority }
|
||||||
.any { it.value.size > 1 } // Check if any group is larger than 1
|
.filter { it.value.size > 1 }
|
||||||
|
|
||||||
if (priorityConflicts) {
|
if (duplicatePriorityGroups.isNotEmpty()) {
|
||||||
Toast.makeText(
|
val resolvedList = listToValidate.map { it.copy() }.toMutableList()
|
||||||
context,
|
val selectedPreset = resolvedList.getOrNull(selectedPresetIndex)
|
||||||
"There are duplicate priorities. Please ensure each priority is unique.",
|
|
||||||
Toast.LENGTH_LONG
|
duplicatePriorityGroups.forEach { (priorityValue, presets) ->
|
||||||
).show()
|
val keeperId = presets
|
||||||
return@noRippleClickable // Stop the process
|
.firstOrNull { preset ->
|
||||||
|
selectedPreset != null && preset.id == selectedPreset.id
|
||||||
|
}
|
||||||
|
?.id
|
||||||
|
?: presets.first().id
|
||||||
|
|
||||||
|
resolvedList.forEachIndexed { index, preset ->
|
||||||
|
if (preset.priority == priorityValue && preset.id != keeperId) {
|
||||||
|
resolvedList[index] = preset.copy(priority = 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
presetViewModel.setPresetList(resolvedList)
|
||||||
|
listToValidate = resolvedList
|
||||||
}
|
}
|
||||||
|
|
||||||
Timber.d("Validation successful. Saving list to MainViewModel.")
|
Timber.d("Validation successful. Saving list to MainViewModel.")
|
||||||
@@ -729,11 +743,7 @@ fun PresetLoadPopup(
|
|||||||
contentScale = ContentScale.Crop
|
contentScale = ContentScale.Crop
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(modifier = Modifier.width(10.px.dp))
|
|
||||||
} else {
|
} else {
|
||||||
Spacer(Modifier.weight(1f))
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
// Select Mode - hide Keyboard
|
// Select Mode - hide Keyboard
|
||||||
focusManager.clearFocus(force = true) // Hide the keyboard
|
focusManager.clearFocus(force = true) // Hide the keyboard
|
||||||
@@ -794,8 +804,6 @@ fun PresetLoadPopup(
|
|||||||
contentScale = ContentScale.Crop
|
contentScale = ContentScale.Crop
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(modifier = Modifier.width(10.px.dp))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user