Misc refactoring.

This commit is contained in:
Antoine POPINEAU 2019-10-21 11:51:32 +02:00
parent 5f495f54e5
commit 31063fb40f
No known key found for this signature in database
GPG Key ID: A78AC64694F84063
17 changed files with 29 additions and 122 deletions

View File

@ -7,7 +7,6 @@ import androidx.appcompat.app.AppCompatActivity
import com.github.apognu.otter.R import com.github.apognu.otter.R
import com.github.apognu.otter.fragments.LoginDialog import com.github.apognu.otter.fragments.LoginDialog
import com.github.apognu.otter.utils.AppContext import com.github.apognu.otter.utils.AppContext
import com.github.apognu.otter.utils.log
import com.github.kittinunf.fuel.Fuel import com.github.kittinunf.fuel.Fuel
import com.github.kittinunf.fuel.coroutines.awaitObjectResult import com.github.kittinunf.fuel.coroutines.awaitObjectResult
import com.github.kittinunf.fuel.gson.gsonDeserializerOf import com.github.kittinunf.fuel.gson.gsonDeserializerOf

View File

@ -43,7 +43,7 @@ class AlbumsAdapter(val context: Context?, val listener: OnAlbumClickListener) :
holder.artist.text = album.artist.name holder.artist.text = album.artist.name
} }
inner class ViewHolder(view: View, val listener: OnAlbumClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener { inner class ViewHolder(view: View, private val listener: OnAlbumClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
val art = view.art val art = view.art
val title = view.title val title = view.title
val artist = view.artist val artist = view.artist

View File

@ -13,7 +13,7 @@ import com.squareup.picasso.Picasso
import jp.wasabeef.picasso.transformations.RoundedCornersTransformation import jp.wasabeef.picasso.transformations.RoundedCornersTransformation
import kotlinx.android.synthetic.main.row_album_grid.view.* import kotlinx.android.synthetic.main.row_album_grid.view.*
class AlbumsGridAdapter(val context: Context?, val listener: OnAlbumClickListener) : FunkwhaleAdapter<Album, AlbumsGridAdapter.ViewHolder>() { class AlbumsGridAdapter(val context: Context?, private val listener: OnAlbumClickListener) : FunkwhaleAdapter<Album, AlbumsGridAdapter.ViewHolder>() {
interface OnAlbumClickListener { interface OnAlbumClickListener {
fun onClick(view: View?, album: Album) fun onClick(view: View?, album: Album)
} }
@ -41,7 +41,7 @@ class AlbumsGridAdapter(val context: Context?, val listener: OnAlbumClickListene
holder.title.text = album.title holder.title.text = album.title
} }
inner class ViewHolder(view: View, val listener: OnAlbumClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener { inner class ViewHolder(view: View, private val listener: OnAlbumClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
val cover = view.cover val cover = view.cover
val title = view.title val title = view.title

View File

@ -13,7 +13,7 @@ import com.squareup.picasso.Picasso
import jp.wasabeef.picasso.transformations.RoundedCornersTransformation import jp.wasabeef.picasso.transformations.RoundedCornersTransformation
import kotlinx.android.synthetic.main.row_artist.view.* import kotlinx.android.synthetic.main.row_artist.view.*
class ArtistsAdapter(val context: Context?, val listener: OnArtistClickListener) : FunkwhaleAdapter<Artist, ArtistsAdapter.ViewHolder>() { class ArtistsAdapter(val context: Context?, private val listener: OnArtistClickListener) : FunkwhaleAdapter<Artist, ArtistsAdapter.ViewHolder>() {
interface OnArtistClickListener { interface OnArtistClickListener {
fun onClick(holder: View?, artist: Artist) fun onClick(holder: View?, artist: Artist)
} }
@ -53,7 +53,7 @@ class ArtistsAdapter(val context: Context?, val listener: OnArtistClickListener)
} }
} }
inner class ViewHolder(view: View, val listener: OnArtistClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener { inner class ViewHolder(view: View, private val listener: OnArtistClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
val art = view.art val art = view.art
val name = view.name val name = view.name
val albums = view.albums val albums = view.albums

View File

@ -2,16 +2,13 @@ package com.github.apognu.otter.adapters
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.Color
import android.graphics.Typeface import android.graphics.Typeface
import android.graphics.drawable.ColorDrawable
import android.os.Build import android.os.Build
import android.view.Gravity import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.github.apognu.otter.R import com.github.apognu.otter.R
import com.github.apognu.otter.fragments.FunkwhaleAdapter import com.github.apognu.otter.fragments.FunkwhaleAdapter
@ -21,7 +18,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation
import kotlinx.android.synthetic.main.row_track.view.* import kotlinx.android.synthetic.main.row_track.view.*
import java.util.* import java.util.*
class FavoritesAdapter(private val context: Context?, val favoriteListener: OnFavoriteListener, val fromQueue: Boolean = false) : FunkwhaleAdapter<Favorite, FavoritesAdapter.ViewHolder>() { class FavoritesAdapter(private val context: Context?, private val favoriteListener: OnFavoriteListener, val fromQueue: Boolean = false) : FunkwhaleAdapter<Favorite, FavoritesAdapter.ViewHolder>() {
interface OnFavoriteListener { interface OnFavoriteListener {
fun onToggleFavorite(id: Int, state: Boolean) fun onToggleFavorite(id: Int, state: Boolean)
} }
@ -109,7 +106,7 @@ class FavoritesAdapter(private val context: Context?, val favoriteListener: OnFa
fun onItemMove(oldPosition: Int, newPosition: Int) { fun onItemMove(oldPosition: Int, newPosition: Int) {
if (oldPosition < newPosition) { if (oldPosition < newPosition) {
for (i in oldPosition.rangeTo(newPosition - 1)) { for (i in oldPosition.until(newPosition)) {
Collections.swap(data, i, i + 1) Collections.swap(data, i, i + 1)
} }
} else { } else {
@ -123,7 +120,6 @@ class FavoritesAdapter(private val context: Context?, val favoriteListener: OnFa
} }
inner class ViewHolder(view: View, val context: Context?) : RecyclerView.ViewHolder(view), View.OnClickListener { inner class ViewHolder(view: View, val context: Context?) : RecyclerView.ViewHolder(view), View.OnClickListener {
val handle = view.handle
val cover = view.cover val cover = view.cover
val title = view.title val title = view.title
val artist = view.artist val artist = view.artist
@ -144,40 +140,4 @@ class FavoritesAdapter(private val context: Context?, val favoriteListener: OnFa
} }
} }
} }
inner class TouchHelperCallback : ItemTouchHelper.Callback() {
override fun isLongPressDragEnabled() = false
override fun isItemViewSwipeEnabled() = false
override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) =
makeMovementFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN, 0)
override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
onItemMove(viewHolder.adapterPosition, target.adapterPosition)
return true
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {}
@SuppressLint("NewApi")
override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) {
if (actionState == ItemTouchHelper.ACTION_STATE_DRAG) {
context?.let {
Build.VERSION_CODES.M.onApi(
{ viewHolder?.itemView?.background = ColorDrawable(context.resources.getColor(R.color.colorSelected, null)) },
{ viewHolder?.itemView?.background = ColorDrawable(context.resources.getColor(R.color.colorSelected)) })
}
}
super.onSelectedChanged(viewHolder, actionState)
}
override fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) {
viewHolder.itemView.background = ColorDrawable(Color.TRANSPARENT)
super.clearView(recyclerView, viewHolder)
}
}
} }

View File

@ -112,7 +112,7 @@ class PlaylistTracksAdapter(private val context: Context?, val fromQueue: Boolea
fun onItemMove(oldPosition: Int, newPosition: Int) { fun onItemMove(oldPosition: Int, newPosition: Int) {
if (oldPosition < newPosition) { if (oldPosition < newPosition) {
for (i in oldPosition.rangeTo(newPosition - 1)) { for (i in oldPosition.until(newPosition)) {
Collections.swap(data, i, i + 1) Collections.swap(data, i, i + 1)
} }
} else { } else {

View File

@ -11,7 +11,7 @@ import com.github.apognu.otter.utils.Playlist
import com.squareup.picasso.Picasso import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.row_playlist.view.* import kotlinx.android.synthetic.main.row_playlist.view.*
class PlaylistsAdapter(val context: Context?, val listener: OnPlaylistClickListener) : FunkwhaleAdapter<Playlist, PlaylistsAdapter.ViewHolder>() { class PlaylistsAdapter(val context: Context?, private val listener: OnPlaylistClickListener) : FunkwhaleAdapter<Playlist, PlaylistsAdapter.ViewHolder>() {
interface OnPlaylistClickListener { interface OnPlaylistClickListener {
fun onClick(holder: View?, playlist: Playlist) fun onClick(holder: View?, playlist: Playlist)
} }
@ -49,7 +49,7 @@ class PlaylistsAdapter(val context: Context?, val listener: OnPlaylistClickListe
} }
} }
inner class ViewHolder(view: View, val listener: OnPlaylistClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener { inner class ViewHolder(view: View, private val listener: OnPlaylistClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
val name = view.name val name = view.name
val summary = view.summary val summary = view.summary

View File

@ -1,32 +0,0 @@
package com.github.apognu.otter.adapters
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.github.apognu.otter.R
import com.github.apognu.otter.utils.Track
import kotlinx.android.synthetic.main.row_track.view.*
class SearchResultsAdapter(val context: Context?) : RecyclerView.Adapter<SearchResultsAdapter.ViewHolder>() {
var tracks: List<Track> = listOf()
override fun getItemCount() = tracks.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.row_track, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val artist = tracks[position]
holder.title.text = artist.title
}
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val title = view.title
}
}

View File

@ -18,7 +18,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation
import kotlinx.android.synthetic.main.row_track.view.* import kotlinx.android.synthetic.main.row_track.view.*
import java.util.* import java.util.*
class TracksAdapter(private val context: Context?, val favoriteListener: OnFavoriteListener? = null, val fromQueue: Boolean = false) : FunkwhaleAdapter<Track, TracksAdapter.ViewHolder>() { class TracksAdapter(private val context: Context?, private val favoriteListener: OnFavoriteListener? = null, val fromQueue: Boolean = false) : FunkwhaleAdapter<Track, TracksAdapter.ViewHolder>() {
interface OnFavoriteListener { interface OnFavoriteListener {
fun onToggleFavorite(id: Int, state: Boolean) fun onToggleFavorite(id: Int, state: Boolean)
} }
@ -132,7 +132,7 @@ class TracksAdapter(private val context: Context?, val favoriteListener: OnFavor
fun onItemMove(oldPosition: Int, newPosition: Int) { fun onItemMove(oldPosition: Int, newPosition: Int) {
if (oldPosition < newPosition) { if (oldPosition < newPosition) {
for (i in oldPosition.rangeTo(newPosition - 1)) { for (i in oldPosition.until(newPosition)) {
Collections.swap(data, i, i + 1) Collections.swap(data, i, i + 1)
} }
} else { } else {

View File

@ -64,7 +64,7 @@ class AlbumsFragment : FunkwhaleFragment<Album, AlbumsAdapter>() {
} }
inner class OnAlbumClickListener : AlbumsAdapter.OnAlbumClickListener { inner class OnAlbumClickListener : AlbumsAdapter.OnAlbumClickListener {
override fun onClick(holder: View?, album: Album) { override fun onClick(view: View?, album: Album) {
(context as? MainActivity)?.let { activity -> (context as? MainActivity)?.let { activity ->
exitTransition = Fade().apply { exitTransition = Fade().apply {
duration = AppContext.TRANSITION_DURATION duration = AppContext.TRANSITION_DURATION

View File

@ -29,7 +29,7 @@ class AlbumsGridFragment : FunkwhaleFragment<Album, AlbumsGridAdapter>() {
} }
inner class OnAlbumClickListener : AlbumsGridAdapter.OnAlbumClickListener { inner class OnAlbumClickListener : AlbumsGridAdapter.OnAlbumClickListener {
override fun onClick(holder: View?, album: Album) { override fun onClick(view: View?, album: Album) {
(context as? MainActivity)?.let { activity -> (context as? MainActivity)?.let { activity ->
onViewPager { onViewPager {
exitTransition = Fade().apply { exitTransition = Fade().apply {

View File

@ -21,10 +21,10 @@ class TracksFragment : FunkwhaleFragment<Track, TracksAdapter>() {
lateinit var favoritesRepository: FavoritesRepository lateinit var favoritesRepository: FavoritesRepository
var albumId = 0 private var albumId = 0
var albumArtist = "" private var albumArtist = ""
var albumTitle = "" private var albumTitle = ""
var albumCover = "" private var albumCover = ""
companion object { companion object {
fun new(album: Album): TracksFragment { fun new(album: Album): TracksFragment {

View File

@ -20,16 +20,15 @@ import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class MediaControlsManager(val context: Service, val mediaSession: MediaSessionCompat) { class MediaControlsManager(val context: Service, private val mediaSession: MediaSessionCompat) {
companion object { companion object {
const val NOTIFICATION_ACTION_OPEN_QUEUE = 0 const val NOTIFICATION_ACTION_OPEN_QUEUE = 0
const val NOTIFICATION_ACTION_PREVIOUS = 1 const val NOTIFICATION_ACTION_PREVIOUS = 1
const val NOTIFICATION_ACTION_TOGGLE = 2 const val NOTIFICATION_ACTION_TOGGLE = 2
const val NOTIFICATION_ACTION_NEXT = 3 const val NOTIFICATION_ACTION_NEXT = 3
const val NOTIFICATION_ACTION_FAVORITE = 4
} }
var notification: Notification? = null private var notification: Notification? = null
fun updateNotification(track: Track?, playing: Boolean) { fun updateNotification(track: Track?, playing: Boolean) {
if (notification == null && !playing) return if (notification == null && !playing) return

View File

@ -9,6 +9,7 @@ import android.media.AudioAttributes
import android.media.AudioFocusRequest import android.media.AudioFocusRequest
import android.media.AudioManager import android.media.AudioManager
import android.os.Build import android.os.Build
import android.os.IBinder
import android.support.v4.media.session.MediaSessionCompat import android.support.v4.media.session.MediaSessionCompat
import android.view.KeyEvent import android.view.KeyEvent
import com.github.apognu.otter.R import com.github.apognu.otter.R
@ -214,7 +215,7 @@ class PlayerService : Service() {
}) })
} }
override fun onBind(intent: Intent?) = null override fun onBind(intent: Intent?): IBinder? = null
@SuppressLint("NewApi") @SuppressLint("NewApi")
override fun onDestroy() { override fun onDestroy() {

View File

@ -17,8 +17,6 @@ class SearchRepository(override val context: Context?, query: String) : Reposito
override fun cache(data: List<Track>) = TracksCache(data) override fun cache(data: List<Track>) = TracksCache(data)
override fun uncache(reader: BufferedReader) = gsonDeserializerOf(TracksCache::class.java).deserialize(reader) override fun uncache(reader: BufferedReader) = gsonDeserializerOf(TracksCache::class.java).deserialize(reader)
var query: String? = null
override fun onDataFetched(data: List<Track>): List<Track> = runBlocking { override fun onDataFetched(data: List<Track>): List<Track> = runBlocking {
val favorites = FavoritesRepository(context).fetch(Origin.Network.origin).receive().data val favorites = FavoritesRepository(context).fetch(Origin.Network.origin).receive().data

View File

@ -1,11 +1,7 @@
package com.github.apognu.otter.utils package com.github.apognu.otter.utils
import android.os.Build import android.os.Build
import android.view.ViewGroup
import android.view.animation.Interpolator
import androidx.core.view.doOnPreDraw
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.transition.TransitionSet
import com.github.apognu.otter.fragments.BrowseFragment import com.github.apognu.otter.fragments.BrowseFragment
import com.github.apognu.otter.repositories.Repository import com.github.apognu.otter.repositories.Repository
import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.Dispatchers.Main
@ -35,14 +31,6 @@ inline fun <D> Channel<Repository.Response<D>>.untilNetwork(context: CoroutineCo
} }
} }
fun TransitionSet.setCommonInterpolator(interpolator: Interpolator): TransitionSet {
(0 until transitionCount)
.map { index -> getTransitionAt(index) }
.forEach { transition -> transition.interpolator = interpolator }
return this
}
fun Fragment.onViewPager(block: Fragment.() -> Unit) { fun Fragment.onViewPager(block: Fragment.() -> Unit) {
for (f in activity?.supportFragmentManager?.fragments ?: listOf()) { for (f in activity?.supportFragmentManager?.fragments ?: listOf()) {
if (f is BrowseFragment) { if (f is BrowseFragment) {
@ -51,12 +39,6 @@ fun Fragment.onViewPager(block: Fragment.() -> Unit) {
} }
} }
fun Fragment.startTransitions() {
(view?.parent as? ViewGroup)?.doOnPreDraw {
startPostponedEnterTransition()
}
}
fun <T> Int.onApi(block: () -> T) { fun <T> Int.onApi(block: () -> T) {
if (Build.VERSION.SDK_INT >= this) { if (Build.VERSION.SDK_INT >= this) {
block() block()
@ -72,17 +54,17 @@ fun <T, U> Int.onApi(block: () -> T, elseBlock: (() -> U)) {
} }
fun <T> Int.onApiForResult(block: () -> T, elseBlock: (() -> T)): T { fun <T> Int.onApiForResult(block: () -> T, elseBlock: (() -> T)): T {
if (Build.VERSION.SDK_INT >= this) { return if (Build.VERSION.SDK_INT >= this) {
return block() block()
} else { } else {
return elseBlock() elseBlock()
} }
} }
fun <T> T.applyOnApi(api: Int, block: T.() -> T): T { fun <T> T.applyOnApi(api: Int, block: T.() -> T): T {
if (Build.VERSION.SDK_INT >= api) { return if (Build.VERSION.SDK_INT >= api) {
return block() block()
} else { } else {
return this this
} }
} }

View File

@ -9,7 +9,7 @@ import androidx.transition.TransitionValues
import androidx.transition.Visibility import androidx.transition.Visibility
class ExplodeReveal : Visibility() { class ExplodeReveal : Visibility() {
val SCREEN_BOUNDS = "screenBounds" private val SCREEN_BOUNDS = "screenBounds"
private val locations = IntArray(2) private val locations = IntArray(2)