Skip to content

Commit bf06923

Browse files
Reuse dropdown composable
1 parent 3943a87 commit bf06923

3 files changed

Lines changed: 48 additions & 54 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.schabi.newpipe.ui.components.common
2+
3+
import androidx.annotation.StringRes
4+
import androidx.compose.material3.DropdownMenuItem
5+
import androidx.compose.material3.MaterialTheme
6+
import androidx.compose.material3.Text
7+
import androidx.compose.runtime.Composable
8+
import androidx.compose.ui.res.stringResource
9+
10+
@Composable
11+
fun DropdownTextMenuItem(
12+
@StringRes text: Int,
13+
onClick: () -> Unit
14+
) {
15+
DropdownMenuItem(
16+
text = {
17+
Text(text = stringResource(text), color = MaterialTheme.colorScheme.onBackground)
18+
},
19+
onClick = onClick
20+
)
21+
}
Lines changed: 22 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
package org.schabi.newpipe.ui.components.items.stream
22

3-
import androidx.annotation.StringRes
43
import androidx.compose.material3.DropdownMenu
5-
import androidx.compose.material3.DropdownMenuItem
6-
import androidx.compose.material3.MaterialTheme
7-
import androidx.compose.material3.Text
84
import androidx.compose.runtime.Composable
95
import androidx.compose.ui.platform.LocalContext
10-
import androidx.compose.ui.res.stringResource
116
import androidx.lifecycle.viewmodel.compose.viewModel
127
import org.schabi.newpipe.R
138
import org.schabi.newpipe.database.stream.model.StreamEntity
@@ -16,6 +11,7 @@ import org.schabi.newpipe.ktx.findFragmentActivity
1611
import org.schabi.newpipe.local.dialog.PlaylistAppendDialog
1712
import org.schabi.newpipe.local.dialog.PlaylistDialog
1813
import org.schabi.newpipe.player.helper.PlayerHolder
14+
import org.schabi.newpipe.ui.components.common.DropdownTextMenuItem
1915
import org.schabi.newpipe.ui.components.items.Stream
2016
import org.schabi.newpipe.util.NavigationHelper
2117
import org.schabi.newpipe.util.SparseItemUtil
@@ -36,59 +32,59 @@ fun StreamMenu(
3632
val streamViewModel = viewModel<StreamViewModel>()
3733

3834
if (playerHolder.isPlayQueueReady) {
39-
StreamMenuItem(
35+
DropdownTextMenuItem(
4036
text = R.string.enqueue_stream,
4137
onClick = {
4238
onDismissRequest()
4339
SparseItemUtil.fetchItemInfoIfSparse(context, info) {
4440
NavigationHelper.enqueueOnPlayer(context, it)
4541
}
46-
}
42+
},
4743
)
4844

4945
if (playerHolder.queuePosition < playerHolder.queueSize - 1) {
50-
StreamMenuItem(
46+
DropdownTextMenuItem(
5147
text = R.string.enqueue_next_stream,
5248
onClick = {
5349
onDismissRequest()
5450
SparseItemUtil.fetchItemInfoIfSparse(context, info) {
5551
NavigationHelper.enqueueNextOnPlayer(context, it)
5652
}
57-
}
53+
},
5854
)
5955
}
6056
}
6157

62-
StreamMenuItem(
58+
DropdownTextMenuItem(
6359
text = R.string.start_here_on_background,
6460
onClick = {
6561
onDismissRequest()
6662
SparseItemUtil.fetchItemInfoIfSparse(context, info) {
6763
NavigationHelper.playOnBackgroundPlayer(context, it, true)
6864
}
69-
}
65+
},
7066
)
71-
StreamMenuItem(
67+
DropdownTextMenuItem(
7268
text = R.string.start_here_on_popup,
7369
onClick = {
7470
onDismissRequest()
7571
SparseItemUtil.fetchItemInfoIfSparse(context, info) {
7672
NavigationHelper.playOnPopupPlayer(context, it, true)
7773
}
78-
}
74+
},
7975
)
8076

8177
if (stream.streamId != -1L) {
82-
StreamMenuItem(
78+
DropdownTextMenuItem(
8379
text = R.string.delete,
8480
onClick = {
8581
onDismissRequest()
8682
streamViewModel.deleteStreamHistory(stream.streamId)
87-
}
83+
},
8884
)
8985
}
9086

91-
StreamMenuItem(
87+
DropdownTextMenuItem(
9288
text = R.string.download,
9389
onClick = {
9490
onDismissRequest()
@@ -100,9 +96,9 @@ fun StreamMenu(
10096
val fragmentManager = context.findFragmentActivity().supportFragmentManager
10197
downloadDialog.show(fragmentManager, "downloadDialog")
10298
}
103-
}
99+
},
104100
)
105-
StreamMenuItem(
101+
DropdownTextMenuItem(
106102
text = R.string.add_to_playlist,
107103
onClick = {
108104
onDismissRequest()
@@ -111,33 +107,33 @@ fun StreamMenu(
111107
val tag = if (dialog is PlaylistAppendDialog) "append" else "create"
112108
dialog.show(
113109
context.findFragmentActivity().supportFragmentManager,
114-
"StreamDialogEntry@${tag}_playlist"
110+
"StreamDialogEntry@${tag}_playlist",
115111
)
116112
}
117-
}
113+
},
118114
)
119-
StreamMenuItem(
115+
DropdownTextMenuItem(
120116
text = R.string.share,
121117
onClick = {
122118
onDismissRequest()
123119
ShareUtils.shareText(context, stream.name, stream.url, stream.thumbnails)
124-
}
120+
},
125121
)
126-
StreamMenuItem(
122+
DropdownTextMenuItem(
127123
text = R.string.open_in_browser,
128124
onClick = {
129125
onDismissRequest()
130126
ShareUtils.openUrlInBrowser(context, stream.url)
131-
}
127+
},
132128
)
133-
StreamMenuItem(
129+
DropdownTextMenuItem(
134130
text = R.string.mark_as_watched,
135131
onClick = {
136132
onDismissRequest()
137133
streamViewModel.markAsWatched(info)
138134
}
139135
)
140-
StreamMenuItem(
136+
DropdownTextMenuItem(
141137
text = R.string.show_channel_details,
142138
onClick = {
143139
onDismissRequest()
@@ -151,16 +147,3 @@ fun StreamMenu(
151147
)
152148
}
153149
}
154-
155-
@Composable
156-
private fun StreamMenuItem(
157-
@StringRes text: Int,
158-
onClick: () -> Unit
159-
) {
160-
DropdownMenuItem(
161-
text = {
162-
Text(text = stringResource(text), color = MaterialTheme.colorScheme.onBackground)
163-
},
164-
onClick = onClick
165-
)
166-
}

app/src/main/java/org/schabi/newpipe/ui/screens/HistoryScreen.kt

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import androidx.compose.material.icons.automirrored.filled.PlaylistPlay
1515
import androidx.compose.material.icons.filled.ClearAll
1616
import androidx.compose.material.icons.filled.Headphones
1717
import androidx.compose.material.icons.filled.PictureInPicture
18-
import androidx.compose.material3.DropdownMenuItem
1918
import androidx.compose.material3.ExperimentalMaterial3Api
2019
import androidx.compose.material3.ExposedDropdownMenuBox
2120
import androidx.compose.material3.ExposedDropdownMenuDefaults
@@ -49,6 +48,7 @@ import org.schabi.newpipe.ktx.findFragmentActivity
4948
import org.schabi.newpipe.local.history.HistoryViewModel
5049
import org.schabi.newpipe.local.history.SortKey
5150
import org.schabi.newpipe.player.playqueue.SinglePlayQueue
51+
import org.schabi.newpipe.ui.components.common.DropdownTextMenuItem
5252
import org.schabi.newpipe.ui.components.common.IconButtonWithLabel
5353
import org.schabi.newpipe.ui.components.items.ItemList
5454
import org.schabi.newpipe.ui.theme.AppTheme
@@ -127,25 +127,15 @@ private fun HistoryHeader(
127127
expanded = expanded,
128128
onDismissRequest = { expanded = false },
129129
) {
130-
DropdownMenuItem(
131-
text = {
132-
Text(
133-
text = stringResource(R.string.title_most_played),
134-
color = MaterialTheme.colorScheme.onBackground,
135-
)
136-
},
130+
DropdownTextMenuItem(
131+
text = R.string.title_most_played,
137132
onClick = {
138133
expanded = false
139134
onSelectSortKey(SortKey.MOST_PLAYED)
140135
}
141136
)
142-
DropdownMenuItem(
143-
text = {
144-
Text(
145-
text = stringResource(R.string.title_last_played),
146-
color = MaterialTheme.colorScheme.onBackground,
147-
)
148-
},
137+
DropdownTextMenuItem(
138+
text = R.string.title_last_played,
149139
onClick = {
150140
expanded = false
151141
onSelectSortKey(SortKey.LAST_PLAYED)

0 commit comments

Comments
 (0)