@@ -6,15 +6,14 @@ import androidx.compose.foundation.layout.Column
66import androidx.compose.foundation.layout.ExperimentalLayoutApi
77import androidx.compose.foundation.layout.FlowRow
88import androidx.compose.foundation.layout.Row
9- import androidx.compose.foundation.layout.Spacer
109import androidx.compose.foundation.layout.fillMaxWidth
11- import androidx.compose.foundation.layout.height
1210import androidx.compose.foundation.layout.padding
1311import androidx.compose.material.icons.Icons
1412import androidx.compose.material.icons.automirrored.filled.PlaylistPlay
1513import androidx.compose.material.icons.filled.ClearAll
1614import androidx.compose.material.icons.filled.Headphones
1715import androidx.compose.material.icons.filled.PictureInPicture
16+ import androidx.compose.material3.AlertDialog
1817import androidx.compose.material3.ExperimentalMaterial3Api
1918import androidx.compose.material3.ExposedDropdownMenuBox
2019import androidx.compose.material3.ExposedDropdownMenuDefaults
@@ -24,6 +23,7 @@ import androidx.compose.material3.MenuAnchorType
2423import androidx.compose.material3.PlainTooltip
2524import androidx.compose.material3.Surface
2625import androidx.compose.material3.Text
26+ import androidx.compose.material3.TextButton
2727import androidx.compose.material3.TextField
2828import androidx.compose.material3.TooltipBox
2929import androidx.compose.material3.TooltipDefaults
@@ -93,20 +93,20 @@ private fun HistoryHeader(
9393 onClickPlayAll : () -> Unit ,
9494 onClickPopup : () -> Unit
9595) {
96- var expanded by remember { mutableStateOf(false ) }
97- val selected = when (sortKey) {
98- SortKey .MOST_PLAYED -> R .string.title_most_played
99- SortKey .LAST_PLAYED -> R .string.title_last_played
100- }
101-
10296 Column (
10397 modifier = Modifier
10498 .fillMaxWidth()
10599 .padding(12 .dp),
106- verticalArrangement = Arrangement .Center ,
100+ verticalArrangement = Arrangement .spacedBy( 12 .dp, Alignment . CenterVertically ) ,
107101 horizontalAlignment = Alignment .CenterHorizontally ,
108102 ) {
109103 Row (verticalAlignment = Alignment .CenterVertically ) {
104+ var expanded by remember { mutableStateOf(false ) }
105+ val selected = when (sortKey) {
106+ SortKey .MOST_PLAYED -> R .string.title_most_played
107+ SortKey .LAST_PLAYED -> R .string.title_last_played
108+ }
109+
110110 ExposedDropdownMenuBox (
111111 expanded = expanded,
112112 onExpandedChange = { expanded = it },
@@ -119,7 +119,7 @@ private fun HistoryHeader(
119119 onValueChange = {},
120120 trailingIcon = { ExposedDropdownMenuDefaults .TrailingIcon (expanded = expanded) },
121121 colors = ExposedDropdownMenuDefaults .textFieldColors(),
122- label = { Text (text = stringResource(R .string.history_sort_label)) }
122+ label = { Text (text = stringResource(R .string.history_sort_label)) },
123123 )
124124
125125 ExposedDropdownMenu (
@@ -131,14 +131,14 @@ private fun HistoryHeader(
131131 onClick = {
132132 expanded = false
133133 onSelectSortKey(SortKey .MOST_PLAYED )
134- }
134+ },
135135 )
136136 DropdownTextMenuItem (
137137 text = R .string.title_last_played,
138138 onClick = {
139139 expanded = false
140140 onSelectSortKey(SortKey .LAST_PLAYED )
141- }
141+ },
142142 )
143143 }
144144 }
@@ -150,39 +150,69 @@ private fun HistoryHeader(
150150 },
151151 state = rememberTooltipState(),
152152 ) {
153- IconButton (onClick = onClickClear) {
153+ var openClearDialog by remember { mutableStateOf(false ) }
154+
155+ IconButton (onClick = { openClearDialog = true }) {
154156 Icon (
155157 imageVector = Icons .Default .ClearAll ,
156158 contentDescription = stringResource(R .string.clear_history_description),
157159 )
158160 }
161+
162+ ClearHistoryDialog (openClearDialog, onClickClear, onDismissRequest = { openClearDialog = false })
159163 }
160164 }
161165
162- Spacer (Modifier .height(12 .dp))
163-
164166 FlowRow (horizontalArrangement = Arrangement .spacedBy(4 .dp)) {
165167 IconButtonWithLabel (
166168 icon = Icons .Default .Headphones ,
167169 label = R .string.controls_background_title,
168- onClick = onClickBackground
170+ onClick = onClickBackground,
169171 )
170172
171173 IconButtonWithLabel (
172174 icon = Icons .AutoMirrored .Filled .PlaylistPlay ,
173175 label = R .string.play_all,
174- onClick = onClickPlayAll
176+ onClick = onClickPlayAll,
175177 )
176178
177179 IconButtonWithLabel (
178180 icon = Icons .Default .PictureInPicture ,
179181 label = R .string.controls_popup_title,
180- onClick = onClickPopup
182+ onClick = onClickPopup,
181183 )
182184 }
183185 }
184186}
185187
188+ @Composable
189+ private fun ClearHistoryDialog (
190+ openClearDialog : Boolean ,
191+ onClickClear : () -> Unit ,
192+ onDismissRequest : () -> Unit
193+ ) {
194+ if (openClearDialog) {
195+ AlertDialog (
196+ onDismissRequest = onDismissRequest,
197+ title = { Text (text = stringResource(R .string.delete_view_history_alert)) },
198+ text = { Text (text = stringResource(R .string.delete_view_history_description)) },
199+ confirmButton = {
200+ TextButton (onClick = {
201+ onClickClear()
202+ onDismissRequest()
203+ }) {
204+ Text (stringResource(R .string.delete))
205+ }
206+ },
207+ dismissButton = {
208+ TextButton (onClick = onDismissRequest) {
209+ Text (stringResource(R .string.cancel))
210+ }
211+ },
212+ )
213+ }
214+ }
215+
186216@Preview(name = " Light mode" , uiMode = Configuration .UI_MODE_NIGHT_NO )
187217@Preview(name = " Dark mode" , uiMode = Configuration .UI_MODE_NIGHT_YES )
188218@Composable
0 commit comments