|
|
|
@ -68,6 +68,7 @@ const val CURRENT_SORT = "current_sort" |
|
|
|
const val CURRENT_SORT_DESC = "current_sort_desc" |
|
|
|
const val SHOW_ONLY_MULTIMEDIA_FILES = "show_only_multimedia_files" |
|
|
|
const val SHOW_HIDDEN_FILES = "show_hidden_files" |
|
|
|
const val SHOW_TRACK_NUMBER = "show_track_number" |
|
|
|
const val DEFAULT_ACTIONS = "default_actions" |
|
|
|
const val DEFAULT_ACTION_TYPE = "default_action_type" |
|
|
|
|
|
|
|
@ -77,7 +78,7 @@ const val DEFAULT_ACTION_TYPE = "default_action_type" |
|
|
|
class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
|
|
|
|
//current values |
|
|
|
private var displayInCards: Boolean = false |
|
|
|
private var displayInCards: Boolean? = null |
|
|
|
private var onlyFavs: Boolean? = null |
|
|
|
private lateinit var sorts: ArrayList<Int> |
|
|
|
private var currentSort: Int = -1 |
|
|
|
@ -85,6 +86,7 @@ class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
private var showAllArtists: Boolean? = null |
|
|
|
private var showOnlyMultimediaFiles: Boolean? = null |
|
|
|
private var showHiddenFiles: Boolean? = null |
|
|
|
private var showTrackNumbers: Boolean? = null |
|
|
|
private var showVideoGroups: String? = null |
|
|
|
private var defaultPlaybackActions: List<DefaultPlaybackAction>? = null |
|
|
|
private var defaultActionType: String? = null |
|
|
|
@ -95,12 +97,14 @@ class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
|
|
|
|
companion object { |
|
|
|
|
|
|
|
fun newInstance(displayInCards: Boolean, showAllArtists: Boolean? = null, onlyFavs: Boolean?, sorts: List<Int>, currentSort: Int, currentSortDesc: Boolean, videoGroup: String? = null, showOnlyMultimediaFiles:Boolean? = null, showHiddenFiles:Boolean? = null, defaultPlaybackActions: List<DefaultPlaybackAction>? = null, defaultActionType: String? = null): DisplaySettingsDialog { |
|
|
|
fun newInstance(displayInCards: Boolean?, showAllArtists: Boolean? = null, onlyFavs: Boolean?, sorts: List<Int>, currentSort: Int, currentSortDesc: Boolean, videoGroup: String? = null, showOnlyMultimediaFiles:Boolean? = null, showTrackNumber:Boolean? = null, showHiddenFiles:Boolean? = null, defaultPlaybackActions: List<DefaultPlaybackAction>? = null, defaultActionType: String? = null): DisplaySettingsDialog { |
|
|
|
return DisplaySettingsDialog().apply { |
|
|
|
arguments = bundleOf(DISPLAY_IN_CARDS to displayInCards, SORTS to sorts, CURRENT_SORT to currentSort, CURRENT_SORT_DESC to currentSortDesc, VIDEO_GROUPING to videoGroup) |
|
|
|
arguments = bundleOf(SORTS to sorts, CURRENT_SORT to currentSort, CURRENT_SORT_DESC to currentSortDesc, VIDEO_GROUPING to videoGroup) |
|
|
|
if (displayInCards != null) arguments!!.putBoolean(DISPLAY_IN_CARDS, displayInCards) |
|
|
|
if (onlyFavs != null) arguments!!.putBoolean(ONLY_FAVS, onlyFavs) |
|
|
|
if (showAllArtists != null) arguments!!.putBoolean(SHOW_ALL_ARTISTS, showAllArtists) |
|
|
|
if (showOnlyMultimediaFiles != null) arguments!!.putBoolean(SHOW_ONLY_MULTIMEDIA_FILES, showOnlyMultimediaFiles) |
|
|
|
if (showTrackNumber != null) arguments!!.putBoolean(SHOW_TRACK_NUMBER, showTrackNumber) |
|
|
|
if (showHiddenFiles != null) arguments!!.putBoolean(SHOW_HIDDEN_FILES, showHiddenFiles) |
|
|
|
if (defaultPlaybackActions != null) arguments!!.putStringArrayList(DEFAULT_ACTIONS, ArrayList(defaultPlaybackActions.map { it.name })) |
|
|
|
if(defaultActionType != null) arguments!!.putString(DEFAULT_ACTION_TYPE, defaultActionType) |
|
|
|
@ -121,8 +125,7 @@ class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
override fun onCreate(savedInstanceState: Bundle?) { |
|
|
|
lifecycleScope.launch { if (requireActivity().showPinIfNeeded()) dismiss() } |
|
|
|
super.onCreate(savedInstanceState) |
|
|
|
displayInCards = arguments?.getBoolean(DISPLAY_IN_CARDS) |
|
|
|
?: throw IllegalStateException("Display in list should be provided") |
|
|
|
displayInCards =if (arguments?.containsKey(DISPLAY_IN_CARDS) == true) arguments?.getBoolean(DISPLAY_IN_CARDS) else null |
|
|
|
onlyFavs = if (arguments?.containsKey(ONLY_FAVS) == true) arguments?.getBoolean(ONLY_FAVS) else null |
|
|
|
sorts = arguments?.getIntegerArrayList(SORTS) |
|
|
|
?: throw IllegalStateException("Sorts should be provided") |
|
|
|
@ -132,6 +135,7 @@ class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
?: throw IllegalStateException("Current sort desc should be provided") |
|
|
|
showAllArtists = if (arguments?.containsKey(SHOW_ALL_ARTISTS) == true) arguments?.getBoolean(SHOW_ALL_ARTISTS) else null |
|
|
|
showOnlyMultimediaFiles = if (arguments?.containsKey(SHOW_ONLY_MULTIMEDIA_FILES) == true) arguments?.getBoolean(SHOW_ONLY_MULTIMEDIA_FILES) else null |
|
|
|
showTrackNumbers = if (arguments?.containsKey(SHOW_TRACK_NUMBER) == true) arguments?.getBoolean(SHOW_TRACK_NUMBER) else null |
|
|
|
showHiddenFiles = if (arguments?.containsKey(SHOW_HIDDEN_FILES) == true) arguments?.getBoolean(SHOW_HIDDEN_FILES) else null |
|
|
|
showVideoGroups = arguments?.getString(VIDEO_GROUPING, null) |
|
|
|
val defaultActionsKeys = arguments?.getStringArrayList(DEFAULT_ACTIONS)?.toTypedArray() |
|
|
|
@ -153,14 +157,15 @@ class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
updateShowAllArtists() |
|
|
|
updateShowOnlyFavs() |
|
|
|
updateShowAllFiles() |
|
|
|
updateShowTrackNumbers() |
|
|
|
updateShowHiddenFiles() |
|
|
|
updateSorts() |
|
|
|
updateDefaultActions() |
|
|
|
|
|
|
|
binding.displayModeGroup.setOnClickListener { |
|
|
|
displayInCards = !displayInCards |
|
|
|
displayInCards = !displayInCards!! |
|
|
|
updateDisplayMode() |
|
|
|
lifecycleScope.launch { displaySettingsViewModel.send(DISPLAY_IN_CARDS, displayInCards) } |
|
|
|
lifecycleScope.launch { displaySettingsViewModel.send(DISPLAY_IN_CARDS, displayInCards!!) } |
|
|
|
} |
|
|
|
binding.showAllArtistGroup.setOnClickListener { |
|
|
|
binding.showAllArtistCheckbox.isChecked = !binding.showAllArtistCheckbox.isChecked |
|
|
|
@ -191,6 +196,16 @@ class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
lifecycleScope.launch { displaySettingsViewModel.send(SHOW_ONLY_MULTIMEDIA_FILES, showOnlyMultimediaFiles!!) } |
|
|
|
} |
|
|
|
|
|
|
|
binding.showTrackNumbersGroup.setOnClickListener { |
|
|
|
binding.showTrackNumbersCheckbox.isChecked = !binding.showTrackNumbersCheckbox.isChecked |
|
|
|
} |
|
|
|
|
|
|
|
binding.showTrackNumbersCheckbox.setOnCheckedChangeListener { _, isChecked -> |
|
|
|
showTrackNumbers = isChecked |
|
|
|
updateShowTrackNumbers() |
|
|
|
lifecycleScope.launch { displaySettingsViewModel.send(SHOW_TRACK_NUMBER, showTrackNumbers!!) } |
|
|
|
} |
|
|
|
|
|
|
|
binding.onlyFavsGroup.setOnClickListener { |
|
|
|
binding.onlyFavsCheckbox.isChecked = !binding.onlyFavsCheckbox.isChecked |
|
|
|
} |
|
|
|
@ -254,8 +269,14 @@ class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
* |
|
|
|
*/ |
|
|
|
private fun updateDisplayMode() { |
|
|
|
binding.displayInListText.text = getString(if (!displayInCards) R.string.display_in_grid else R.string.display_in_list) |
|
|
|
binding.displayInListImage.setImageDrawable(ContextCompat.getDrawable(requireActivity(), if (!displayInCards) R.drawable.ic_view_grid else R.drawable.ic_view_list)) |
|
|
|
if (displayInCards == null) { |
|
|
|
binding.displayInListText.setGone() |
|
|
|
binding.displayInListImage.setGone() |
|
|
|
binding.displayModeGroup.setGone() |
|
|
|
return |
|
|
|
} |
|
|
|
binding.displayInListText.text = getString(if (displayInCards == false) R.string.display_in_grid else R.string.display_in_list) |
|
|
|
binding.displayInListImage.setImageDrawable(ContextCompat.getDrawable(requireActivity(), if (displayInCards == false) R.drawable.ic_view_grid else R.drawable.ic_view_list)) |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@ -288,6 +309,21 @@ class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
binding.showAllFilesCheckbox.isChecked = showOnlyMultimediaFiles!! |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Update the view for the "show track numbers" item |
|
|
|
* |
|
|
|
*/ |
|
|
|
private fun updateShowTrackNumbers() { |
|
|
|
if (showTrackNumbers == null) { |
|
|
|
binding.showTrackNumbersGroup.setGone() |
|
|
|
binding.showTrackNumbersImage.setGone() |
|
|
|
binding.showTrackNumbersCheckbox.setGone() |
|
|
|
binding.showTrackNumbersCheckbox.setGone() |
|
|
|
return |
|
|
|
} |
|
|
|
binding.showTrackNumbersCheckbox.isChecked = showTrackNumbers!! |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Update the view for the "show hidden files" item |
|
|
|
* |
|
|
|
@ -358,6 +394,7 @@ class DisplaySettingsDialog : VLCBottomSheetDialogFragment() { |
|
|
|
} |
|
|
|
val isCurrentSort = (sort == currentSort || currentSort == Medialibrary.SORT_DEFAULT && sort == Medialibrary.SORT_ALPHA) |
|
|
|
when (sort) { |
|
|
|
Medialibrary.TrackId -> setupSortViews(binding, isCurrentSort, R.string.sortby_track, R.string.ascending, R.string.descending, R.drawable.ic_sort_track) |
|
|
|
Medialibrary.SORT_ALPHA -> setupSortViews(binding, isCurrentSort, R.string.sortby_name, R.string.sort_alpha_asc, R.string.sort_alpha_desc, R.drawable.ic_sort_alpha) |
|
|
|
Medialibrary.SORT_FILENAME -> setupSortViews(binding, isCurrentSort, R.string.sortby_filename, R.string.sort_alpha_asc, R.string.sort_alpha_desc, R.drawable.ic_sort_filename) |
|
|
|
Medialibrary.SORT_ARTIST -> setupSortViews(binding, isCurrentSort, R.string.sortby_artist_name, R.string.sort_alpha_asc, R.string.sort_alpha_desc, R.drawable.ic_sort_artist) |
|
|
|
|