From 5e6917f11c47f669eedb9c8bf60d815e0172cfcd Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Wed, 2 Sep 2020 16:49:58 -0600 Subject: [PATCH] Update LoadingFragment layout Update the layout of LoadingFragment with a new error icon/text style. --- app/build.gradle | 12 ++++--- .../java/org/oxycblt/auxio/MainActivity.kt | 9 +++-- .../oxycblt/auxio/loading/LoadingFragment.kt | 22 ++++++------ .../oxycblt/auxio/loading/LoadingViewModel.kt | 7 ++-- .../oxycblt/auxio/music/MusicRepository.kt | 2 +- .../auxio/music/processing/MusicLoader.kt | 4 +++ .../auxio/recycler/adapters/SongAdapter.kt | 2 -- .../recycler/viewholders/ClickListener.kt | 6 ++++ app/src/main/res/drawable/ic_error.xml | 12 +++++++ app/src/main/res/drawable/ripple.xml | 3 ++ app/src/main/res/layout/fragment_loading.xml | 35 ++++++++++++++----- app/src/main/res/values/dimens.xml | 6 ++-- app/src/main/res/values/strings.xml | 2 ++ 13 files changed, 85 insertions(+), 37 deletions(-) create mode 100644 app/src/main/java/org/oxycblt/auxio/recycler/viewholders/ClickListener.kt create mode 100644 app/src/main/res/drawable/ic_error.xml create mode 100644 app/src/main/res/drawable/ripple.xml diff --git a/app/build.gradle b/app/build.gradle index ab0320c3a..a5d807c22 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,6 +18,8 @@ android { buildFeatures { dataBinding true } + + vectorDrawables.useSupportLibrary = true } buildTypes { @@ -27,10 +29,6 @@ android { } } - buildFeatures { - dataBinding true - } - kotlinOptions { jvmTarget = "1.8" } @@ -49,7 +47,11 @@ dependencies { // --- SUPPORT --- implementation 'androidx.core:core-ktx:1.3.1' implementation 'androidx.appcompat:appcompat:1.2.0' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.1' + + // Permissions + implementation 'androidx.activity:activity:1.2.0-alpha08' + implementation 'androidx.fragment:fragment:1.3.0-alpha08' // Navigation def navigation_version = "2.3.0" diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index 27f44b1f5..b1e8da16d 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -9,9 +9,15 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate import org.oxycblt.auxio.theme.accent +const val PERM_READ_EXTERNAL_STORAGE = 2488 + class MainActivity : AppCompatActivity() { override fun onCreateView(name: String, context: Context, attrs: AttributeSet): View? { + // Debugging placeholder + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) + + // Apply the theme setTheme(accent.second) return super.onCreateView(name, context, attrs) @@ -19,9 +25,8 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) + setContentView(R.layout.activity_main) Log.d(this::class.simpleName, "Activity Created.") } diff --git a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt index b6b1a4262..822ae7abb 100644 --- a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt @@ -7,7 +7,6 @@ import android.view.View import android.view.ViewGroup import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import org.oxycblt.auxio.R @@ -41,14 +40,14 @@ class LoadingFragment : Fragment() { loadingModel.musicRepoResponse.observe( viewLifecycleOwner, - Observer { response -> + { response -> onMusicLoadResponse(response) } ) loadingModel.doRetry.observe( viewLifecycleOwner, - Observer { retry -> + { retry -> onRetry(retry) } ) @@ -59,7 +58,6 @@ class LoadingFragment : Fragment() { } private fun onMusicLoadResponse(repoResponse: MusicLoaderResponse?) { - // Don't run this if the value is null, Which is what the value changes to after // this is run. repoResponse?.let { response -> @@ -73,13 +71,14 @@ class LoadingFragment : Fragment() { binding.loadingBar.visibility = View.GONE binding.errorText.visibility = View.VISIBLE - binding.resetButton.visibility = View.VISIBLE + binding.statusIcon.visibility = View.VISIBLE + binding.retryButton.visibility = View.VISIBLE - if (response == MusicLoaderResponse.NO_MUSIC) { - binding.errorText.text = getString(R.string.error_no_music) - } else { - binding.errorText.text = getString(R.string.error_music_load_failed) - } + binding.errorText.text = + if (response == MusicLoaderResponse.NO_MUSIC) + getString(R.string.error_no_music) + else + getString(R.string.error_music_load_failed) } loadingModel.doneWithResponse() @@ -90,7 +89,8 @@ class LoadingFragment : Fragment() { if (retry) { binding.loadingBar.visibility = View.VISIBLE binding.errorText.visibility = View.GONE - binding.resetButton.visibility = View.GONE + binding.statusIcon.visibility = View.GONE + binding.retryButton.visibility = View.GONE loadingModel.doneWithRetry() } diff --git a/app/src/main/java/org/oxycblt/auxio/loading/LoadingViewModel.kt b/app/src/main/java/org/oxycblt/auxio/loading/LoadingViewModel.kt index b61352e68..110f0fa72 100644 --- a/app/src/main/java/org/oxycblt/auxio/loading/LoadingViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/loading/LoadingViewModel.kt @@ -1,7 +1,6 @@ package org.oxycblt.auxio.loading import android.app.Application -import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel @@ -29,8 +28,6 @@ class LoadingViewModel(private val app: Application) : ViewModel() { init { startMusicRepo() - - Log.d(this::class.simpleName, "ViewModel created.") } private fun startMusicRepo() { @@ -52,9 +49,9 @@ class LoadingViewModel(private val app: Application) : ViewModel() { } fun retry() { - mDoRetry.value = true - startMusicRepo() + + mDoRetry.value = true } fun doneWithRetry() { diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt index 75c4aa6e7..d253ac347 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt @@ -52,7 +52,7 @@ class MusicRepository { ) } - return loader.response + return MusicLoaderResponse.NO_MUSIC } companion object { diff --git a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt index de7918844..c71fbcdfb 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/processing/MusicLoader.kt @@ -51,6 +51,10 @@ class MusicLoader(private val resolver: ContentResolver) { return MusicLoaderResponse.FAILURE } + if (songs.size == 0) { + return MusicLoaderResponse.NO_MUSIC + } + return MusicLoaderResponse.DONE } diff --git a/app/src/main/java/org/oxycblt/auxio/recycler/adapters/SongAdapter.kt b/app/src/main/java/org/oxycblt/auxio/recycler/adapters/SongAdapter.kt index 947ae2420..fea4d9c84 100644 --- a/app/src/main/java/org/oxycblt/auxio/recycler/adapters/SongAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/adapters/SongAdapter.kt @@ -12,8 +12,6 @@ class SongAdapter(private val data: List) : RecyclerView.Adapter(val action: (T) -> Unit) { + fun onClick(action: T) = action +} diff --git a/app/src/main/res/drawable/ic_error.xml b/app/src/main/res/drawable/ic_error.xml new file mode 100644 index 000000000..f9b68bb44 --- /dev/null +++ b/app/src/main/res/drawable/ic_error.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ripple.xml b/app/src/main/res/drawable/ripple.xml new file mode 100644 index 000000000..53234f8f6 --- /dev/null +++ b/app/src/main/res/drawable/ripple.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_loading.xml b/app/src/main/res/layout/fragment_loading.xml index 8410282d7..fa9eb7204 100644 --- a/app/src/main/res/layout/fragment_loading.xml +++ b/app/src/main/res/layout/fragment_loading.xml @@ -23,7 +23,7 @@ android:indeterminateTint="?attr/colorPrimary" android:indeterminateTintMode="src_in" android:paddingBottom="@dimen/padding_tiny" - app:layout_constraintBottom_toTopOf="@+id/error_text" + app:layout_constraintBottom_toTopOf="@+id/status_icon" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" @@ -31,37 +31,54 @@ app:layout_constraintVertical_chainStyle="packed" tools:indeterminateTint="@color/blue" /> + +