@@ -2,7 +2,6 @@ package org.schabi.newpipe.ui.screens
22
33import android.content.res.Configuration
44import androidx.compose.foundation.layout.Arrangement
5- import androidx.compose.foundation.layout.Column
65import androidx.compose.foundation.layout.ExperimentalLayoutApi
76import androidx.compose.foundation.layout.FlowRow
87import androidx.compose.foundation.layout.Row
@@ -15,19 +14,13 @@ import androidx.compose.material.icons.filled.Headphones
1514import androidx.compose.material.icons.filled.PictureInPicture
1615import androidx.compose.material3.AlertDialog
1716import androidx.compose.material3.ExperimentalMaterial3Api
18- import androidx.compose.material3.ExposedDropdownMenuBox
19- import androidx.compose.material3.ExposedDropdownMenuDefaults
2017import androidx.compose.material3.Icon
21- import androidx.compose.material3.IconButton
22- import androidx.compose.material3.MenuAnchorType
23- import androidx.compose.material3.PlainTooltip
18+ import androidx.compose.material3.SegmentedButton
19+ import androidx.compose.material3.SegmentedButtonDefaults
20+ import androidx.compose.material3.SingleChoiceSegmentedButtonRow
2421import androidx.compose.material3.Surface
2522import androidx.compose.material3.Text
2623import androidx.compose.material3.TextButton
27- import androidx.compose.material3.TextField
28- import androidx.compose.material3.TooltipBox
29- import androidx.compose.material3.TooltipDefaults
30- import androidx.compose.material3.rememberTooltipState
3124import androidx.compose.runtime.Composable
3225import androidx.compose.runtime.getValue
3326import androidx.compose.runtime.mutableStateOf
@@ -47,7 +40,6 @@ import org.schabi.newpipe.ktx.findFragmentActivity
4740import org.schabi.newpipe.local.history.HistoryViewModel
4841import org.schabi.newpipe.local.history.SortKey
4942import org.schabi.newpipe.player.playqueue.SinglePlayQueue
50- import org.schabi.newpipe.ui.components.common.DropdownTextMenuItem
5143import org.schabi.newpipe.ui.components.common.IconButtonWithLabel
5244import org.schabi.newpipe.ui.components.items.ItemList
5345import org.schabi.newpipe.ui.theme.AppTheme
@@ -93,73 +85,23 @@ private fun HistoryHeader(
9385 onClickPlayAll : () -> Unit ,
9486 onClickPopup : () -> Unit
9587) {
96- Column (
88+ FlowRow (
9789 modifier = Modifier
9890 .fillMaxWidth()
9991 .padding(12 .dp),
10092 verticalArrangement = Arrangement .spacedBy(12 .dp, Alignment .CenterVertically ),
101- horizontalAlignment = Alignment .CenterHorizontally ,
93+ horizontalArrangement = Arrangement .spacedBy( 12 .dp, Alignment .CenterHorizontally ) ,
10294 ) {
103- 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-
110- ExposedDropdownMenuBox (
111- expanded = expanded,
112- onExpandedChange = { expanded = it },
113- ) {
114- TextField (
115- enabled = true ,
116- modifier = Modifier .menuAnchor(MenuAnchorType .PrimaryNotEditable ),
117- value = stringResource(selected),
118- readOnly = true ,
119- onValueChange = {},
120- trailingIcon = { ExposedDropdownMenuDefaults .TrailingIcon (expanded = expanded) },
121- colors = ExposedDropdownMenuDefaults .textFieldColors(),
122- label = { Text (text = stringResource(R .string.history_sort_label)) },
123- )
124-
125- ExposedDropdownMenu (
126- expanded = expanded,
127- onDismissRequest = { expanded = false },
95+ SingleChoiceSegmentedButtonRow {
96+ SortKey .entries.forEachIndexed { index, key ->
97+ SegmentedButton (
98+ selected = key == sortKey,
99+ onClick = { onSelectSortKey(key) },
100+ shape = SegmentedButtonDefaults
101+ .itemShape(index = index, count = SortKey .entries.size)
128102 ) {
129- DropdownTextMenuItem (
130- text = R .string.title_most_played,
131- onClick = {
132- expanded = false
133- onSelectSortKey(SortKey .MOST_PLAYED )
134- },
135- )
136- DropdownTextMenuItem (
137- text = R .string.title_last_played,
138- onClick = {
139- expanded = false
140- onSelectSortKey(SortKey .LAST_PLAYED )
141- },
142- )
143- }
144- }
145-
146- TooltipBox (
147- positionProvider = TooltipDefaults .rememberPlainTooltipPositionProvider(),
148- tooltip = {
149- PlainTooltip { Text (text = stringResource(R .string.clear_views_history_title)) }
150- },
151- state = rememberTooltipState(),
152- ) {
153- var openClearDialog by remember { mutableStateOf(false ) }
154-
155- IconButton (onClick = { openClearDialog = true }) {
156- Icon (
157- imageVector = Icons .Default .ClearAll ,
158- contentDescription = stringResource(R .string.clear_history_description),
159- )
103+ Text (text = stringResource(key.title))
160104 }
161-
162- ClearHistoryDialog (openClearDialog, onClickClear, onDismissRequest = { openClearDialog = false })
163105 }
164106 }
165107
@@ -181,6 +123,20 @@ private fun HistoryHeader(
181123 label = R .string.controls_popup_title,
182124 onClick = onClickPopup,
183125 )
126+
127+ var openClearDialog by remember { mutableStateOf(false ) }
128+
129+ TextButton (onClick = { openClearDialog = true }) {
130+ Row (
131+ horizontalArrangement = Arrangement .spacedBy(4 .dp),
132+ verticalAlignment = Alignment .CenterVertically ,
133+ ) {
134+ Icon (imageVector = Icons .Default .ClearAll , contentDescription = null )
135+ Text (text = stringResource(R .string.clear))
136+ }
137+ }
138+
139+ ClearHistoryDialog (openClearDialog, onClickClear, onDismissRequest = { openClearDialog = false })
184140 }
185141 }
186142}
0 commit comments