diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/repository/MovieRepository.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/repository/MovieRepository.kt index e327a64..4e471ae 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/repository/MovieRepository.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/repository/MovieRepository.kt @@ -1,15 +1,9 @@ package fr.iut.pm.movieapplication.repository import android.util.Log -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.liveData import fr.iut.pm.movieapplication.api.RetrofitInstance -import fr.iut.pm.movieapplication.api.dtos.PopularDTO -import fr.iut.pm.movieapplication.model.media.MediaResult import fr.iut.pm.movieapplication.model.media.movie.Movie import fr.iut.pm.movieapplication.utils.MediaResultMapper -import kotlinx.coroutines.Dispatchers class MovieRepository { diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt index 4e6e7db..30f886a 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt @@ -17,7 +17,6 @@ import fr.iut.pm.movieapplication.ui.fragments.TvShowsFragment class MainActivity : AppCompatActivity() { - val movieRepository : MovieRepository = MovieRepository() val mediaRepository : MediaRepository = MediaRepository() override fun onCreate(savedInstanceState: Bundle?) { @@ -47,13 +46,7 @@ class MainActivity : AppCompatActivity() { else -> false } } - /* - //Trends fragment injected in main activity - val transaction = supportFragmentManager.beginTransaction() - transaction.replace(R.id.fragment_container, HomeSectionsFragment()) - transaction.addToBackStack(null) - transaction.commit() - */ + if(Build.VERSION.SDK_INT < 33) { // Hide the status bar. window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/CategoryItemDecoration.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/CategoryItemDecoration.kt deleted file mode 100644 index fe08862..0000000 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/CategoryItemDecoration.kt +++ /dev/null @@ -1,12 +0,0 @@ -package fr.iut.pm.movieapplication.ui.adapter - -import android.graphics.Rect -import android.view.View -import androidx.recyclerview.widget.RecyclerView - -class CategoryItemDecoration : RecyclerView.ItemDecoration() { - - override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { - outRect.bottom = 50 - } -} \ No newline at end of file diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/MovieAdapter.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/MovieAdapter.kt index d798661..e19e4e0 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/MovieAdapter.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/MovieAdapter.kt @@ -1,16 +1,12 @@ package fr.iut.pm.movieapplication.ui.adapter import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView import androidx.core.net.toUri import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import coil.load -import fr.iut.pm.movieapplication.R import fr.iut.pm.movieapplication.databinding.ItemMovieCategoryBinding import fr.iut.pm.movieapplication.model.media.movie.Movie import fr.iut.pm.movieapplication.utils.Constants diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/fragments/MoviesFragment.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/fragments/MoviesFragment.kt index 9e80f2b..c4573f5 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/fragments/MoviesFragment.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/fragments/MoviesFragment.kt @@ -1,38 +1,22 @@ package fr.iut.pm.movieapplication.ui.fragments import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.AdapterView import android.widget.ArrayAdapter -import android.widget.Spinner import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels -import androidx.lifecycle.Observer -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.RecyclerView import fr.iut.pm.movieapplication.R import fr.iut.pm.movieapplication.databinding.FragmentMoviesBinding -import fr.iut.pm.movieapplication.model.media.movie.Movie -import fr.iut.pm.movieapplication.ui.adapter.MovieAdapter import fr.iut.pm.movieapplication.ui.viewmodel.MoviesVM -import fr.iut.pm.movieapplication.utils.Constants.Companion.PAGE_SIZE class MoviesFragment( ) : Fragment() { - private var isLoading = false - private var isLastPage = false - private var currentPage = 1 - private var currentList : MutableList = mutableListOf() - private val moviesVM by viewModels() - - lateinit var spinner: Spinner - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -41,25 +25,25 @@ class MoviesFragment( binding.moviesVM = moviesVM binding.lifecycleOwner = viewLifecycleOwner - val adapter = ArrayAdapter.createFromResource( - requireContext(), - R.array.movie_filter, - android.R.layout.simple_spinner_item - ) - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) + val adapter = ArrayAdapter.createFromResource( + requireContext(), + R.array.movie_filter, + android.R.layout.simple_spinner_item + ) + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) - with(binding.categorySpinner) - { - this.adapter = adapter - onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected( - parent: AdapterView<*>?, - view: View?, - position: Int, - id: Long - ) { - moviesVM.getDataFilter(selectedItem.toString()) - } + with(binding.categorySpinner) + { + this.adapter = adapter + onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, + view: View?, + position: Int, + id: Long + ) { + moviesVM.getData(selectedItem.toString()) + } override fun onNothingSelected(parent: AdapterView<*>?) { diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/viewmodel/MoviesVM.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/viewmodel/MoviesVM.kt index 84bbc25..126f2b3 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/viewmodel/MoviesVM.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/viewmodel/MoviesVM.kt @@ -9,14 +9,31 @@ import fr.iut.pm.movieapplication.ui.adapter.MovieAdapter import kotlinx.coroutines.launch class MoviesVM() : ViewModel() { - //Movie repository + /** + * The movie repository used to get our data + */ private val repository = MovieRepository() - //Live data + + /** + * The MutableLiveData + */ private var _moviesLiveData : MutableLiveData> = MutableLiveData>() + + /** + * Getter of the LiveData + */ fun getMoviesLiveData() : LiveData> = _moviesLiveData + /** + * The current data filter + */ private var currentFilter = "" + + /** + * The adapter of the RecyclerView (set on the RecyclerView in the view) + */ val moviesAdapter = MovieAdapter() + val scrollListener = object : RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { val layoutManager = recyclerView.layoutManager as GridLayoutManager @@ -33,13 +50,13 @@ class MoviesVM() : ViewModel() { private var currentPage = 1 - - fun getDataFilter(filter : String) { - - //_moviesLiveData.value = mutableListOf() + /** + * Get the data with a given filter + * @param filter filter applied to get data + */ + fun getData(filter : String) { currentFilter = filter currentPage = 1 - when(currentFilter) { "Populaires" -> viewModelScope.launch { _moviesLiveData.postValue(repository.getPopularMovies()) @@ -57,7 +74,11 @@ class MoviesVM() : ViewModel() { } - fun getMoreData(page : Int = 1) { + /** + * Get more data with the actual filter + * @param page page from which the data are obtained + */ + private fun getMoreData(page : Int = 1) { var movies : List when(currentFilter) { "Populaires" -> viewModelScope.launch { @@ -80,14 +101,4 @@ class MoviesVM() : ViewModel() { } -} - - - -class MoviesVMFactory : ViewModelProvider.Factory { - - override fun create(modelClass: Class): T { - return MoviesVM() as T - } - } \ No newline at end of file diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/viewmodel/ViewModelFactory.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/viewmodel/ViewModelFactory.kt deleted file mode 100644 index d9d7bcc..0000000 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/viewmodel/ViewModelFactory.kt +++ /dev/null @@ -1,9 +0,0 @@ -package fr.iut.pm.movieapplication.ui.viewmodel - -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider - -inline fun viewModelFactory(crossinline f: () -> VM) = - object : ViewModelProvider.Factory { - override fun create(modelClass: Class): T = f() as T - } \ No newline at end of file