Otter-App-Android-Funkwhale/app/src/main/java/com/github/apognu/otter/fragments/AlbumsGridFragment.kt

60 lines
2.3 KiB
Kotlin
Raw Normal View History

2019-08-19 16:50:33 +02:00
package com.github.apognu.otter.fragments
import android.view.View
import android.view.animation.AccelerateDecelerateInterpolator
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.transition.Fade
import androidx.transition.Slide
import com.github.apognu.otter.R
import com.github.apognu.otter.activities.MainActivity
import com.github.apognu.otter.adapters.AlbumsGridAdapter
2020-07-13 23:32:42 +02:00
import com.github.apognu.otter.models.api.FunkwhaleAlbum
2020-07-17 16:23:49 +02:00
import com.github.apognu.otter.models.domain.Album
2019-08-19 16:50:33 +02:00
import com.github.apognu.otter.repositories.AlbumsRepository
import com.github.apognu.otter.utils.AppContext
2020-07-13 23:32:42 +02:00
import com.github.apognu.otter.viewmodels.AlbumsViewModel
2019-08-19 16:50:33 +02:00
import kotlinx.android.synthetic.main.fragment_albums_grid.*
2020-07-17 16:23:49 +02:00
import org.koin.android.ext.android.inject
import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koin.core.parameter.parametersOf
2019-08-19 16:50:33 +02:00
2020-07-13 23:32:42 +02:00
class AlbumsGridFragment : LiveOtterFragment<FunkwhaleAlbum, Album, AlbumsGridAdapter>() {
2020-07-17 16:23:49 +02:00
override val repository by inject<AlbumsRepository> { parametersOf(null) }
override val adapter by inject<AlbumsGridAdapter> { parametersOf(context, OnAlbumClickListener()) }
override val viewModel by viewModel<AlbumsViewModel> { parametersOf(null) }
override val liveData by lazy { viewModel.albums }
2019-08-19 16:50:33 +02:00
override val viewRes = R.layout.fragment_albums_grid
override val recycler: RecyclerView get() = albums
override val layoutManager get() = GridLayoutManager(context, 3)
override val alwaysRefresh = false
2019-08-19 16:50:33 +02:00
inner class OnAlbumClickListener : AlbumsGridAdapter.OnAlbumClickListener {
2019-10-21 11:51:32 +02:00
override fun onClick(view: View?, album: Album) {
2019-08-19 16:50:33 +02:00
(context as? MainActivity)?.let { activity ->
exitTransition = Fade().apply {
duration = AppContext.TRANSITION_DURATION
interpolator = AccelerateDecelerateInterpolator()
2019-08-19 16:50:33 +02:00
view?.let {
addTarget(it)
2019-08-19 16:50:33 +02:00
}
}
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()
}
}
}
}