Skip to content

Commit fdf36cb

Browse files
committed
Deduplicate and improve Scrollbar theme
1 parent aea2b7c commit fdf36cb

4 files changed

Lines changed: 36 additions & 33 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.schabi.newpipe.ui.components.common
2+
3+
import androidx.compose.foundation.lazy.LazyListState
4+
import androidx.compose.material3.MaterialTheme
5+
import androidx.compose.runtime.Composable
6+
import androidx.compose.ui.Modifier
7+
import my.nanihadesuka.compose.ScrollbarSettings
8+
9+
@Composable
10+
fun defaultThemedScrollbarSettings(): ScrollbarSettings = ScrollbarSettings.Default.copy(
11+
thumbUnselectedColor = MaterialTheme.colorScheme.primary,
12+
thumbSelectedColor = MaterialTheme.colorScheme.primary.copy(alpha = 0.75f),
13+
)
14+
15+
@Composable
16+
fun LazyColumnThemedScrollbar(
17+
state: LazyListState,
18+
modifier: Modifier = Modifier,
19+
settings: ScrollbarSettings = defaultThemedScrollbarSettings(),
20+
indicatorContent: (@Composable (index: Int, isThumbSelected: Boolean) -> Unit)? = null,
21+
content: @Composable () -> Unit
22+
) {
23+
my.nanihadesuka.compose.LazyColumnScrollbar(
24+
state = state,
25+
modifier = modifier,
26+
settings = settings,
27+
indicatorContent = indicatorContent,
28+
content = content,
29+
)
30+
}

app/src/main/java/org/schabi/newpipe/ui/components/items/ItemList.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,21 @@ import androidx.compose.runtime.mutableStateOf
1010
import androidx.compose.runtime.remember
1111
import androidx.compose.runtime.setValue
1212
import androidx.compose.ui.Modifier
13-
import androidx.compose.ui.graphics.Color
1413
import androidx.compose.ui.input.nestedscroll.nestedScroll
1514
import androidx.compose.ui.platform.LocalContext
1615
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
1716
import androidx.compose.ui.res.stringResource
1817
import androidx.preference.PreferenceManager
1918
import androidx.window.core.layout.WindowWidthSizeClass
20-
import my.nanihadesuka.compose.LazyColumnScrollbar
21-
import my.nanihadesuka.compose.ScrollbarSettings
2219
import org.schabi.newpipe.R
2320
import org.schabi.newpipe.extractor.InfoItem
2421
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem
2522
import org.schabi.newpipe.extractor.stream.StreamInfoItem
2623
import org.schabi.newpipe.info_list.ItemViewMode
2724
import org.schabi.newpipe.ktx.findFragmentActivity
25+
import org.schabi.newpipe.ui.components.common.LazyColumnThemedScrollbar
2826
import org.schabi.newpipe.ui.components.items.playlist.PlaylistListItem
2927
import org.schabi.newpipe.ui.components.items.stream.StreamListItem
30-
import org.schabi.newpipe.ui.theme.md_theme_dark_primary
3128
import org.schabi.newpipe.util.DependentPreferenceHelper
3229
import org.schabi.newpipe.util.NavigationHelper
3330

@@ -75,13 +72,7 @@ fun ItemList(
7572
} else {
7673
val state = rememberLazyListState()
7774

78-
LazyColumnScrollbar(
79-
state = state,
80-
settings = ScrollbarSettings.Default.copy(
81-
thumbSelectedColor = md_theme_dark_primary,
82-
thumbUnselectedColor = Color.Red
83-
)
84-
) {
75+
LazyColumnThemedScrollbar(state = state) {
8576
LazyColumn(modifier = nestedScrollModifier, state = state) {
8677
listHeader()
8778

app/src/main/java/org/schabi/newpipe/ui/components/video/comment/CommentRepliesDialog.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import androidx.compose.runtime.CompositionLocalProvider
1717
import androidx.compose.runtime.remember
1818
import androidx.compose.runtime.rememberCoroutineScope
1919
import androidx.compose.ui.Modifier
20-
import androidx.compose.ui.graphics.Color
2120
import androidx.compose.ui.input.nestedscroll.nestedScroll
2221
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
2322
import androidx.compose.ui.res.pluralStringResource
@@ -33,16 +32,14 @@ import androidx.paging.compose.collectAsLazyPagingItems
3332
import kotlinx.coroutines.flow.Flow
3433
import kotlinx.coroutines.flow.flowOf
3534
import kotlinx.coroutines.launch
36-
import my.nanihadesuka.compose.LazyColumnScrollbar
37-
import my.nanihadesuka.compose.ScrollbarSettings
3835
import org.schabi.newpipe.R
3936
import org.schabi.newpipe.extractor.comments.CommentsInfoItem
4037
import org.schabi.newpipe.extractor.stream.Description
4138
import org.schabi.newpipe.paging.CommentRepliesSource
39+
import org.schabi.newpipe.ui.components.common.LazyColumnThemedScrollbar
4240
import org.schabi.newpipe.ui.components.common.LoadingIndicator
4341
import org.schabi.newpipe.ui.components.common.NoItemsMessage
4442
import org.schabi.newpipe.ui.theme.AppTheme
45-
import org.schabi.newpipe.ui.theme.md_theme_dark_primary
4643

4744
@Composable
4845
fun CommentRepliesDialog(
@@ -94,13 +91,7 @@ private fun CommentRepliesDialog(
9491
// content color for MaterialTheme.colorScheme.background instead
9592
LocalContentColor provides contentColorFor(MaterialTheme.colorScheme.background)
9693
) {
97-
LazyColumnScrollbar(
98-
state = listState,
99-
settings = ScrollbarSettings.Default.copy(
100-
thumbSelectedColor = md_theme_dark_primary,
101-
thumbUnselectedColor = Color.Red
102-
)
103-
) {
94+
LazyColumnThemedScrollbar(state = listState) {
10495
LazyColumn(
10596
modifier = Modifier.nestedScroll(nestedScrollInterop),
10697
state = listState

app/src/main/java/org/schabi/newpipe/ui/components/video/comment/CommentSection.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import androidx.compose.material3.Text
1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.runtime.getValue
1212
import androidx.compose.ui.Modifier
13-
import androidx.compose.ui.graphics.Color
1413
import androidx.compose.ui.input.nestedscroll.nestedScroll
1514
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
1615
import androidx.compose.ui.res.pluralStringResource
@@ -23,16 +22,14 @@ import androidx.paging.PagingData
2322
import androidx.paging.compose.collectAsLazyPagingItems
2423
import kotlinx.coroutines.flow.Flow
2524
import kotlinx.coroutines.flow.flowOf
26-
import my.nanihadesuka.compose.LazyColumnScrollbar
27-
import my.nanihadesuka.compose.ScrollbarSettings
2825
import org.schabi.newpipe.R
2926
import org.schabi.newpipe.extractor.Page
3027
import org.schabi.newpipe.extractor.comments.CommentsInfoItem
3128
import org.schabi.newpipe.extractor.stream.Description
29+
import org.schabi.newpipe.ui.components.common.LazyColumnThemedScrollbar
3230
import org.schabi.newpipe.ui.components.common.LoadingIndicator
3331
import org.schabi.newpipe.ui.components.common.NoItemsMessage
3432
import org.schabi.newpipe.ui.theme.AppTheme
35-
import org.schabi.newpipe.ui.theme.md_theme_dark_primary
3633
import org.schabi.newpipe.viewmodels.CommentsViewModel
3734
import org.schabi.newpipe.viewmodels.util.Resource
3835

@@ -52,13 +49,7 @@ private fun CommentSection(
5249
val state = rememberLazyListState()
5350

5451
Surface(color = MaterialTheme.colorScheme.background) {
55-
LazyColumnScrollbar(
56-
state = state,
57-
settings = ScrollbarSettings.Default.copy(
58-
thumbSelectedColor = md_theme_dark_primary,
59-
thumbUnselectedColor = Color.Red
60-
)
61-
) {
52+
LazyColumnThemedScrollbar(state = state) {
6253
LazyColumn(
6354
modifier = Modifier.nestedScroll(nestedScrollInterop),
6455
state = state

0 commit comments

Comments
 (0)