diff --git a/CineCool/app/build.gradle b/CineCool/app/build.gradle
index e5353a1..39e2f4d 100644
--- a/CineCool/app/build.gradle
+++ b/CineCool/app/build.gradle
@@ -9,7 +9,7 @@ android {
defaultConfig {
applicationId "fr.iut.cinecool"
- minSdk 21
+ minSdk 19
targetSdk 33
versionCode 1
versionName "1.0"
@@ -36,7 +36,6 @@ android {
}
dependencies {
-
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
@@ -44,6 +43,13 @@ dependencies {
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 'com.google.android.gms:play-services-maps:18.1.0'
+ implementation 'androidx.fragment:fragment-ktx:1.5.6'
+ implementation 'androidx.multidex:multidex:2.0.1'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
+ implementation 'androidx.core:core-ktx:+'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
@@ -65,6 +71,10 @@ dependencies {
// Jetpack Compose Integration
implementation("androidx.navigation:navigation-compose:2.5.3")
+ // Map
+ implementation 'org.osmdroid:osmdroid-android:6.1.10'
+ implementation 'com.github.MKergall:osmbonuspack:6.6.0'
+
// API
implementation "com.squareup.okhttp3:okhttp:4.9.3"
implementation "com.squareup.okhttp3:logging-interceptor:4.9.3"
@@ -72,10 +82,6 @@ dependencies {
implementation 'com.squareup.retrofit2:retrofit: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'
- implementation 'androidx.multidex:multidex:2.0.1'
- implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
- implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
}
\ No newline at end of file
diff --git a/CineCool/app/src/main/AndroidManifest.xml b/CineCool/app/src/main/AndroidManifest.xml
index 248342b..953d85d 100644
--- a/CineCool/app/src/main/AndroidManifest.xml
+++ b/CineCool/app/src/main/AndroidManifest.xml
@@ -1,36 +1,30 @@
-
+ package="com.example.myapplication">
-
-
-
-
+
+
+
+
-
-
+ android:theme="@style/AppTheme">
+
+
+
+
-
-
\ No newline at end of file
+
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/OpenStreetMap/ApiService.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/OpenStreetMap/ApiService.kt
new file mode 100644
index 0000000..38090af
--- /dev/null
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/OpenStreetMap/ApiService.kt
@@ -0,0 +1,16 @@
+package fr.iut.cinecool.API.OpenStreetMap
+
+import retrofit2.Call
+import retrofit2.http.GET
+import retrofit2.http.Headers
+import retrofit2.http.Query
+
+interface ApiService {
+ @Headers("User-Agent: MyApp")
+ @GET("search")
+ fun searchCinemas(
+ @Query("q") query: String,
+ @Query("format") format: String = "json",
+ @Query("limit") limit: Int = 10
+ ): Call>
+}
\ No newline at end of file
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/OpenStreetMap/CinemaResponse.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/OpenStreetMap/CinemaResponse.kt
new file mode 100644
index 0000000..cb627fc
--- /dev/null
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/OpenStreetMap/CinemaResponse.kt
@@ -0,0 +1,17 @@
+package fr.iut.cinecool.API.OpenStreetMap
+
+import com.google.gson.annotations.SerializedName
+
+data class Cinema(
+ @SerializedName("place_id")
+ val placeId: Long,
+
+ @SerializedName("lat")
+ val latitude: Double,
+
+ @SerializedName("lon")
+ val longitude: Double,
+
+ @SerializedName("display_name")
+ val displayName: String
+)
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/OpenStreetMap/Repository.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/OpenStreetMap/Repository.kt
new file mode 100644
index 0000000..158e658
--- /dev/null
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/OpenStreetMap/Repository.kt
@@ -0,0 +1,34 @@
+package fr.iut.cinecool.API.OpenStreetMap
+
+import android.location.Location
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+class Repository {
+ private fun fetchNearbyCinemas(location: Location) {
+ val retrofit = Retrofit.Builder()
+ .baseUrl("https://nominatim.openstreetmap.org/")
+ .addConverterFactory(GsonConverterFactory.create())
+ .build()
+
+ val nominatimService = retrofit.create(NominatimService::class.java)
+ val call = nominatimService.searchCinemas("cinema near ${location.latitude},${location.longitude}")
+ call.enqueue(object : Callback> {
+ override fun onResponse(call: Call>, response: Response>) {
+ if (response.isSuccessful) {
+ val cinemas = response.body() ?: emptyList()
+ displayCinemas(cinemas)
+ }
+ }
+
+ override fun onFailure(call: Call>, t: Throwable) {
+ // Gérer l'erreur
+ }
+ })
+ }
+
+
+}
\ No newline at end of file
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/ApiClient.kt
similarity index 92%
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/ApiClient.kt
index 178d92e..f3f8e27 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/API/ApiClient.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/THMDB/ApiClient.kt
@@ -1,4 +1,4 @@
-package fr.iut.cinecool.API
+package fr.iut.cinecool.API.THMDB
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
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 91%
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..b5830e9 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,4 +1,4 @@
-package fr.iut.cinecool.API
+package fr.iut.cinecool.API.THMDB
class Repository {
private val apiService = ApiClient.apiService
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..302e3ad 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,61 @@
package fr.iut.cinecool
-import android.content.Intent
+import android.Manifest
+import android.content.pm.PackageManager
+import android.location.Location
import android.os.Bundle
-import android.widget.EditText
-import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.app.ActivityCompat
+import androidx.core.content.ContextCompat
+import com.google.android.gms.location.FusedLocationProviderClient
+import com.google.android.gms.location.LocationServices
+import fr.iut.cinecool.fragments.CinemaListFragment
class MainActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
+
+ private lateinit var fusedLocationClient: FusedLocationProviderClient
+ private val locationPermissionRequestCode = 1
+
+ override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
- val loginButton = findViewById(R.id.loginButton)
- loginButton.setOnClickListener(){
- login()
+
+ fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
+
+ if (savedInstanceState == null) {
+ supportFragmentManager.beginTransaction()
+ .add(R.id.fragment_container, CinemaListFragment())
+ .commit()
}
+ requestLocationPermission()
+ }
- /*ActivityCompat.requestPermissions(this,
- arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,1)
- )*/
+ private fun requestLocationPermission() {
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED
+ ) {
+ ActivityCompat.requestPermissions(
+ this,
+ arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
+ locationPermissionRequestCode
+ )
+ }
}
- 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)
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int,
+ permissions: Array,
+ grantResults: IntArray
+ ) {
+ if (requestCode == locationPermissionRequestCode) {
+ if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ // La permission de localisation a été accordée, vous pouvez effectuer les actions correspondantes
+ } else {
+ // La permission de localisation a été refusée, vous devez gérer ce cas
+ }
}
}
}
+
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/adapter/CinemaAdapter.kt b/CineCool/app/src/main/java/fr/iut/cinecool/adapter/CinemaAdapter.kt
new file mode 100644
index 0000000..10c8868
--- /dev/null
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/adapter/CinemaAdapter.kt
@@ -0,0 +1,43 @@
+package fr.iut.cinecool.adapter
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import fr.iut.cinecool.API.OpenStreetMap.Cinema
+import fr.iut.cinecool.R
+
+class CinemaAdapter(private val onCinemaClickListener: (Cinema) -> Unit) :
+ RecyclerView.Adapter() {
+
+ private val cinemas = mutableListOf()
+
+ fun updateCinemas(newCinemas: List) {
+ cinemas.clear()
+ cinemas.addAll(newCinemas)
+ notifyDataSetChanged()
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CinemaViewHolder {
+ val itemView = LayoutInflater.from(parent.context).inflate(R.layout.item_cinema, parent, false)
+ return CinemaViewHolder(itemView, onCinemaClickListener)
+ }
+
+ override fun onBindViewHolder(holder: CinemaViewHolder, position: Int) {
+ holder.bind(cinemas[position])
+ }
+
+ override fun getItemCount(): Int = cinemas.size
+
+ class CinemaViewHolder(itemView: View, private val onCinemaClickListener: (Cinema) -> Unit) :
+ RecyclerView.ViewHolder(itemView) {
+
+ private val cinemaNameTextView: TextView = itemView.findViewById(R.id.cinemaNameTextView)
+
+ fun bind(cinema: Cinema) {
+ cinemaNameTextView.text = cinema.displayName
+ itemView.setOnClickListener { onCinemaClickListener(cinema) }
+ }
+ }
+}
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..8d25979 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,47 +8,33 @@ 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() {
- var onItemClick : ((Movie)->Unit)?=null
- class MovieViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView = itemView.findViewById(R.id.imageView)
- val MovieName = itemView.findViewById(R.id.MovieName)
- val OtherInformations = itemView.findViewById(R.id.OtherInformations)
- }
+class MovieAdapter : RecyclerView.Adapter() {
+
+ private var movies: List = emptyList()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MovieViewHolder {
- val view = LayoutInflater.from(parent.context).inflate(R.layout.movie, parent, false)
+ val view = LayoutInflater.from(parent.context).inflate(R.layout.movie_item, parent, false)
return MovieViewHolder(view)
}
- override fun getItemCount(): Int {
- return moviesList.size
+ override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
+ holder.bind(movies[position])
}
- override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
- val movie = moviesList[position]
- val imageUrl = "https://image.tmdb.org/t/p/w500${movie.poster_path}"
-
- Glide.with(holder.itemView.context)
- .load(imageUrl)
- .placeholder(R.drawable.imitation_game)
- .into(holder.imageView)
-
- holder.MovieName.text = movie.title
- holder.OtherInformations.text = movie.overview
- holder.itemView.setOnClickListener {
- onItemClick?.invoke(movie)
- }
+ override fun getItemCount(): Int = movies.size
- // Pour cet exemple, je mets l'overview en tant qu'OtherInformations, vous pouvez le personnaliser selon vos besoins
+ fun setMovies(movies: List) {
+ this.movies = movies
+ notifyDataSetChanged()
}
- // Ajoutez cette méthode pour mettre à jour la liste des films
- fun updateMovies(newMovies: List) {
- moviesList = newMovies
- notifyDataSetChanged()
+ class MovieViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ private val titleTextView: TextView = itemView.findViewById(R.id.titleTextView)
+
+ fun bind(movie: Movie) {
+ titleTextView.text = movie.title
+ }
}
-}
\ No newline at end of file
+}
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/fragments/CinemaDetailFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/CinemaDetailFragment.kt
new file mode 100644
index 0000000..17ccb79
--- /dev/null
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/CinemaDetailFragment.kt
@@ -0,0 +1,57 @@
+package fr.iut.cinecool.fragments
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import fr.iut.cinecool.API.OpenStreetMap.Cinema
+import fr.iut.cinecool.R
+import fr.iut.cinecool.adapter.MovieAdapter
+
+class CinemaDetailFragment : Fragment() {
+
+ private lateinit var cinemaNameTextView: TextView
+ private lateinit var recyclerView: RecyclerView
+ private lateinit var adapter: MovieAdapter
+ private lateinit var cinema: Cinema
+
+ companion object {
+ private const val ARG_CINEMA = "cinema"
+
+ fun newInstance(cinema: Cinema): CinemaDetailFragment {
+ val fragment = CinemaDetailFragment()
+ val args = Bundle()
+ args.putParcelable(ARG_CINEMA, cinema)
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ cinema = arguments?.getParcelable(ARG_CINEMA) ?: throw IllegalStateException("Cinema not provided")
+ }
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+ return inflater.inflate(R.layout.fragment_cinema_detail, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ cinemaNameTextView = view.findViewById(R.id.cinemaNameTextView)
+ recyclerView = view.findViewById(R.id.recyclerView)
+ recyclerView.layoutManager = LinearLayoutManager(requireContext())
+
+ adapter = MovieAdapter()
+ recyclerView.adapter = adapter
+
+ cinemaNameTextView.text = cinema.displayName
+
+ // Récupérez et affichez la liste des films à l'affiche pour le cinéma sélectionné
+ }
+}
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/CinemaFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/CinemaFragment.kt
similarity index 88%
rename from CineCool/app/src/main/java/fr/iut/cinecool/CinemaFragment.kt
rename to CineCool/app/src/main/java/fr/iut/cinecool/fragments/CinemaFragment.kt
index 2bf909b..4187c35 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/CinemaFragment.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/CinemaFragment.kt
@@ -1,10 +1,11 @@
-package fr.iut.cinecool
+package fr.iut.cinecool.fragments
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import fr.iut.cinecool.R
class CinemaFragment : Fragment() {
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/fragments/CinemaListFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/CinemaListFragment.kt
new file mode 100644
index 0000000..a6765d6
--- /dev/null
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/CinemaListFragment.kt
@@ -0,0 +1,45 @@
+package fr.iut.cinecool.fragments
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.google.android.gms.location.FusedLocationProviderClient
+import com.google.android.gms.location.LocationServices
+import fr.iut.cinecool.R
+import fr.iut.cinecool.adapter.CinemaAdapter
+
+class CinemaListFragment : Fragment() {
+
+ private lateinit var recyclerView: RecyclerView
+ private lateinit var adapter: CinemaAdapter
+ private lateinit var fusedLocationClient: FusedLocationProviderClient
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+ return inflater.inflate(R.layout.fragment_cinema_list, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ recyclerView = view.findViewById(R.id.recyclerView)
+ recyclerView.layoutManager = LinearLayoutManager(requireContext())
+
+ adapter = CinemaAdapter { cinema ->
+ val fragment = CinemaDetailFragment.newInstance(cinema)
+ requireActivity().supportFragmentManager.beginTransaction()
+ .replace(R.id.fragment_container, fragment)
+ .addToBackStack(null)
+ .commit()
+ }
+
+ recyclerView.adapter = adapter
+
+ fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireActivity())
+
+ // Récupérez la position de l'utilisateur et affichez les cinémas à proximité
+ }
+}
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MapFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MapFragment.kt
new file mode 100644
index 0000000..8e5c9cf
--- /dev/null
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MapFragment.kt
@@ -0,0 +1,45 @@
+package fr.iut.cinecool.fragments
+
+import android.content.res.Configuration
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+//import androidx.lifecycle.viewmodel.CreationExtras.Empty.map
+import com.google.android.gms.maps.CameraUpdateFactory
+import com.google.android.gms.maps.GoogleMap
+import com.google.android.gms.maps.SupportMapFragment
+import com.google.android.gms.maps.model.LatLng
+import com.google.android.gms.maps.model.MarkerOptions
+
+class MapFragment : Fragment() {
+/*
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.fragment_map)
+
+ map = findViewById(R.id.map)
+
+ SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)
+ mapFragment.getMapAsync(this)
+ }
+
+ override fun onMapReady(googleMap: GoogleMap) {
+ this.gMap = googleMap
+
+ val mapIndia = LatLng(20.5937, 789629)
+ this.gMap.addMarker(MarkerOptions().position(mapIndia).title("Marker in India"))
+ this.gMap.moveCamera(CameraUpdateFactory.newLatLng(mapIndia))
+ }
+
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+
+ }
+
+ // TODO https://youtu.be/JzxjNNCYt_o
+ // https://console.cloud.google.com/apis/credentials?hl=fr&project=upbeat-grammar-382309
+ */
+}
\ 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/fragments/MovieDetailFragment.kt
similarity index 86%
rename from CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt
rename to CineCool/app/src/main/java/fr/iut/cinecool/fragments/MovieDetailFragment.kt
index de6b77e..2c8562b 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MovieDetailFragment.kt
@@ -1,12 +1,7 @@
-package fr.iut.cinecool
+package fr.iut.cinecool.fragments
-import android.os.Bundle
import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.navigation.fragment.findNavController
-import fr.iut.cinecool.API.Movie
+
// import fr.iut.cinecool.databinding.FragmentMovieDetailBinding
class MovieDetailFragment : Fragment() {
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/MoviesFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MoviesFragment.kt
similarity index 95%
rename from CineCool/app/src/main/java/fr/iut/cinecool/MoviesFragment.kt
rename to CineCool/app/src/main/java/fr/iut/cinecool/fragments/MoviesFragment.kt
index 0de6f9a..60e58e5 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/MoviesFragment.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/MoviesFragment.kt
@@ -1,6 +1,5 @@
-package fr.iut.cinecool
+package fr.iut.cinecool.fragments
-import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
@@ -10,6 +9,8 @@ import androidx.fragment.app.viewModels
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
+import fr.iut.cinecool.viewModel.MovieViewModel
+import fr.iut.cinecool.R
import fr.iut.cinecool.adapter.MovieAdapter
import fr.iut.cinecool.databinding.FragmentMoviesBinding
import fr.iut.cinecool.model.cineViewModel
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/SessionFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/SessionFragment.kt
similarity index 92%
rename from CineCool/app/src/main/java/fr/iut/cinecool/SessionFragment.kt
rename to CineCool/app/src/main/java/fr/iut/cinecool/fragments/SessionFragment.kt
index 4734e9b..9d9437e 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/SessionFragment.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/fragments/SessionFragment.kt
@@ -1,4 +1,4 @@
-package fr.iut.cinecool
+package fr.iut.cinecool.fragments
import android.os.Bundle
import android.text.method.ScrollingMovementMethod
@@ -6,15 +6,13 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.Button
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.API.Movie
-import fr.iut.cinecool.databinding.FragmentSessionBinding
+import fr.iut.cinecool.R
import fr.iut.cinecool.model.cineViewModel
class SessionFragment : Fragment() {
diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/model/cineViewModel.kt b/CineCool/app/src/main/java/fr/iut/cinecool/model/cineViewModel.kt
index cbc149f..3612a7a 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/model/cineViewModel.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/model/cineViewModel.kt
@@ -3,13 +3,14 @@ package fr.iut.cinecool.model
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/MovieViewModel.kt b/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt
similarity index 87%
rename from CineCool/app/src/main/java/fr/iut/cinecool/MovieViewModel.kt
rename to CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt
index 14f1a2a..1a19080 100644
--- a/CineCool/app/src/main/java/fr/iut/cinecool/MovieViewModel.kt
+++ b/CineCool/app/src/main/java/fr/iut/cinecool/viewModel/MovieViewModel.kt
@@ -1,11 +1,11 @@
-package fr.iut.cinecool
+package fr.iut.cinecool.viewModel
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
index b21508c..59dcc15 100644
--- a/CineCool/app/src/main/res/layout/activity_main.xml
+++ b/CineCool/app/src/main/res/layout/activity_main.xml
@@ -1,65 +1,18 @@
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintTop_toTopOf="parent" />
-
\ No newline at end of file
+
diff --git a/CineCool/app/src/main/res/layout/fragment_cinema.xml b/CineCool/app/src/main/res/layout/fragment_cinema.xml
index f4e118c..891b233 100644
--- a/CineCool/app/src/main/res/layout/fragment_cinema.xml
+++ b/CineCool/app/src/main/res/layout/fragment_cinema.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".CinemaFragment">
+ tools:context=".fragments.CinemaFragment">
+
+
+
+
+
+
+
diff --git a/CineCool/app/src/main/res/layout/fragment_cinema_list.xml b/CineCool/app/src/main/res/layout/fragment_cinema_list.xml
new file mode 100644
index 0000000..54dd807
--- /dev/null
+++ b/CineCool/app/src/main/res/layout/fragment_cinema_list.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
diff --git a/CineCool/app/src/main/res/layout/fragment_container.xml b/CineCool/app/src/main/res/layout/fragment_container.xml
new file mode 100644
index 0000000..17008a0
--- /dev/null
+++ b/CineCool/app/src/main/res/layout/fragment_container.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/CineCool/app/src/main/res/layout/fragment_map.xml b/CineCool/app/src/main/res/layout/fragment_map.xml
new file mode 100644
index 0000000..96ffe29
--- /dev/null
+++ b/CineCool/app/src/main/res/layout/fragment_map.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/CineCool/app/src/main/res/layout/fragment_movies.xml b/CineCool/app/src/main/res/layout/fragment_movies.xml
index 8dfadcf..306c087 100644
--- a/CineCool/app/src/main/res/layout/fragment_movies.xml
+++ b/CineCool/app/src/main/res/layout/fragment_movies.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".MoviesFragment">
+ tools:context=".fragments.MoviesFragment">
+ tools:context=".fragments.SessionFragment">
+
+
+
+
+
diff --git a/CineCool/app/src/main/res/layout/movie_item.xml b/CineCool/app/src/main/res/layout/movie_item.xml
new file mode 100644
index 0000000..e1b756b
--- /dev/null
+++ b/CineCool/app/src/main/res/layout/movie_item.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/CineCool/app/src/main/res/navigation/nav_graph.xml b/CineCool/app/src/main/res/navigation/nav_graph.xml
index c05711b..019aa0d 100644
--- a/CineCool/app/src/main/res/navigation/nav_graph.xml
+++ b/CineCool/app/src/main/res/navigation/nav_graph.xml
@@ -7,13 +7,13 @@
@@ -28,7 +28,7 @@
Hello second fragment. Arg: %1$s
erreur de chargement des films
a97243d7813d31446f6c43284e6854d5
+ Movie Title
\ No newline at end of file
diff --git a/CineCool/app/src/main/res/xml/osmdroid_config.xml b/CineCool/app/src/main/res/xml/osmdroid_config.xml
new file mode 100644
index 0000000..053924c
--- /dev/null
+++ b/CineCool/app/src/main/res/xml/osmdroid_config.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
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