diff --git a/src/app/build.gradle b/src/app/build.gradle index e700609..012d3ac 100644 --- a/src/app/build.gradle +++ b/src/app/build.gradle @@ -33,10 +33,14 @@ android { } dependencies { - implementation 'com.github.bumptech.glide:glide:4.12.0' + // Navigation implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3' implementation 'androidx.navigation:navigation-ui-ktx:2.5.3' + + //Glide + implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.8.0' diff --git a/src/app/src/main/java/uca/iut/clermont/data/StubData.kt b/src/app/src/main/java/uca/iut/clermont/data/StubData.kt index 1ce14d0..8f4c42c 100644 --- a/src/app/src/main/java/uca/iut/clermont/data/StubData.kt +++ b/src/app/src/main/java/uca/iut/clermont/data/StubData.kt @@ -247,56 +247,76 @@ class StubData : DataManager() { ) private val random = java.util.Random() - val matchList = listOf( - Match( - 1, - 1, - 2, - Calendar.getInstance().apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) }, - "FINISHED", - Score(1, 1, "DRAW") - ), - Match( - 2, - 3, - 1, - Calendar.getInstance().apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) }, - "FINISHED", - Score(2, 0, "HOME_TEAM") - ), - Match( - 3, - 2, - 3, - Calendar.getInstance().apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) }, - "FINISHED", - Score(0, 4, "AWAY_TEAM") - ), - Match( - 4, - 1, - 3, - Calendar.getInstance().apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) }, - "FINISHED", - Score(0, 1, "AWAY_TEAM") - ), - Match( - 5, - 2, - 1, - Calendar.getInstance().apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) }, - "FINISHED", - Score(0, 0, "DRAW") - ), - Match( - 6, - 3, - 2, - Calendar.getInstance().apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) }, - "FINISHED", - Score(2, 0, "HOME_TEAM") + val matchList: MutableList = mutableListOf() + + fun initMatches() { + matchList.add( + Match( + 1, + teamList[0], + teamList[1], + Calendar.getInstance() + .apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) }, + "FINISHED", + Score(1, 1, "DRAW") + ) ) - ) + matchList.add( + Match( + 2, + teamList[2], + teamList[0], + Calendar.getInstance() + .apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) }, + "FINISHED", + Score(2, 0, "HOME_TEAM") + ) + ) + matchList.add( + Match( + 3, + teamList[1], + teamList[2], + Calendar.getInstance() + .apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) }, + "FINISHED", + Score(0, 4, "AWAY_TEAM") + ) + ) + matchList.add( + Match( + 4, + teamList[0], + teamList[2], + Calendar.getInstance() + .apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) }, + "FINISHED", + Score(0, 1, "AWAY_TEAM") + ) + ) + matchList.add( + Match( + 5, + teamList[1], + teamList[0], + Calendar.getInstance() + .apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) }, + "FINISHED", + Score(0, 0, "DRAW") + ) + ) + matchList.add( + Match( + 6, + teamList[2], + teamList[1], + Calendar.getInstance() + .apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) }, + "FINISHED", + Score(2, 0, "HOME_TEAM") + ) + ) + } val teamList: MutableList = mutableListOf() @@ -313,8 +333,8 @@ class StubData : DataManager() { "Navy / Red", areaList[0], "Parc des Princes", - peopleList[0] as Coach, - listOf(peopleList[2] as Staff), + peopleList[13] as Coach, + listOf(peopleList[15] as Staff), listOf(peopleList[0] as Player, peopleList[3] as Player, peopleList[11] as Player) ) ) @@ -330,9 +350,9 @@ class StubData : DataManager() { "Blue / Red", areaList[3], "Camp Nou", - peopleList[0] as Coach, - listOf(peopleList[2] as Staff), - listOf(peopleList[0] as Player, peopleList[5] as Player, peopleList[9] as Player) + peopleList[14] as Coach, + listOf(peopleList[16] as Staff), + listOf(peopleList[2] as Player, peopleList[5] as Player, peopleList[9] as Player) ) ) teamList.add( @@ -347,8 +367,8 @@ class StubData : DataManager() { "Red", areaList[2], "Anfield", - peopleList[1] as Coach, - listOf(peopleList[3] as Staff), + peopleList[14] as Coach, + listOf(peopleList[15] as Staff), listOf(peopleList[7] as Player, peopleList[8] as Player, peopleList[10] as Player) ) ) @@ -375,8 +395,6 @@ class StubData : DataManager() { } class StubMatchesManager(private val parent: StubData) : MatchesManager { - override fun getItemsByName(substring: String) = - throw java.lang.Exception("Don't call this function") override fun getItems(): List = parent.matchList diff --git a/src/app/src/main/java/uca/iut/clermont/model/ApiManager.kt b/src/app/src/main/java/uca/iut/clermont/model/ApiManager.kt index 2e4062a..758caa2 100644 --- a/src/app/src/main/java/uca/iut/clermont/model/ApiManager.kt +++ b/src/app/src/main/java/uca/iut/clermont/model/ApiManager.kt @@ -45,9 +45,6 @@ class ApiManager : DataManager() { } class ApiMatchesManager : MatchesManager { - override fun getItemsByName(substring: String): List { - TODO("Not yet implemented") - } override fun getItems(): List { TODO("Not yet implemented") diff --git a/src/app/src/main/java/uca/iut/clermont/model/DataManager.kt b/src/app/src/main/java/uca/iut/clermont/model/DataManager.kt index 5a1021d..d3d2140 100644 --- a/src/app/src/main/java/uca/iut/clermont/model/DataManager.kt +++ b/src/app/src/main/java/uca/iut/clermont/model/DataManager.kt @@ -9,12 +9,21 @@ abstract class DataManager { } -interface AreaManager : GenericDataManager +interface AreaManager : GenericDataManager { + fun getItemsByName(substring: String): List +} -interface PeopleManager : GenericDataManager +interface PeopleManager : GenericDataManager { + fun getItemsByName(substring: String): List +} interface MatchesManager : GenericDataManager -interface CompetitionsManager : GenericDataManager +interface CompetitionsManager : GenericDataManager { + fun getItemsByName(substring: String): List +} + +interface TeamsManager : GenericDataManager { + fun getItemsByName(substring: String): List -interface TeamsManager : GenericDataManager \ No newline at end of file +} \ No newline at end of file diff --git a/src/app/src/main/java/uca/iut/clermont/model/GenericDataManager.kt b/src/app/src/main/java/uca/iut/clermont/model/GenericDataManager.kt index 44edf22..fd4d299 100644 --- a/src/app/src/main/java/uca/iut/clermont/model/GenericDataManager.kt +++ b/src/app/src/main/java/uca/iut/clermont/model/GenericDataManager.kt @@ -1,7 +1,6 @@ package uca.iut.clermont.model interface GenericDataManager { - fun getItemsByName(substring: String): List fun getItems(): List fun getItemById(id: Int): T? } \ No newline at end of file diff --git a/src/app/src/main/java/uca/iut/clermont/model/Match.kt b/src/app/src/main/java/uca/iut/clermont/model/Match.kt index 3651f84..930cbef 100644 --- a/src/app/src/main/java/uca/iut/clermont/model/Match.kt +++ b/src/app/src/main/java/uca/iut/clermont/model/Match.kt @@ -4,8 +4,8 @@ import java.util.Calendar class Match( val id: Int, - val idHomeTeam: Int, - val idAwayTeam: Int, + val homeTeam: Team, + val awayTeam: Team, val date: Calendar, val status: String, val score: Score diff --git a/src/app/src/main/java/uca/iut/clermont/view/HomeFragment.kt b/src/app/src/main/java/uca/iut/clermont/view/HomeFragment.kt index cda9eed..1a64d5d 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/HomeFragment.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/HomeFragment.kt @@ -5,7 +5,11 @@ 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 uca.iut.clermont.R +import uca.iut.clermont.model.Match +import uca.iut.clermont.view.adapter.MatchesAdapter class HomeFragment : Fragment() { @@ -15,14 +19,23 @@ class HomeFragment : Fragment() { savedInstanceState: Bundle? ): View? { - /*val adapterMatches = findViewById(R.id.ListRecentsMatches) + val view = inflater.inflate(R.layout.fragment_home, container, false) + val matches = (activity as MainActivity).manager.matchesMgr.getItems() - with(adapterMatches) { - adapter = MatchesAdapter(manager.matchesMgr.getItems().toList().toTypedArray()) - } + initRecyclerView(view, matches) + return view + } - adapterMatches.layoutManager = LinearLayoutManager(this)*/ + private fun initRecyclerView(view: View, matches: List) { + val recyclerViewMatches = view.findViewById(R.id.ListRecentsMatches) + with(recyclerViewMatches) { + layoutManager = LinearLayoutManager(view.context) + adapter = MatchesAdapter(matches.toList().toTypedArray()) + + } - return inflater.inflate(R.layout.fragment_home, container, false) } + + + } \ No newline at end of file diff --git a/src/app/src/main/java/uca/iut/clermont/view/MainActivity.kt b/src/app/src/main/java/uca/iut/clermont/view/MainActivity.kt index 0a23a58..01f7fa5 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/MainActivity.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/MainActivity.kt @@ -1,26 +1,54 @@ package uca.iut.clermont.view -import android.app.Activity +import android.os.Build import android.os.Bundle +import androidx.annotation.RequiresApi +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import androidx.navigation.NavController -import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment import uca.iut.clermont.R import uca.iut.clermont.data.StubData -class MainActivity : Activity() { - private var manager = StubData() +class MainActivity : AppCompatActivity() { + + var manager = StubData() private lateinit var navController: NavController + + @RequiresApi(Build.VERSION_CODES.R) + private fun hideSystemUI() { + WindowCompat.setDecorFitsSystemWindows(window, false) + WindowInsetsControllerCompat( + window, + window.decorView.findViewById(android.R.id.content) + ).let { controller -> + controller.hide(WindowInsetsCompat.Type.systemBars()) + controller.systemBarsBehavior = + WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + } + + } + + + @RequiresApi(Build.VERSION_CODES.R) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + hideSystemUI() setContentView(R.layout.activity_main) + supportActionBar?.hide() + + manager.initTeams() + manager.initMatches() - val navHostFragment = findNavController(R.id.fragment) as NavHostFragment + val navHostFragment = + supportFragmentManager.findFragmentById(R.id.fragment) as NavHostFragment - navController = navHostFragment.navController + val navController = navHostFragment.navController //val imageFirstTeam = findViewById(R.id.ImageFirstTeam) /*Glide.with(this) @@ -29,4 +57,6 @@ class MainActivity : Activity() { .into(imageFirstTeam)*/ } + + } \ No newline at end of file diff --git a/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt b/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt index e9178f4..9780b6c 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt @@ -7,13 +7,18 @@ import uca.iut.clermont.R import uca.iut.clermont.model.Match import uca.iut.clermont.view.viewHolder.MatchHolder -class MatchesAdapter(val recentMatches: Array) : RecyclerView.Adapter() { +class MatchesAdapter(private val recentMatches: Array) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MatchHolder { - return MatchHolder(LayoutInflater.from(parent.context).inflate(R.layout.cellule_match, parent, false)) + return MatchHolder( + LayoutInflater.from(parent.context).inflate(R.layout.cellule_match, parent, false) + ) } override fun onBindViewHolder(holder: MatchHolder, position: Int) { - holder.textView.text = recentMatches[position].id.toString() + holder.titleFirstTeam.text = recentMatches[position].homeTeam.name + holder.titleSecondTeam.text = recentMatches[position].awayTeam.name + holder.scoreHomeTeam.text = recentMatches[position].score.home.toString() + holder.scoreAwayTeam.text = recentMatches[position].score.away.toString() } override fun getItemCount() = recentMatches.size diff --git a/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt b/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt index 87b4182..ec4322c 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt @@ -6,11 +6,18 @@ import androidx.recyclerview.widget.RecyclerView import uca.iut.clermont.R class MatchHolder(view: View) : RecyclerView.ViewHolder(view) { - val textView: TextView + val titleFirstTeam: TextView + val titleSecondTeam: TextView + val scoreHomeTeam: TextView + val scoreAwayTeam: TextView init { // Define click listener for the ViewHolder's View - textView = view.findViewById(R.id.TitleFirstTeam) + titleFirstTeam = view.findViewById(R.id.TitleFirstTeam) + titleSecondTeam = view.findViewById(R.id.TitleSecondTeam) + scoreHomeTeam = view.findViewById(R.id.ScoreHomeTeam) + scoreAwayTeam = view.findViewById(R.id.ScoreAwayTeam) + } diff --git a/src/app/src/main/res/layout/activity_main.xml b/src/app/src/main/res/layout/activity_main.xml index 674d1e6..53f6705 100644 --- a/src/app/src/main/res/layout/activity_main.xml +++ b/src/app/src/main/res/layout/activity_main.xml @@ -6,15 +6,19 @@ android:layout_height="match_parent" tools:context=".view.MainActivity"> - + app:navGraph="@navigation/my_nav" /> + + \ No newline at end of file diff --git a/src/app/src/main/res/layout/cellule_favorite.xml b/src/app/src/main/res/layout/cellule_favorite.xml index 1b710e5..7200197 100644 --- a/src/app/src/main/res/layout/cellule_favorite.xml +++ b/src/app/src/main/res/layout/cellule_favorite.xml @@ -1,8 +1,8 @@ + android:layout_height="wrap_content"> + android:textSize="16sp" /> - + + + + + + + + + android:textSize="18sp" /> @@ -96,11 +118,12 @@ android:layout_height="60dp" /> + android:textSize="16sp" /> diff --git a/src/app/src/main/res/layout/fragment_favorite.xml b/src/app/src/main/res/layout/fragment_favorite.xml index 1863152..0294ab2 100644 --- a/src/app/src/main/res/layout/fragment_favorite.xml +++ b/src/app/src/main/res/layout/fragment_favorite.xml @@ -46,5 +46,4 @@ app:layout_constraintTop_toBottomOf="@+id/exitContainer" /> - \ No newline at end of file