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 dceafcf..ce647f0 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 @@ -13,14 +13,13 @@ import android.view.* import android.view.animation.AccelerateDecelerateInterpolator import android.widget.SeekBar import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.PopupMenu import androidx.core.graphics.drawable.toDrawable import androidx.fragment.app.DialogFragment import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import com.github.apognu.otter.R -import com.github.apognu.otter.fragments.BrowseFragment -import com.github.apognu.otter.fragments.LandscapeQueueFragment -import com.github.apognu.otter.fragments.QueueFragment +import com.github.apognu.otter.fragments.* import com.github.apognu.otter.playback.MediaControlsManager import com.github.apognu.otter.playback.PlayerService import com.github.apognu.otter.repositories.FavoritedRepository @@ -301,6 +300,27 @@ class MainActivity : AppCompatActivity() { } } + now_playing_details_info?.let { now_playing_details_info -> + now_playing_details_info.setOnClickListener { + PopupMenu(this@MainActivity, now_playing_details_info, Gravity.START, R.attr.actionOverflowMenuStyle, 0).apply { + inflate(R.menu.track_info) + + setOnMenuItemClickListener { + when (it.itemId) { + R.id.go_to_artist -> ArtistsFragment.openAlbums(this@MainActivity, track.artist, art = track.album.cover.original) + R.id.go_to_album -> AlbumsFragment.openTracks(this@MainActivity, track.album) + } + + now_playing.close() + + true + } + + show() + } + } + } + now_playing_details_favorite?.let { now_playing_details_favorite -> favoriteCheckRepository.fetch().untilNetwork(IO) { favorites, _, _ -> GlobalScope.launch(Main) { diff --git a/app/src/main/java/com/github/apognu/otter/adapters/AlbumsAdapter.kt b/app/src/main/java/com/github/apognu/otter/adapters/AlbumsAdapter.kt index 884f844..2ee897e 100644 --- a/app/src/main/java/com/github/apognu/otter/adapters/AlbumsAdapter.kt +++ b/app/src/main/java/com/github/apognu/otter/adapters/AlbumsAdapter.kt @@ -36,7 +36,7 @@ class AlbumsAdapter(val context: Context?, val listener: OnAlbumClickListener) : Picasso.get() .maybeLoad(maybeNormalizeUrl(album.cover.original)) .fit() - .transform(RoundedCornersTransformation(16, 0)) + .transform(RoundedCornersTransformation(8, 0)) .into(holder.art) holder.title.text = album.title diff --git a/app/src/main/java/com/github/apognu/otter/adapters/AlbumsGridAdapter.kt b/app/src/main/java/com/github/apognu/otter/adapters/AlbumsGridAdapter.kt index bea6da0..b9042e4 100644 --- a/app/src/main/java/com/github/apognu/otter/adapters/AlbumsGridAdapter.kt +++ b/app/src/main/java/com/github/apognu/otter/adapters/AlbumsGridAdapter.kt @@ -36,7 +36,7 @@ class AlbumsGridAdapter(val context: Context?, private val listener: OnAlbumClic .maybeLoad(maybeNormalizeUrl(album.cover.original)) .fit() .placeholder(R.drawable.cover) - .transform(RoundedCornersTransformation(24, 0)) + .transform(RoundedCornersTransformation(16, 0)) .into(holder.cover) holder.title.text = album.title diff --git a/app/src/main/java/com/github/apognu/otter/adapters/ArtistsAdapter.kt b/app/src/main/java/com/github/apognu/otter/adapters/ArtistsAdapter.kt index ee1e599..25bc2a3 100644 --- a/app/src/main/java/com/github/apognu/otter/adapters/ArtistsAdapter.kt +++ b/app/src/main/java/com/github/apognu/otter/adapters/ArtistsAdapter.kt @@ -39,7 +39,7 @@ class ArtistsAdapter(val context: Context?, private val listener: OnArtistClickL Picasso.get() .maybeLoad(maybeNormalizeUrl(albums[0].cover.original)) .fit() - .transform(RoundedCornersTransformation(16, 0)) + .transform(RoundedCornersTransformation(8, 0)) .into(holder.art) } } diff --git a/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt b/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt index f2bed9b..5dbc8d9 100644 --- a/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt +++ b/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt @@ -58,7 +58,7 @@ class TracksAdapter(private val context: Context?, private val favoriteListener: Picasso.get() .maybeLoad(maybeNormalizeUrl(track.album.cover.original)) .fit() - .transform(RoundedCornersTransformation(16, 0)) + .transform(RoundedCornersTransformation(8, 0)) .into(holder.cover) holder.title.text = track.title 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 7c661fb..107a719 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 @@ -1,5 +1,6 @@ package com.github.apognu.otter.fragments +import android.content.Context import android.graphics.Bitmap import android.os.Bundle import android.util.DisplayMetrics @@ -8,6 +9,7 @@ import android.view.View import android.view.animation.AccelerateDecelerateInterpolator import androidx.core.graphics.drawable.toDrawable import androidx.core.os.bundleOf +import androidx.fragment.app.Fragment import androidx.recyclerview.widget.RecyclerView import androidx.transition.Fade import androidx.transition.Slide @@ -32,15 +34,47 @@ class AlbumsFragment : FunkwhaleFragment() { var artistArt = "" companion object { - fun new(artist: Artist): AlbumsFragment { + 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( "artistId" to artist.id, "artistName" to artist.name, - "artistArt" to if (artist.albums?.isNotEmpty() == true) artist.albums[0].cover.original else "" + "artistArt" to art ) } } + + fun openTracks(context: Context?, album: Album, fragment: Fragment? = null) { + (context as? MainActivity)?.let { activity -> + fragment?.let { fragment -> + fragment.onViewPager { + exitTransition = Fade().apply { + duration = AppContext.TRANSITION_DURATION + interpolator = AccelerateDecelerateInterpolator() + + view?.let { + addTarget(it) + } + } + } + } + + val fragment = TracksFragment.new(album).apply { + enterTransition = Slide().apply { + duration = AppContext.TRANSITION_DURATION + interpolator = AccelerateDecelerateInterpolator() + } + } + + activity.supportFragmentManager + .beginTransaction() + .replace(R.id.container, fragment) + .addToBackStack(null) + .commit() + } + } } override fun onCreate(savedInstanceState: Bundle?) { @@ -97,29 +131,7 @@ class AlbumsFragment : FunkwhaleFragment() { inner class OnAlbumClickListener : AlbumsAdapter.OnAlbumClickListener { override fun onClick(view: View?, album: Album) { - (context as? MainActivity)?.let { activity -> - exitTransition = Fade().apply { - duration = AppContext.TRANSITION_DURATION - interpolator = AccelerateDecelerateInterpolator() - - view?.let { - addTarget(it) - } - } - - val fragment = TracksFragment.new(album).apply { - enterTransition = Slide().apply { - duration = AppContext.TRANSITION_DURATION - interpolator = AccelerateDecelerateInterpolator() - } - } - - activity.supportFragmentManager - .beginTransaction() - .replace(R.id.container, fragment) - .addToBackStack(null) - .commit() - } + openTracks(context, album, fragment = this@AlbumsFragment) } } } \ No newline at end of file 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 46884b0..02383ae 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 @@ -1,8 +1,10 @@ package com.github.apognu.otter.fragments +import android.content.Context import android.os.Bundle import android.view.View import android.view.animation.AccelerateDecelerateInterpolator +import androidx.fragment.app.Fragment import androidx.recyclerview.widget.RecyclerView import androidx.transition.Fade import androidx.transition.Slide @@ -19,28 +21,23 @@ class ArtistsFragment : FunkwhaleFragment() { override val viewRes = R.layout.fragment_artists override val recycler: RecyclerView get() = artists - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - adapter = ArtistsAdapter(context, OnArtistClickListener()) - repository = ArtistsRepository(context) - } - - inner class OnArtistClickListener : ArtistsAdapter.OnArtistClickListener { - override fun onClick(holder: View?, artist: Artist) { + companion object { + fun openAlbums(context: Context?, artist: Artist, fragment: Fragment? = null, art: String? = null) { (context as? MainActivity)?.let { activity -> - onViewPager { - exitTransition = Fade().apply { - duration = AppContext.TRANSITION_DURATION - interpolator = AccelerateDecelerateInterpolator() + fragment?.let { fragment -> + fragment.onViewPager { + exitTransition = Fade().apply { + duration = AppContext.TRANSITION_DURATION + interpolator = AccelerateDecelerateInterpolator() - view?.let { - addTarget(it) + view?.let { + addTarget(it) + } } } } - val fragment = AlbumsFragment.new(artist).apply { + val fragment = AlbumsFragment.new(artist, art).apply { enterTransition = Slide().apply { duration = AppContext.TRANSITION_DURATION interpolator = AccelerateDecelerateInterpolator() @@ -55,4 +52,17 @@ class ArtistsFragment : FunkwhaleFragment() { } } } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + adapter = ArtistsAdapter(context, OnArtistClickListener()) + repository = ArtistsRepository(context) + } + + inner class OnArtistClickListener : ArtistsAdapter.OnArtistClickListener { + override fun onClick(holder: View?, artist: Artist) { + openAlbums(context, artist, fragment = this@ArtistsFragment) + } + } } diff --git a/app/src/main/res/layout/partial_now_playing.xml b/app/src/main/res/layout/partial_now_playing.xml index 8798430..c797c49 100644 --- a/app/src/main/res/layout/partial_now_playing.xml +++ b/app/src/main/res/layout/partial_now_playing.xml @@ -115,6 +115,16 @@ android:src="@drawable/ottershape" tools:src="@tools:sample/avatars" /> + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 1ccb925..b5d0838 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -84,6 +84,10 @@ Image de l\'artiste Couverture de l\'album Plus d\'options + Informations sur cette piste + + Voir l\'artist + Voir l\'album Déconnexion Etes-vous certains de vouloir vous déconnecter de votre instance Funkwhale ? diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d9705d4..f5b443e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -84,6 +84,10 @@ Artist art Album cover More options + Information about track + + Go to artist + Go to album Sign out Are you sure you want to sign out of your Funkwhale instance? diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index f239413..f36cb28 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -29,7 +29,7 @@