From 0598409ca5699e71cb2a6422f7c61555c22acd34 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Tue, 22 Nov 2022 11:15:02 -0700 Subject: [PATCH] detail: add loading indicator to song detail Add a loading indicator to the song detail view. This should make the loading process clearer for some songs that take longer to load. --- CHANGELOG.md | 1 + .../oxycblt/auxio/detail/SongDetailDialog.kt | 8 +- .../main/res/layout/dialog_song_detail.xml | 186 ++++++++++-------- 3 files changed, 107 insertions(+), 88 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a8c2d9a5..2f96aa7fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ - Allowed light/dark theme to be customized on Android 12+ - All information now scrolls in the playback view - A month is now shown for song/album dates when available +- Added loading indicator to song properties view #### What's Fixed - Fixed issue where the scroll popup would not display correctly in landscape mode [#230] diff --git a/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt b/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt index 2396d650b..b88c42884 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/SongDetailDialog.kt @@ -22,6 +22,7 @@ import android.text.format.Formatter import android.view.LayoutInflater import androidx.appcompat.app.AlertDialog import androidx.core.view.isGone +import androidx.core.view.isInvisible import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import org.oxycblt.auxio.R @@ -64,8 +65,10 @@ class SongDetailDialog : ViewBindingDialogFragment() { if (song != null) { if (song.info != null) { + binding.detailLoading.isInvisible = true + binding.detailContainer.isInvisible = false + val context = requireContext() - binding.detailContainer.isGone = false binding.detailFileName.setText(song.song.path.name) binding.detailRelativeDir.setText(song.song.path.parent.resolveName(context)) binding.detailFormat.setText(song.info.resolvedMimeType.resolveName(context)) @@ -86,7 +89,8 @@ class SongDetailDialog : ViewBindingDialogFragment() { binding.detailSampleRate.setText(R.string.def_sample_rate) } } else { - binding.detailContainer.isGone = true + binding.detailLoading.isInvisible = false + binding.detailContainer.isInvisible = true } } else { findNavController().navigateUp() diff --git a/app/src/main/res/layout/dialog_song_detail.xml b/app/src/main/res/layout/dialog_song_detail.xml index 0d74afb27..e8a391702 100644 --- a/app/src/main/res/layout/dialog_song_detail.xml +++ b/app/src/main/res/layout/dialog_song_detail.xml @@ -10,129 +10,143 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + android:animateLayoutChanges="true"> - + android:paddingStart="@dimen/spacing_large" + android:paddingEnd="@dimen/spacing_large" + android:layout_gravity="center" + android:indeterminate="true" + app:indeterminateAnimationType="disjoint" /> - - - - - + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingStart="@dimen/spacing_large" + android:paddingEnd="@dimen/spacing_large"> - + android:hint="@string/lbl_file_name" + app:expandedHintEnabled="false"> - + - + - + android:layout_marginTop="@dimen/spacing_medium" + android:hint="@string/lbl_relative_path" + app:expandedHintEnabled="false"> - + - + - + android:layout_marginTop="@dimen/spacing_medium" + android:hint="@string/lbl_format" + app:expandedHintEnabled="false"> - + - + - + android:layout_marginTop="@dimen/spacing_medium" + android:hint="@string/lbl_size" + app:expandedHintEnabled="false"> - + - + - + android:layout_marginTop="@dimen/spacing_medium" + android:hint="@string/lbl_sort_duration" + app:expandedHintEnabled="false"> - + - + - + android:layout_marginTop="@dimen/spacing_medium" + android:hint="@string/lbl_bitrate" + app:expandedHintEnabled="false"> - + + + + + + + + + + + + -