From 9840677f9efb81bfd79c3a42cab642e116c5803b Mon Sep 17 00:00:00 2001 From: louwar Date: Fri, 31 Mar 2023 10:03:08 +0200 Subject: [PATCH] Update Detail --- .../main/java/fr/iut/cinecool/ApiClient.kt | 55 ------------ .../java/fr/iut/cinecool/DetailActivity.kt | 35 -------- .../fr/iut/cinecool/MovieDetailFragment.kt | 90 +++++++------------ .../app/src/main/res/navigation/nav_graph.xml | 19 ++++ 4 files changed, 53 insertions(+), 146 deletions(-) delete mode 100644 CineCool/app/src/main/java/fr/iut/cinecool/ApiClient.kt delete mode 100644 CineCool/app/src/main/java/fr/iut/cinecool/DetailActivity.kt diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/ApiClient.kt b/CineCool/app/src/main/java/fr/iut/cinecool/ApiClient.kt deleted file mode 100644 index ff126be..0000000 --- a/CineCool/app/src/main/java/fr/iut/cinecool/ApiClient.kt +++ /dev/null @@ -1,55 +0,0 @@ -package fr.iut.cinecool - -class ApiClient { - - companion object { - - /*private const val BASE_URL = "https://api.themoviedb.org/3/" - - fun create(): ApiService { - - val gson = GsonBuilder() - .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") - .create() - - val logger = HttpLoggingInterceptor() - logger.level = HttpLoggingInterceptor.Level.BASIC - - val client = OkHttpClient.Builder() - .addInterceptor(logger) - .build() - - val retrofit = Retrofit.Builder() - .baseUrl(BASE_URL) - .addConverterFactory(GsonConverterFactory.create(gson)) - .client(client) - .build() - - return retrofit.create(ApiService::class.java) - } - - val retrofit = Retrofit.Builder() - .baseUrl("https://api.themoviedb.org/3/") - .addConverterFactory(GsonConverterFactory.create()) - .build() - - val movieApiService = retrofit.create(ApiService::class.java) - - val apiKey = "a97243d7813d31446f6c43284e6854d5" - val call = movieApiService.getPopularMovies(apiKey) - - - call.enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { - // Code à exécuter lorsque la réponse est reçue - val movies = response.body()?.results - // Traitez les films renvoyés ici - } - - override fun onFailure(call: Call, t: Throwable) { - // Code à exécuter en cas d'échec de la requête - } - }) - */ - } -} diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/DetailActivity.kt b/CineCool/app/src/main/java/fr/iut/cinecool/DetailActivity.kt deleted file mode 100644 index 32975b8..0000000 --- a/CineCool/app/src/main/java/fr/iut/cinecool/DetailActivity.kt +++ /dev/null @@ -1,35 +0,0 @@ -package fr.iut.cinecool - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity - -class DetailActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.vu_detail) - - // Récupérer l'identifiant du film depuis les extras de l'intent - val movieId = intent.getIntExtra("movieId", -1) - - // Appeler la méthode pour charger les détails du film - // loadMovieDetails(movieId) - } - - /*private fun loadMovieDetails(movieId: Int) { - val apiClient = TheMovieDbApiClient(getString(R.string.tmdb_api_key)) - apiClient.getMovieDetails(movieId, object : ITheMovieDbApiCallback { - override fun onSuccess(result: MovieAPI) { - // Afficher les détails du film dans la vue - titreFilm.text = result.title - description.text = result.overview - Picasso.get().load("https://image.tmdb.org/t/p/w500/${result.posterPath}").into(afficheFilm) - } - - override fun onError(error: Throwable) { - // Gérer l'erreur de récupération des détails du film - } - }) - }*/ - -} \ No newline at end of file diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt index 98df4ed..b3ac11f 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt @@ -1,75 +1,53 @@ package fr.iut.cinecool import android.os.Bundle +import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast -import androidx.fragment.app.Fragment -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext +import androidx.navigation.fragment.findNavController +import com.bumptech.glide.Glide +import fr.iut.cinecool.API.Movie +// import fr.iut.cinecool.databinding.FragmentMovieDetailBinding class MovieDetailFragment : Fragment() { -/* - private lateinit var binding: FragmentMovieDetailBinding - - override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?, savedInstanceState: Bundle?): View - { - binding = FragmentMovieDetailBinding.inflate(inflater, container, false) + /*private var _binding: FragmentDetailMovieBinding? = null + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + _binding = FragmentDetailMovieBinding.inflate(inflater, container, false) return binding.root } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) - { + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val movieId = arguments?.getInt(ARG_MOVIE_ID) + // Récupérez le film passé en argument + val movie: Movie? = arguments?.getParcelable("movie") + + // Mettez à jour les vues avec les données du film + if (movie != null) { + binding.titreFilm.text = movie.title + binding.description.text = movie.overview - // Appel de l'API pour récupérer les détails du film - CoroutineScope(Dispatchers.IO).launch { - val response = movieId?.let { MovieApiService().getMovieDetails(it) } - withContext(Dispatchers.Main) - { - if (response != null) { - if (response.isSuccessful) - { - val movie = response.body() - if (movie != null) - { - // Affichage des détails du film dans l'interface utilisateur - binding.titreFilm.text = movie.title - binding.description.text = movie.overview - binding.afficheFilm.load("https://image.tmdb.org/t/p/w500${movie.posterPath}") // Utilisation de la librairie Coil pour charger l'image - } - } else - { - Toast.makeText( - requireContext(), - getString(R.string.error_loading_movie), - Toast.LENGTH_SHORT - ).show() - } - } - } + val imageUrl = "https://image.tmdb.org/t/p/w500${movie.poster_path}" + Glide.with(binding.afficheFilm.context) + .load(imageUrl) + .placeholder(R.drawable.imitation_game) + .into(binding.afficheFilm) } - // Ajout d'un écouteur de clic pour le bouton de retour + + // Gérer le clic sur le bouton de retour binding.backButton.setOnClickListener { - requireActivity().onBackPressed() + findNavController().popBackStack() } } - companion object { - private const val ARG_MOVIE_ID = "movie_id" - - fun newInstance(movieId: Int): MovieDetailFragment { - val args = Bundle().apply { - putInt(ARG_MOVIE_ID, movieId) - } - return MovieDetailFragment().apply { - arguments = args - } - } + override fun onDestroyView() { + super.onDestroyView() + _binding = null }*/ -} \ No newline at end of file +} + diff --git a/CineCool/app/src/main/res/navigation/nav_graph.xml b/CineCool/app/src/main/res/navigation/nav_graph.xml index 811578a..8bedb89 100644 --- a/CineCool/app/src/main/res/navigation/nav_graph.xml +++ b/CineCool/app/src/main/res/navigation/nav_graph.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_graph" app:startDestination="@id/fragment_movies"> + + + + + + + + + \ No newline at end of file