diff --git a/CineCool/app/build.gradle b/CineCool/app/build.gradle
index e5353a1..01eb0df 100644
--- a/CineCool/app/build.gradle
+++ b/CineCool/app/build.gradle
@@ -37,13 +37,15 @@ android {
dependencies {
- implementation 'androidx.core:core-ktx:1.9.0'
+ implementation 'androidx.core:core-ktx:1.10.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
implementation 'com.google.android.gms:play-services-location:21.0.1'
+ implementation 'androidx.core:core-ktx:1.10.0'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
@@ -69,7 +71,7 @@ dependencies {
implementation "com.squareup.okhttp3:okhttp:4.9.3"
implementation "com.squareup.okhttp3:logging-interceptor:4.9.3"
implementation "com.google.code.gson:gson:2.8.9"
- implementation 'com.squareup.retrofit2:retrofit:2.9.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'androidx.fragment:fragment-ktx:1.5.6'
diff --git a/CineCool/app/src/main/AndroidManifest.xml b/CineCool/app/src/main/AndroidManifest.xml
index 248342b..0603c3a 100644
--- a/CineCool/app/src/main/AndroidManifest.xml
+++ b/CineCool/app/src/main/AndroidManifest.xml
@@ -17,14 +17,12 @@
android:supportsRtl="true"
android:theme="@style/Theme.CineCool"
tools:targetApi="31">
-
+ android:theme="@style/Theme.CineCool.NoActionBar"
+ tools:ignore="DuplicateActivity">
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/OSM/ApiClientOSM.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/OSM/ApiClientOSM.kt
new file mode 100644
index 0000000..db11957
--- /dev/null
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/OSM/ApiClientOSM.kt
@@ -0,0 +1,25 @@
+package fr.iut.cinecool.API.OSM
+
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+object ApiClientOSM {
+ private const val OSM_BASE_URL = "https://nominatim.openstreetmap.org/"
+ private const val ORS_BASE_URL = "https://api.openrouteservice.org/"
+
+ fun getOSMClient(): ApiService {
+ return Retrofit.Builder()
+ .baseUrl(OSM_BASE_URL)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build()
+ .create(ApiService::class.java)
+ }
+
+ fun getORSClient(): ApiService {
+ return Retrofit.Builder()
+ .baseUrl(ORS_BASE_URL)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build()
+ .create(ApiService::class.java)
+ }
+}
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/OSM/ApiService.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/OSM/ApiService.kt
new file mode 100644
index 0000000..4b238a3
--- /dev/null
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/OSM/ApiService.kt
@@ -0,0 +1,22 @@
+package fr.iut.cinecool.API.OSM
+
+import fr.iut.cinecool.model.CinemaResult
+import fr.iut.cinecool.model.RouteResult
+import retrofit2.Call
+import retrofit2.http.GET
+import retrofit2.http.Query
+
+interface ApiService {
+ @GET("search")
+ fun searchCinemas(
+ @Query("q") query: String,
+ @Query("format") format: String = "json"
+ ): Call>
+
+ @GET("v2/directions/driving-car")
+ fun getRoute(
+ @Query("api_key") apiKey: String,
+ @Query("start") start: String,
+ @Query("end") end: String
+ ): Call
+}
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/ApiClient.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/ApiClientTHMDB.kt
similarity index 86%
rename from CineCool/app/src/main/java/fr/iut/cinecool/API/ApiClient.kt
rename to CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/ApiClientTHMDB.kt
index 178d92e..cc548fa 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/API/ApiClient.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/ApiClientTHMDB.kt
@@ -1,9 +1,9 @@
-package fr.iut.cinecool.API
+package fr.iut.cinecool.API.THMDB
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
-object ApiClient {
+object ApiClientTHMDB {
private const val BASE_URL = "https://api.themoviedb.org/3/"
private val retrofit: Retrofit = Retrofit.Builder()
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/ApiService.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/ApiService.kt
similarity index 92%
rename from CineCool/app/src/main/java/fr/iut/cinecool/API/ApiService.kt
rename to CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/ApiService.kt
index 81012be..1fc1174 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/API/ApiService.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/ApiService.kt
@@ -1,4 +1,4 @@
-package fr.iut.cinecool.API
+package fr.iut.cinecool.API.THMDB
import retrofit2.http.GET
import retrofit2.http.Query
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/MovieResponse.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/MovieResponse.kt
similarity index 96%
rename from CineCool/app/src/main/java/fr/iut/cinecool/API/MovieResponse.kt
rename to CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/MovieResponse.kt
index 862daa3..56454cc 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/API/MovieResponse.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/MovieResponse.kt
@@ -1,4 +1,4 @@
-package fr.iut.cinecool.API
+package fr.iut.cinecool.API.THMDB
import android.os.Parcel
import android.os.Parcelable
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/Repository.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/Repository.kt
similarity index 78%
rename from CineCool/app/src/main/java/fr/iut/cinecool/API/Repository.kt
rename to CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/Repository.kt
index 5894918..d9d05e3 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/API/Repository.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/Repository.kt
@@ -1,7 +1,7 @@
-package fr.iut.cinecool.API
+package fr.iut.cinecool.API.THMDB
class Repository {
- private val apiService = ApiClient.apiService
+ private val apiService = ApiClientTHMDB.apiService
suspend fun getPopularMovies(apiKey: String, page: Int): MovieResponse {
return apiService.getPopularMovies(apiKey, page)
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/CinemaActivity.kt b/CineCool/app/src/main/java/fr/iut/cinecool/CinemaActivity.kt
deleted file mode 100644
index 7ad53b5..0000000
--- a/CineCool/app/src/main/java/fr/iut/cinecool/CinemaActivity.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package fr.iut.cinecool
-
-import android.app.Activity
-import androidx.appcompat.app.AppCompatActivity
-import android.os.Bundle
-import androidx.navigation.NavController
-import androidx.navigation.fragment.NavHostFragment
-
-class CinemaActivity : AppCompatActivity() {
- private lateinit var navController: NavController
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_cinema)
- val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragment) as NavHostFragment
- navController = navHostFragment.navController
- }
-
-}
\ No newline at end of file
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/MainActivity.kt b/CineCool/app/src/main/java/fr/iut/cinecool/MainActivity.kt
index d6d302e..2a8c655 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/MainActivity.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/MainActivity.kt
@@ -1,32 +1,17 @@
package fr.iut.cinecool
-import android.content.Intent
-import android.os.Bundle
-import android.widget.EditText
-import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import androidx.navigation.NavController
+import androidx.navigation.fragment.NavHostFragment
class MainActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
+ private lateinit var navController: NavController
+ override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- val loginButton = findViewById(R.id.loginButton)
- loginButton.setOnClickListener(){
- login()
- }
-
-
- /*ActivityCompat.requestPermissions(this,
- arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,1)
- )*/
- }
- fun login(){
- val name = findViewById(R.id.name).text
- if (name.isNotEmpty()){
- val intent = Intent(applicationContext,CinemaActivity::class.java)
- startActivity(intent)
- System.out.println(name)
- }
+ setContentView(R.layout.activity_master)
+ val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragment) as NavHostFragment
+ navController = navHostFragment.navController
}
-}
+}
\ No newline at end of file
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/adapter/MovieAdapter.kt b/CineCool/app/src/main/java/fr/iut/cinecool/adapter/MovieAdapter.kt
index b999383..dae6658 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/adapter/MovieAdapter.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/adapter/MovieAdapter.kt
@@ -8,7 +8,7 @@ import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import fr.iut.cinecool.R
-import fr.iut.cinecool.API.Movie
+import fr.iut.cinecool.API.THMDB.Movie
class MovieAdapter(private var moviesList: List) :
RecyclerView.Adapter() {
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/data/Stub.kt b/CineCool/app/src/main/java/fr/iut/cinecool/data/Stub.kt
deleted file mode 100644
index 2341384..0000000
--- a/CineCool/app/src/main/java/fr/iut/cinecool/data/Stub.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package fr.iut.cinecool.data
-
-import fr.iut.cinecool.R
-import fr.iut.cinecool.model.Cinema
-import fr.iut.cinecool.model.Movie
-import fr.iut.cinecool.model.Session
-import java.util.Date
-
-class Stub(var sessions:ArrayList = ArrayList(), var movies:ArrayList = ArrayList(), var cinemas:ArrayList = ArrayList()) {
- fun loading(){
- val date = Date(2023,3,12)
- sessions.addAll(listOf(Session(0,date,14,16,"2A"), Session(1,date,4,6,"5B")))
- movies.add(Movie(1,"trop bg",2,"Pas moi",2.0, R.drawable.no_pictures))
- movies.add(Movie(0,"Imitation Game",4,"Moi",3.0,R.drawable.imitation_game))
- cinemas.add(Cinema(0,12367,67894,"clf","CineJaude"))
- cinemas.add(Cinema(1,87634,43567,"Aubière","CGR Le Paris"))
- }
-}
\ No newline at end of file
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MovieDetailFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MovieDetailFragment.kt
index c3c933c..4cd957a 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MovieDetailFragment.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MovieDetailFragment.kt
@@ -1,52 +1,51 @@
package fr.iut.cinecool.fragments
import android.os.Bundle
+import android.text.method.ScrollingMovementMethod
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.ImageButton
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
-import fr.iut.cinecool.API.Movie
-// import fr.iut.cinecool.databinding.FragmentMovieDetailBinding
+import com.bumptech.glide.Glide
+import fr.iut.cinecool.R
+import fr.iut.cinecool.viewModel.cineViewModel
class MovieDetailFragment : Fragment() {
- /*private var _binding: FragmentDetailMovieBinding? = null
- private val binding get() = _binding!!
+ private val sharedViewModel: cineViewModel by activityViewModels()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- _binding = FragmentDetailMovieBinding.inflate(inflater, container, false)
- return binding.root
+ // Inflate the layout for this fragment
+ val view = inflater.inflate(R.layout.fragment_detail, container, false)
+ return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
-
- // 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
-
- 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)
- }
-
- // Gérer le clic sur le bouton de retour
- binding.backButton.setOnClickListener {
- findNavController().popBackStack()
+ init()
+ val button = view.findViewById(R.id.returnButton)
+ button.setOnClickListener {
+ findNavController().navigate(R.id.action_SessionFragment_to_fragment_movies)
}
}
-
- override fun onDestroyView() {
- super.onDestroyView()
- _binding = null
- }*/
-}
-
+ private fun init() {
+ requireView().findViewById(R.id.title).text= sharedViewModel.cine.value?.title
+ val desc = requireView().findViewById(R.id.description)
+ desc.text=sharedViewModel.cine.value?.overview
+ desc.isScrollContainer = true
+ desc.movementMethod = ScrollingMovementMethod()
+ val img=requireView().findViewById(R.id.afficheFilm)
+
+ val imageUrl = "https://image.tmdb.org/t/p/w500${sharedViewModel.cine.value?.poster_path}"
+
+ Glide.with(this.requireContext())
+ .load(imageUrl)
+ .placeholder(R.drawable.no_pictures)
+ .into(img)
+ }
+}
\ No newline at end of file
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/fragments/SessionFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/SessionFragment.kt
deleted file mode 100644
index df62431..0000000
--- a/CineCool/app/src/main/java/fr/iut/cinecool/fragments/SessionFragment.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-package fr.iut.cinecool.fragments
-
-import android.os.Bundle
-import android.text.method.ScrollingMovementMethod
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageButton
-import android.widget.ImageView
-import android.widget.TextView
-import androidx.fragment.app.activityViewModels
-import androidx.navigation.fragment.findNavController
-import com.bumptech.glide.Glide
-import fr.iut.cinecool.R
-import fr.iut.cinecool.viewModel.cineViewModel
-
-class SessionFragment : Fragment() {
- private val sharedViewModel: cineViewModel by activityViewModels()
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- // Inflate the layout for this fragment
- val view = inflater.inflate(R.layout.fragment_session, container, false)
- return view
- }
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- init()
- val button = view.findViewById(R.id.returnButton)
- button.setOnClickListener {
- findNavController().navigate(R.id.action_SessionFragment_to_fragment_movies)
- }
- }
- private fun init() {
- requireView().findViewById(R.id.title).text= sharedViewModel.cine.value?.title
- val desc = requireView().findViewById(R.id.description)
- desc.text=sharedViewModel.cine.value?.overview
- desc.isScrollContainer = true
- desc.movementMethod = ScrollingMovementMethod()
- val img=requireView().findViewById(R.id.afficheFilm)
-
- val imageUrl = "https://image.tmdb.org/t/p/w500${sharedViewModel.cine.value?.poster_path}"
-
- Glide.with(this.requireContext())
- .load(imageUrl)
- .placeholder(R.drawable.no_pictures)
- .into(img)
- }
-}
\ No newline at end of file
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/model/Cinema.kt b/CineCool/app/src/main/java/fr/iut/cinecool/model/Cinema.kt
index 6368c5e..f2ebcdf 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/model/Cinema.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/model/Cinema.kt
@@ -1,3 +1,23 @@
package fr.iut.cinecool.model
-data class Cinema (val id:Int, val latitude:Int, val longitude:Int, val city:String, val name:String, /*var movies:ArrayList*/)
\ No newline at end of file
+data class CinemaResult(
+ val lat: Double,
+ val lon: Double,
+ val display_name: String
+)
+
+data class RouteResult(
+ val routes: List
+)
+
+data class Route(
+ val segments: List
+)
+
+data class Segment(
+ val steps: List
+)
+
+data class Step(
+ val instruction: String
+)
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/CineViewModel.kt b/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/CineViewModel.kt
index f8507d8..d5fcee1 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/CineViewModel.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/CineViewModel.kt
@@ -3,13 +3,14 @@ package fr.iut.cinecool.viewModel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
+import fr.iut.cinecool.API.THMDB.Movie
class cineViewModel : ViewModel() {
- private val _cine = MutableLiveData()
- val cine: LiveData = _cine
+ private val _cine = MutableLiveData()
+ val cine: LiveData = _cine
- fun setCine(cine: fr.iut.cinecool.API.Movie) {
+ fun setCine(cine: Movie) {
_cine.value = cine
}
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt b/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt
index 3d0b0c0..1a19080 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt
@@ -4,8 +4,8 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.launch
import androidx.lifecycle.MutableLiveData
-import fr.iut.cinecool.API.Movie
-import fr.iut.cinecool.API.Repository
+import fr.iut.cinecool.API.THMDB.Movie
+import fr.iut.cinecool.API.THMDB.Repository
class MovieViewModel : ViewModel() {
private val repository = Repository()
diff --git a/CineCool/app/src/main/res/layout/activity_main.xml b/CineCool/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index b21508c..0000000
--- a/CineCool/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/CineCool/app/src/main/res/layout/activity_cinema.xml b/CineCool/app/src/main/res/layout/activity_master.xml
similarity index 89%
rename from CineCool/app/src/main/res/layout/activity_cinema.xml
rename to CineCool/app/src/main/res/layout/activity_master.xml
index 28d1ee9..d10d6f4 100644
--- a/CineCool/app/src/main/res/layout/activity_cinema.xml
+++ b/CineCool/app/src/main/res/layout/activity_master.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".CinemaActivity">
+ tools:context=".MainActivity">
+ tools:context=".fragments.MovieDetailFragment">
+ tools:layout="@layout/fragment_detail">
diff --git a/CineCool/build.gradle b/CineCool/build.gradle
index 3e76939..71ad002 100644
--- a/CineCool/build.gradle
+++ b/CineCool/build.gradle
@@ -2,5 +2,5 @@
plugins {
id 'com.android.application' version '7.4.2' apply false
id 'com.android.library' version '7.4.2' apply false
- id 'org.jetbrains.kotlin.android' version '1.8.20-RC2' apply false
+ id 'org.jetbrains.kotlin.android' version '1.8.20' apply false
}
\ No newline at end of file