@@ -17,11 +17,14 @@ import androidx.compose.ui.Modifier
1717import androidx.compose.ui.input.nestedscroll.nestedScroll
1818import androidx.compose.ui.platform.LocalContext
1919import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
20+ import androidx.compose.ui.res.stringResource
2021import androidx.compose.ui.unit.dp
2122import androidx.paging.LoadState
2223import androidx.paging.compose.LazyPagingItems
24+ import androidx.preference.PreferenceManager
2325import androidx.window.core.layout.WindowWidthSizeClass
2426import my.nanihadesuka.compose.LazyVerticalGridScrollbar
27+ import org.schabi.newpipe.R
2528import org.schabi.newpipe.info_list.ItemViewMode
2629import org.schabi.newpipe.ktx.findFragmentActivity
2730import org.schabi.newpipe.ui.components.common.LazyColumnThemedScrollbar
@@ -140,3 +143,23 @@ fun ItemList(
140143 }
141144 }
142145}
146+
147+ @Composable
148+ private fun determineItemViewMode (): ItemViewMode {
149+ val prefValue = PreferenceManager .getDefaultSharedPreferences(LocalContext .current)
150+ .getString(stringResource(R .string.list_view_mode_key), null )
151+ val viewMode = prefValue?.let { ItemViewMode .valueOf(it.uppercase()) } ? : ItemViewMode .AUTO
152+
153+ return when (viewMode) {
154+ ItemViewMode .AUTO -> {
155+ // Evaluate whether to use Grid based on screen real estate.
156+ val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
157+ if (windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass .EXPANDED ) {
158+ ItemViewMode .GRID
159+ } else {
160+ ItemViewMode .LIST
161+ }
162+ }
163+ else -> viewMode
164+ }
165+ }
0 commit comments