Skip to content

Commit

Permalink
feat: option to change grid cell size
Browse files Browse the repository at this point in the history
  • Loading branch information
z-huang committed Aug 23, 2024
1 parent 3fa3d9e commit f0f1f01
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 5 deletions.
2 changes: 2 additions & 0 deletions app/src/main/java/com/zionhuang/music/constants/Dimensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ val SuggestionItemHeight = 56.dp
val SearchFilterHeight = 48.dp
val ListThumbnailSize = 48.dp
val GridThumbnailHeight = 128.dp
val SmallGridThumbnailHeight = 92.dp

val AlbumThumbnailSize = 144.dp

val ThumbnailCornerRadius = 6.dp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,20 @@ import androidx.datastore.preferences.core.stringPreferencesKey
val DynamicThemeKey = booleanPreferencesKey("dynamicTheme")
val DarkModeKey = stringPreferencesKey("darkMode")
val PureBlackKey = booleanPreferencesKey("pureBlack")
val DefaultOpenTabKey = stringPreferencesKey("defaultOpenTab")
val PlayerTextAlignmentKey = stringPreferencesKey("playerTextAlignment")
val SliderStyleKey = stringPreferencesKey("sliderStyle")

enum class SliderStyle {
DEFAULT, SQUIGGLY
}

val DefaultOpenTabKey = stringPreferencesKey("defaultOpenTab")
val GridCellSizeKey = stringPreferencesKey("gridCellSize")

enum class GridCellSize {
SMALL, BIG
}

const val SYSTEM_DEFAULT = "SYSTEM_DEFAULT"
val ContentLanguageKey = stringPreferencesKey("contentLanguage")
val ContentCountryKey = stringPreferencesKey("contentCountry")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,11 @@ import com.zionhuang.music.constants.AlbumSortTypeKey
import com.zionhuang.music.constants.AlbumViewTypeKey
import com.zionhuang.music.constants.CONTENT_TYPE_ALBUM
import com.zionhuang.music.constants.CONTENT_TYPE_HEADER
import com.zionhuang.music.constants.GridCellSize
import com.zionhuang.music.constants.GridCellSizeKey
import com.zionhuang.music.constants.GridThumbnailHeight
import com.zionhuang.music.constants.LibraryViewType
import com.zionhuang.music.constants.SmallGridThumbnailHeight
import com.zionhuang.music.ui.component.AlbumGridItem
import com.zionhuang.music.ui.component.AlbumListItem
import com.zionhuang.music.ui.component.ChipsRow
Expand All @@ -73,6 +76,7 @@ fun LibraryAlbumsScreen(
val isPlaying by playerConnection.isPlaying.collectAsState()
val mediaMetadata by playerConnection.mediaMetadata.collectAsState()

val gridCellSize by rememberEnumPreference(GridCellSizeKey, GridCellSize.SMALL)
var filter by rememberEnumPreference(AlbumFilterKey, AlbumFilter.LIBRARY)
var viewType by rememberEnumPreference(AlbumViewTypeKey, LibraryViewType.GRID)
val (sortType, onSortTypeChange) = rememberEnumPreference(AlbumSortTypeKey, AlbumSortType.CREATE_DATE)
Expand Down Expand Up @@ -224,7 +228,12 @@ fun LibraryAlbumsScreen(
LibraryViewType.GRID ->
LazyVerticalGrid(
state = lazyGridState,
columns = GridCells.Adaptive(minSize = GridThumbnailHeight + 24.dp),
columns = GridCells.Adaptive(
minSize = when (gridCellSize) {
GridCellSize.SMALL -> SmallGridThumbnailHeight
GridCellSize.BIG -> GridThumbnailHeight
} + 24.dp
),
contentPadding = LocalPlayerAwareWindowInsets.current.asPaddingValues()
) {
item(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,11 @@ import com.zionhuang.music.constants.ArtistSortTypeKey
import com.zionhuang.music.constants.ArtistViewTypeKey
import com.zionhuang.music.constants.CONTENT_TYPE_ARTIST
import com.zionhuang.music.constants.CONTENT_TYPE_HEADER
import com.zionhuang.music.constants.GridCellSize
import com.zionhuang.music.constants.GridCellSizeKey
import com.zionhuang.music.constants.GridThumbnailHeight
import com.zionhuang.music.constants.LibraryViewType
import com.zionhuang.music.constants.SmallGridThumbnailHeight
import com.zionhuang.music.ui.component.ArtistGridItem
import com.zionhuang.music.ui.component.ArtistListItem
import com.zionhuang.music.ui.component.ChipsRow
Expand All @@ -69,6 +72,8 @@ fun LibraryArtistsScreen(
) {
val menuState = LocalMenuState.current
val haptic = LocalHapticFeedback.current

val gridCellSize by rememberEnumPreference(GridCellSizeKey, GridCellSize.SMALL)
var filter by rememberEnumPreference(ArtistFilterKey, ArtistFilter.LIBRARY)
var viewType by rememberEnumPreference(ArtistViewTypeKey, LibraryViewType.GRID)
val (sortType, onSortTypeChange) = rememberEnumPreference(ArtistSortTypeKey, ArtistSortType.CREATE_DATE)
Expand Down Expand Up @@ -214,7 +219,12 @@ fun LibraryArtistsScreen(
LibraryViewType.GRID ->
LazyVerticalGrid(
state = lazyGridState,
columns = GridCells.Adaptive(minSize = GridThumbnailHeight + 24.dp),
columns = GridCells.Adaptive(
minSize = when (gridCellSize) {
GridCellSize.SMALL -> SmallGridThumbnailHeight
GridCellSize.BIG -> GridThumbnailHeight
} + 24.dp
),
contentPadding = LocalPlayerAwareWindowInsets.current.asPaddingValues()
) {
item(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,15 @@ import com.zionhuang.music.LocalPlayerAwareWindowInsets
import com.zionhuang.music.R
import com.zionhuang.music.constants.CONTENT_TYPE_HEADER
import com.zionhuang.music.constants.CONTENT_TYPE_PLAYLIST
import com.zionhuang.music.constants.GridCellSize
import com.zionhuang.music.constants.GridCellSizeKey
import com.zionhuang.music.constants.GridThumbnailHeight
import com.zionhuang.music.constants.LibraryViewType
import com.zionhuang.music.constants.PlaylistSortDescendingKey
import com.zionhuang.music.constants.PlaylistSortType
import com.zionhuang.music.constants.PlaylistSortTypeKey
import com.zionhuang.music.constants.PlaylistViewTypeKey
import com.zionhuang.music.constants.SmallGridThumbnailHeight
import com.zionhuang.music.db.entities.PlaylistEntity
import com.zionhuang.music.ui.component.HideOnScrollFAB
import com.zionhuang.music.ui.component.LocalMenuState
Expand All @@ -76,6 +79,7 @@ fun LibraryPlaylistsScreen(

val coroutineScope = rememberCoroutineScope()

val gridCellSize by rememberEnumPreference(GridCellSizeKey, GridCellSize.SMALL)
var viewType by rememberEnumPreference(PlaylistViewTypeKey, LibraryViewType.GRID)
val (sortType, onSortTypeChange) = rememberEnumPreference(PlaylistSortTypeKey, PlaylistSortType.CREATE_DATE)
val (sortDescending, onSortDescendingChange) = rememberPreference(PlaylistSortDescendingKey, true)
Expand Down Expand Up @@ -227,7 +231,12 @@ fun LibraryPlaylistsScreen(
LibraryViewType.GRID -> {
LazyVerticalGrid(
state = lazyGridState,
columns = GridCells.Adaptive(minSize = GridThumbnailHeight + 24.dp),
columns = GridCells.Adaptive(
minSize = when (gridCellSize) {
GridCellSize.SMALL -> SmallGridThumbnailHeight
GridCellSize.BIG -> GridThumbnailHeight
} + 24.dp
),
contentPadding = LocalPlayerAwareWindowInsets.current.asPaddingValues()
) {
item(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ import com.zionhuang.music.R
import com.zionhuang.music.constants.DarkModeKey
import com.zionhuang.music.constants.DefaultOpenTabKey
import com.zionhuang.music.constants.DynamicThemeKey
import com.zionhuang.music.constants.GridCellSize
import com.zionhuang.music.constants.GridCellSizeKey
import com.zionhuang.music.constants.PlayerTextAlignmentKey
import com.zionhuang.music.constants.PureBlackKey
import com.zionhuang.music.constants.SliderStyle
Expand All @@ -69,9 +71,10 @@ fun AppearanceSettings(
val (dynamicTheme, onDynamicThemeChange) = rememberPreference(DynamicThemeKey, defaultValue = true)
val (darkMode, onDarkModeChange) = rememberEnumPreference(DarkModeKey, defaultValue = DarkMode.AUTO)
val (pureBlack, onPureBlackChange) = rememberPreference(PureBlackKey, defaultValue = false)
val (defaultOpenTab, onDefaultOpenTabChange) = rememberEnumPreference(DefaultOpenTabKey, defaultValue = NavigationTab.HOME)
val (playerTextAlignment, onPlayerTextAlignmentChange) = rememberEnumPreference(PlayerTextAlignmentKey, defaultValue = PlayerTextAlignment.CENTER)
val (sliderStyle, onSliderStyleChange) = rememberEnumPreference(SliderStyleKey, defaultValue = SliderStyle.DEFAULT)
val (defaultOpenTab, onDefaultOpenTabChange) = rememberEnumPreference(DefaultOpenTabKey, defaultValue = NavigationTab.HOME)
val (gridCellSize, onGridCellSizeChange) = rememberEnumPreference(GridCellSizeKey, defaultValue = GridCellSize.SMALL)

val isSystemInDarkTheme = isSystemInDarkTheme()
val useDarkTheme = remember(darkMode, isSystemInDarkTheme) {
Expand Down Expand Up @@ -269,6 +272,19 @@ fun AppearanceSettings(
}
}
)

EnumListPreference(
title = { Text(stringResource(R.string.grid_cell_size)) },
icon = { Icon(painterResource(R.drawable.grid_view), null) },
selectedValue = gridCellSize,
onValueSelected = onGridCellSizeChange,
valueText = {
when (it) {
GridCellSize.SMALL -> stringResource(R.string.small)
GridCellSize.BIG -> stringResource(R.string.big)
}
},
)
}

TopAppBar(
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,9 @@
<string name="squiggly">波浪</string>
<string name="misc">其他</string>
<string name="default_open_tab">預設啟動標籤</string>
<string name="grid_cell_size">網格大小</string>
<string name="small">小</string>
<string name="big">大</string>

<string name="content">內容</string>
<string name="login">登入</string>
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,9 @@
<string name="squiggly">Squiggly</string>
<string name="misc">Misc</string>
<string name="default_open_tab">Default open tab</string>
<string name="grid_cell_size">Grid cell size</string>
<string name="small">Small</string>
<string name="big">Big</string>

<string name="content">Content</string>
<string name="login">Login</string>
Expand Down

0 comments on commit f0f1f01

Please sign in to comment.