From cb43615cb1c28097557417fd686a39b69d7bbf6d Mon Sep 17 00:00:00 2001 From: Antoine POPINEAU Date: Mon, 1 Jun 2020 21:25:16 +0200 Subject: [PATCH] Fixed some linting issues. Fixed two issues related to current track emphasis and landscape now playing cover background. --- app/build.gradle.kts | 3 +-- .../apognu/otter/activities/MainActivity.kt | 4 ++-- .../apognu/otter/activities/SearchActivity.kt | 4 ++-- .../apognu/otter/adapters/PlaylistsAdapter.kt | 2 +- .../apognu/otter/fragments/AlbumsFragment.kt | 16 ++++++++-------- .../apognu/otter/fragments/ArtistsFragment.kt | 6 +++--- .../otter/fragments/FavoritesFragment.kt | 19 +++++++++++-------- .../otter/fragments/LandscapeQueueFragment.kt | 1 + .../otter/fragments/PlaylistTracksFragment.kt | 19 +++++++++++-------- .../apognu/otter/fragments/QueueFragment.kt | 1 + .../apognu/otter/fragments/TracksFragment.kt | 19 +++++++++++-------- .../apognu/otter/playback/PlayerService.kt | 8 ++++---- .../apognu/otter/playback/QueueManager.kt | 4 ++-- .../github/apognu/otter/utils/Extensions.kt | 6 ------ .../apognu/otter/views/NowPlayingView.kt | 4 ++-- .../res/layout-land/partial_now_playing.xml | 4 ++-- app/src/main/res/layout/row_radio.xml | 1 + app/src/main/res/values-fr/strings.xml | 11 +++++------ app/src/main/res/values/colors.xml | 1 - app/src/main/res/values/strings.xml | 9 +++++---- 20 files changed, 73 insertions(+), 69 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 12899fa..300692d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -15,8 +15,7 @@ plugins { } val props = Properties().apply { - try { load(FileInputStream(rootProject.file("local.properties"))) } - catch(e: Exception) {} + try { load(FileInputStream(rootProject.file("local.properties"))) } catch (e: Exception) {} } androidGitVersion { diff --git a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt index b81a545..3360c5d 100644 --- a/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt +++ b/app/src/main/java/com/github/apognu/otter/activities/MainActivity.kt @@ -288,7 +288,7 @@ class MainActivity : AppCompatActivity() { } private fun refreshCurrentTrack(track: Track?) { - track?.let { track -> + track?.let { if (now_playing.visibility == View.GONE) { now_playing.visibility = View.VISIBLE now_playing.alpha = 0f @@ -455,7 +455,7 @@ class MainActivity : AppCompatActivity() { } private fun incrementListenCount(track: Track?) { - track?.let { track -> + track?.let { GlobalScope.launch(IO) { Fuel .post(mustNormalizeUrl("/api/v1/history/listenings/")) diff --git a/app/src/main/java/com/github/apognu/otter/activities/SearchActivity.kt b/app/src/main/java/com/github/apognu/otter/activities/SearchActivity.kt index 02cea9f..5a507bf 100644 --- a/app/src/main/java/com/github/apognu/otter/activities/SearchActivity.kt +++ b/app/src/main/java/com/github/apognu/otter/activities/SearchActivity.kt @@ -42,10 +42,10 @@ class SearchActivity : AppCompatActivity() { search.requestFocus() search.setOnQueryTextListener(object : androidx.appcompat.widget.SearchView.OnQueryTextListener { - override fun onQueryTextSubmit(query: String?): Boolean { + override fun onQueryTextSubmit(rawQuery: String?): Boolean { search.clearFocus() - query?.let { + rawQuery?.let { val query = URLEncoder.encode(it, "UTF-8") tracksRepository = TracksSearchRepository(this@SearchActivity, query.toLowerCase(Locale.ROOT)) diff --git a/app/src/main/java/com/github/apognu/otter/adapters/PlaylistsAdapter.kt b/app/src/main/java/com/github/apognu/otter/adapters/PlaylistsAdapter.kt index b17fc50..ee27c2e 100644 --- a/app/src/main/java/com/github/apognu/otter/adapters/PlaylistsAdapter.kt +++ b/app/src/main/java/com/github/apognu/otter/adapters/PlaylistsAdapter.kt @@ -33,7 +33,7 @@ class PlaylistsAdapter(val context: Context?, private val listener: OnPlaylistCl val playlist = data[position] holder.name.text = playlist.name - holder.summary.text = context?.getString(R.string.playlist_description, playlist.tracks_count, toDurationString(playlist.duration.toLong())) ?: "" + holder.summary.text = context?.resources?.getQuantityString(R.plurals.playlist_description, playlist.tracks_count, playlist.tracks_count, toDurationString(playlist.duration.toLong())) ?: "" playlist.album_covers.shuffled().take(4).forEachIndexed { index, url -> val imageView = when (index) { diff --git a/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt index dd48c1c..3d10075 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt @@ -35,8 +35,8 @@ class AlbumsFragment : FunkwhaleFragment() { var artistArt = "" companion object { - fun new(artist: Artist, art: String? = null): AlbumsFragment { - val art = art ?: if (artist.albums?.isNotEmpty() == true) artist.albums[0].cover.original else "" + fun new(artist: Artist, _art: String? = null): AlbumsFragment { + val art = _art ?: if (artist.albums?.isNotEmpty() == true) artist.albums[0].cover.original else "" return AlbumsFragment().apply { arguments = bundleOf( @@ -48,7 +48,7 @@ class AlbumsFragment : FunkwhaleFragment() { } fun openTracks(context: Context?, album: Album, fragment: Fragment? = null) { - (context as? MainActivity)?.let { activity -> + (context as? MainActivity)?.let { fragment?.let { fragment -> fragment.onViewPager { exitTransition = Fade().apply { @@ -64,7 +64,7 @@ class AlbumsFragment : FunkwhaleFragment() { } (context as? AppCompatActivity)?.let { activity -> - val fragment = TracksFragment.new(album).apply { + val nextFragment = TracksFragment.new(album).apply { enterTransition = Slide().apply { duration = AppContext.TRANSITION_DURATION interpolator = AccelerateDecelerateInterpolator() @@ -73,7 +73,7 @@ class AlbumsFragment : FunkwhaleFragment() { activity.supportFragmentManager .beginTransaction() - .replace(R.id.container, fragment) + .replace(R.id.container, nextFragment) .addToBackStack(null) .commit() } @@ -105,7 +105,7 @@ class AlbumsFragment : FunkwhaleFragment() { .into(cover) } - cover_background?.let { + cover_background?.let { background -> activity?.let { activity -> GlobalScope.launch(Dispatchers.IO) { val width = DisplayMetrics().apply { @@ -116,14 +116,14 @@ class AlbumsFragment : FunkwhaleFragment() { .maybeLoad(maybeNormalizeUrl(artistArt)) .get() .run { Bitmap.createScaledBitmap(this, width, width, false) } - .run { Bitmap.createBitmap(this, 0, 0, width, cover_background.height).toDrawable(resources) } + .run { Bitmap.createBitmap(this, 0, 0, width, background.height).toDrawable(resources) } .apply { alpha = 20 gravity = Gravity.CENTER } withContext(Dispatchers.Main) { - cover_background.background = backgroundCover + background.background = backgroundCover } } } diff --git a/app/src/main/java/com/github/apognu/otter/fragments/ArtistsFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/ArtistsFragment.kt index 7c81e13..a7b0b56 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/ArtistsFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/ArtistsFragment.kt @@ -24,7 +24,7 @@ class ArtistsFragment : FunkwhaleFragment() { companion object { fun openAlbums(context: Context?, artist: Artist, fragment: Fragment? = null, art: String? = null) { - (context as? MainActivity)?.let { activity -> + (context as? MainActivity)?.let { fragment?.let { fragment -> fragment.onViewPager { exitTransition = Fade().apply { @@ -40,7 +40,7 @@ class ArtistsFragment : FunkwhaleFragment() { } (context as? AppCompatActivity)?.let { activity -> - val fragment = AlbumsFragment.new(artist, art).apply { + val nextFragment = AlbumsFragment.new(artist, art).apply { enterTransition = Slide().apply { duration = AppContext.TRANSITION_DURATION interpolator = AccelerateDecelerateInterpolator() @@ -49,7 +49,7 @@ class ArtistsFragment : FunkwhaleFragment() { activity.supportFragmentManager .beginTransaction() - .replace(R.id.container, fragment) + .replace(R.id.container, nextFragment) .addToBackStack(null) .commit() } diff --git a/app/src/main/java/com/github/apognu/otter/fragments/FavoritesFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/FavoritesFragment.kt index 4d6eb46..3a1c529 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/FavoritesFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/FavoritesFragment.kt @@ -44,19 +44,22 @@ class FavoritesFragment : FunkwhaleFragment() { GlobalScope.launch(Main) { EventBus.get().collect { message -> when (message) { - is Event.TrackPlayed -> { - GlobalScope.launch(Main) { - RequestBus.send(Request.GetCurrentTrack).wait()?.let { response -> - adapter.currentTrack = response.track - adapter.notifyDataSetChanged() - } - } - } + is Event.TrackPlayed -> refreshCurrentTrack() + is Event.RefreshTrack -> refreshCurrentTrack() } } } } + private fun refreshCurrentTrack() { + GlobalScope.launch(Main) { + RequestBus.send(Request.GetCurrentTrack).wait()?.let { response -> + adapter.currentTrack = response.track + adapter.notifyDataSetChanged() + } + } + } + inner class FavoriteListener : FavoritesAdapter.OnFavoriteListener { override fun onToggleFavorite(id: Int, state: Boolean) { (repository as? FavoritesRepository)?.let { repository -> diff --git a/app/src/main/java/com/github/apognu/otter/fragments/LandscapeQueueFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/LandscapeQueueFragment.kt index e5fc21e..53ef8c1 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/LandscapeQueueFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/LandscapeQueueFragment.kt @@ -67,6 +67,7 @@ class LandscapeQueueFragment : Fragment() { EventBus.get().collect { message -> when (message) { is Event.TrackPlayed -> refresh() + is Event.RefreshTrack -> refresh() is Event.QueueChanged -> refresh() } } diff --git a/app/src/main/java/com/github/apognu/otter/fragments/PlaylistTracksFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/PlaylistTracksFragment.kt index a3c3817..4e0fad2 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/PlaylistTracksFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/PlaylistTracksFragment.kt @@ -114,19 +114,22 @@ class PlaylistTracksFragment : FunkwhaleFragment when (message) { - is Event.TrackPlayed -> { - GlobalScope.launch(Main) { - RequestBus.send(Request.GetCurrentTrack).wait()?.let { response -> - adapter.currentTrack = response.track - adapter.notifyDataSetChanged() - } - } - } + is Event.TrackPlayed -> refreshCurrentTrack() + is Event.RefreshTrack -> refreshCurrentTrack() } } } } + private fun refreshCurrentTrack() { + GlobalScope.launch(Main) { + RequestBus.send(Request.GetCurrentTrack).wait()?.let { response -> + adapter.currentTrack = response.track + adapter.notifyDataSetChanged() + } + } + } + inner class FavoriteListener : PlaylistTracksAdapter.OnFavoriteListener { override fun onToggleFavorite(id: Int, state: Boolean) { when (state) { diff --git a/app/src/main/java/com/github/apognu/otter/fragments/QueueFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/QueueFragment.kt index 0c8290c..a05dd87 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/QueueFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/QueueFragment.kt @@ -91,6 +91,7 @@ class QueueFragment : BottomSheetDialogFragment() { EventBus.get().collect { message -> when (message) { is Event.TrackPlayed -> refresh() + is Event.RefreshTrack -> refresh() is Event.QueueChanged -> refresh() } } diff --git a/app/src/main/java/com/github/apognu/otter/fragments/TracksFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/TracksFragment.kt index a1829df..b66114a 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/TracksFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/TracksFragment.kt @@ -98,19 +98,22 @@ class TracksFragment : FunkwhaleFragment() { GlobalScope.launch(Main) { EventBus.get().collect { message -> when (message) { - is Event.TrackPlayed -> { - GlobalScope.launch(Main) { - RequestBus.send(Request.GetCurrentTrack).wait()?.let { response -> - adapter.currentTrack = response.track - adapter.notifyDataSetChanged() - } - } - } + is Event.TrackPlayed -> refreshCurrentTrack() + is Event.RefreshTrack -> refreshCurrentTrack() } } } } + private fun refreshCurrentTrack() { + GlobalScope.launch(Main) { + RequestBus.send(Request.GetCurrentTrack).wait()?.let { response -> + adapter.currentTrack = response.track + adapter.notifyDataSetChanged() + } + } + } + inner class FavoriteListener : TracksAdapter.OnFavoriteListener { override fun onToggleFavorite(id: Int, state: Boolean) { when (state) { diff --git a/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt b/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt index 02800bc..afe3dd2 100644 --- a/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt +++ b/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt @@ -163,7 +163,7 @@ class PlayerService : Service() { state(true) - EventBus.send(Event.RefreshTrack(queue.current(),true)) + EventBus.send(Event.RefreshTrack(queue.current(), true)) } is Command.ToggleState -> toggle() @@ -259,7 +259,7 @@ class PlayerService : Service() { if (!state) { val (progress, _, _) = progress() - Cache.set(this@PlayerService,"progress", progress.toString().toByteArray()) + Cache.set(this@PlayerService, "progress", progress.toString().toByteArray()) } if (state && player.playbackState == Player.STATE_IDLE) { @@ -380,9 +380,9 @@ class PlayerService : Service() { } } - Cache.set(this@PlayerService,"current", queue.current.toString().toByteArray() ) + Cache.set(this@PlayerService, "current", queue.current.toString().toByteArray()) - EventBus.send(Event.RefreshTrack(queue.current(),true) ) + EventBus.send(Event.RefreshTrack(queue.current(), true)) } override fun onPositionDiscontinuity(reason: Int) { diff --git a/app/src/main/java/com/github/apognu/otter/playback/QueueManager.kt b/app/src/main/java/com/github/apognu/otter/playback/QueueManager.kt index 503863c..066f602 100644 --- a/app/src/main/java/com/github/apognu/otter/playback/QueueManager.kt +++ b/app/src/main/java/com/github/apognu/otter/playback/QueueManager.kt @@ -88,9 +88,9 @@ class QueueManager(val context: Context) { fun append(tracks: List) { val factory = factory() - val tracks = tracks.filter { metadata.indexOf(it) == -1 } + val missingTracks = tracks.filter { metadata.indexOf(it) == -1 } - val sources = tracks.map { track -> + val sources = missingTracks.map { track -> val url = mustNormalizeUrl(track.bestUpload()?.listen_url ?: "") ProgressiveMediaSource.Factory(factory).createMediaSource(Uri.parse(url)) diff --git a/app/src/main/java/com/github/apognu/otter/utils/Extensions.kt b/app/src/main/java/com/github/apognu/otter/utils/Extensions.kt index 13c8cb9..7d22f5d 100644 --- a/app/src/main/java/com/github/apognu/otter/utils/Extensions.kt +++ b/app/src/main/java/com/github/apognu/otter/utils/Extensions.kt @@ -1,8 +1,6 @@ package com.github.apognu.otter.utils -import android.content.Context import android.os.Build -import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import com.github.apognu.otter.R import com.github.apognu.otter.fragments.BrowseFragment @@ -17,10 +15,6 @@ import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch import kotlin.coroutines.CoroutineContext -fun Context.getColor(colorRes: Int): Int { - return ContextCompat.getColor(this, colorRes) -} - inline fun Flow>.untilNetwork(context: CoroutineContext = Main, crossinline callback: (data: List, isCache: Boolean, hasMore: Boolean) -> Unit) { GlobalScope.launch(context) { collect { data -> diff --git a/app/src/main/java/com/github/apognu/otter/views/NowPlayingView.kt b/app/src/main/java/com/github/apognu/otter/views/NowPlayingView.kt index a64256f..81bc8aa 100644 --- a/app/src/main/java/com/github/apognu/otter/views/NowPlayingView.kt +++ b/app/src/main/java/com/github/apognu/otter/views/NowPlayingView.kt @@ -52,7 +52,7 @@ class NowPlayingView : MaterialCardView { if (motionEvent.actionMasked == MotionEvent.ACTION_UP) { if (gestureDetectorCallback?.isScrolling == true) { - gestureDetectorCallback?.onUp(motionEvent) + gestureDetectorCallback?.onUp() } } @@ -105,7 +105,7 @@ class NowPlayingView : MaterialCardView { return true } - fun onUp(event: MotionEvent): Boolean { + fun onUp(): Boolean { isScrolling = false layoutParams.let { diff --git a/app/src/main/res/layout-land/partial_now_playing.xml b/app/src/main/res/layout-land/partial_now_playing.xml index 9e202fd..440f107 100644 --- a/app/src/main/res/layout-land/partial_now_playing.xml +++ b/app/src/main/res/layout-land/partial_now_playing.xml @@ -97,8 +97,8 @@ android:id="@+id/now_playing_details" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginStart="32dp" - android:layout_marginEnd="32dp" + android:paddingStart="32dp" + android:paddingEnd="32dp" android:orientation="vertical" android:paddingTop="16dp"> diff --git a/app/src/main/res/layout/row_radio.xml b/app/src/main/res/layout/row_radio.xml index 7ddf271..fb194a3 100644 --- a/app/src/main/res/layout/row_radio.xml +++ b/app/src/main/res/layout/row_radio.xml @@ -18,6 +18,7 @@ android:layout_width="48dp" android:layout_height="32dp" android:layout_marginEnd="16dp" + android:contentDescription="@string/alt_album_cover" android:scaleType="fitCenter" android:src="@drawable/cover" android:visibility="gone" diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8ef8640..9543c67 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1,7 +1,5 @@ - Otter - Veuillez saisir les détails de votre instance Funkwhale pour accéder à son contenu Nom d\'hôte Authentification anonyme @@ -13,7 +11,6 @@ Cela ne semble pas être un nom d\hôte valide Le nom d\'hôte Funkwhale devrait être sécurisé à travers HTTPS - Cast Rechercher Paramètres @@ -48,7 +45,7 @@ Otter par Antoine POPINEAU (apognu) Version Licence - MIT license + Licence MIT Déconnexion Artistes @@ -67,7 +64,6 @@ Ajouter à la liste de lecture Prochaine écoute - Ajouter à une playlist Add to favorites Lecture / pause @@ -109,5 +105,8 @@ Déconnexion Etes-vous certains de vouloir vous déconnecter de votre instance Funkwhale ? - %d tracks • %s" + + %1$d pistes • %2$s" + %1$d pistes • %2$s" + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8e69b24..9628d5f 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,6 +1,5 @@ - @android:color/background_light @android:color/background_light #327eae diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b018a6b..1fceeb8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - Otter + Otter Please enter the details of your Funkwhale instance to access its content Host name @@ -13,7 +13,6 @@ This could not be understood as a valid URL The Funkwhale hostname should be secure through HTTPS - Cast Search Settings @@ -67,7 +66,6 @@ Add to queue Play next - Add to playlist Ajouter aux favoris Toggle playback @@ -109,5 +107,8 @@ Sign out Are you sure you want to sign out of your Funkwhale instance? - %d tracks • %s" + + %1$d track • %2$s" + %1$d tracks • %2$s" +