diff --git a/README.md b/README.md
index cfec8c5..d72261b 100644
--- a/README.md
+++ b/README.md
@@ -138,6 +138,7 @@ Team --> "-area" Area
Match --> "-HomeTeam" Team
Match --> "-AwayTeam" Team
+Match --> "-competition" Competition
Competition --> "-area" Area
Competition --> "-currentSeason" Season
diff --git a/src/.idea/codeStyles/Project.xml b/src/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..7643783
--- /dev/null
+++ b/src/.idea/codeStyles/Project.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/codeStyles/codeStyleConfig.xml b/src/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/src/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/.idea/.gitignore b/src/app/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/src/app/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/src/app/.idea/gradle.xml b/src/app/.idea/gradle.xml
new file mode 100644
index 0000000..b898c0a
--- /dev/null
+++ b/src/app/.idea/gradle.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/.idea/misc.xml b/src/app/.idea/misc.xml
new file mode 100644
index 0000000..6ff4d26
--- /dev/null
+++ b/src/app/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/.idea/vcs.xml b/src/app/.idea/vcs.xml
new file mode 100644
index 0000000..b2bdec2
--- /dev/null
+++ b/src/app/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/build.gradle b/src/app/build.gradle
index 012d3ac..a0d5155 100644
--- a/src/app/build.gradle
+++ b/src/app/build.gradle
@@ -40,6 +40,7 @@ dependencies {
//Glide
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
+ implementation 'com.caverock:androidsvg:1.4'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
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 ff47bc5..eb06041 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
@@ -258,7 +258,8 @@ class StubData : DataManager() {
Calendar.getInstance()
.apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) },
"FINISHED",
- Score(1, 1, "DRAW")
+ Score(1, 1, "DRAW"),
+ competitionList[1]
)
)
matchList.add(
@@ -269,7 +270,8 @@ class StubData : DataManager() {
Calendar.getInstance()
.apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) },
"FINISHED",
- Score(2, 0, "HOME_TEAM")
+ Score(2, 0, "HOME_TEAM"),
+ competitionList[0]
)
)
matchList.add(
@@ -280,7 +282,8 @@ class StubData : DataManager() {
Calendar.getInstance()
.apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) },
"FINISHED",
- Score(0, 4, "AWAY_TEAM")
+ Score(0, 4, "AWAY_TEAM"),
+ competitionList[0]
)
)
matchList.add(
@@ -291,7 +294,8 @@ class StubData : DataManager() {
Calendar.getInstance()
.apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) },
"FINISHED",
- Score(0, 1, "AWAY_TEAM")
+ Score(0, 1, "AWAY_TEAM"),
+ competitionList[0]
)
)
matchList.add(
@@ -302,7 +306,8 @@ class StubData : DataManager() {
Calendar.getInstance()
.apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) },
"FINISHED",
- Score(0, 0, "DRAW")
+ Score(0, 0, "DRAW"),
+ competitionList[1]
)
)
matchList.add(
@@ -313,7 +318,8 @@ class StubData : DataManager() {
Calendar.getInstance()
.apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) },
"FINISHED",
- Score(2, 0, "HOME_TEAM")
+ Score(2, 0, "HOME_TEAM"),
+ competitionList[0]
)
)
}
@@ -343,7 +349,7 @@ class StubData : DataManager() {
2,
"FC Barcelona",
"BAR",
- "https://upload.wikimedia.org/wikipedia/fr/thumb/a/a1/Logo_FC_Barcelona.svg/1200px-Logo_FC_Barcelona.svg.png",
+ "https://crests.football-data.org/109.svg",
"Carrer d'Aristides Maillol, s/n, 08028 Barcelona, Spain",
"https://www.fcbarcelona.com/",
"1899",
@@ -434,6 +440,11 @@ class StubData : DataManager() {
}
class StubMatchesManager(private val parent: StubData) : MatchesManager {
+ override fun getNbItemsByCompetition(substring: String) =
+ parent.matchList.filter { it.competition.name.contains(substring) }.count()
+
+ override fun getItemsByCompetition(substring: String) =
+ parent.matchList.filter { it.competition.name.contains(substring) }
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 758caa2..fa61f01 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,6 +45,13 @@ class ApiManager : DataManager() {
}
class ApiMatchesManager : MatchesManager {
+ override fun getNbItemsByCompetition(substring: String): Int {
+ TODO("Not yet implemented")
+ }
+
+ override fun getItemsByCompetition(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 d3d2140..264f18a 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
@@ -17,7 +17,12 @@ interface PeopleManager : GenericDataManager {
fun getItemsByName(substring: String): List
}
-interface MatchesManager : GenericDataManager
+interface MatchesManager : GenericDataManager {
+ fun getNbItemsByCompetition(substring: String): Int
+
+ fun getItemsByCompetition(substring: String): List
+
+}
interface CompetitionsManager : GenericDataManager {
fun getItemsByName(substring: String): List
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 930cbef..30b1dd1 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
@@ -8,5 +8,6 @@ class Match(
val awayTeam: Team,
val date: Calendar,
val status: String,
- val score: Score
+ val score: Score,
+ val competition: Competition
)
\ No newline at end of file
diff --git a/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt b/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt
index faf446a..5b5efa8 100644
--- a/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt
+++ b/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt
@@ -5,13 +5,22 @@ 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.Fragment
import androidx.navigation.fragment.findNavController
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
import uca.iut.clermont.R
+import uca.iut.clermont.model.Competition
+import uca.iut.clermont.view.adapter.MatchesAdapter
+import java.text.SimpleDateFormat
class DetailFragment : Fragment() {
private var isLiked = false
+ private lateinit var competition: Competition
override fun onCreateView(
inflater: LayoutInflater,
@@ -21,8 +30,24 @@ class DetailFragment : Fragment() {
val view = inflater.inflate(R.layout.fragment_detail, container, false)
+ val id = arguments?.getInt("idItem")!!
+
+ competition = (activity as MainActivity).manager.competitionsMgr.getItemById(id)!!
+
+ initializeView(view)
+ initRecyclerView(view)
+
+ return view;
+ }
+
+ private fun initializeView(view: View) {
val button = view.findViewById(R.id.buttonLike)
val buttonExit = view.findViewById(R.id.buttonExit)
+ val imageHeader = view.findViewById(R.id.imageDetail)
+ val titleHeader = view.findViewById(R.id.title)
+ val nbMatches = view.findViewById(R.id.nbMatches)
+ val dateEnd = view.findViewById(R.id.dateEnd)
+ val dateStart = view.findViewById(R.id.dateStart)
buttonExit.setOnClickListener {
findNavController().navigate(R.id.favoriteFragment)
@@ -30,11 +55,44 @@ class DetailFragment : Fragment() {
button.setOnClickListener {
isLiked = !isLiked
-
button.setImageResource(if (isLiked) R.drawable.full_like else R.drawable.empty_like)
}
- return view;
+ Glide.with(view.context)
+ .load(competition.emblem)
+ .error(R.drawable.imagenotfound)
+ .into(imageHeader)
+
+ titleHeader.text = competition.name
+ var date = competition.currentSeason.endDate
+
+ var formatter = SimpleDateFormat("dd-MM-yyyy")
+ var formattedDate = formatter.format(date.time)
+
+ dateEnd.text = formattedDate
+
+ date = competition.currentSeason.startDate
+
+ formatter = SimpleDateFormat("dd-MM-yyyy")
+ formattedDate = formatter.format(date.time)
+
+ dateStart.text = formattedDate
+
+ nbMatches.text =
+ (activity as MainActivity).manager.matchesMgr.getNbItemsByCompetition(competition.name)
+ .toString()
}
+
+ private fun initRecyclerView(view: View) {
+ val recyclerViewMatches = view.findViewById(R.id.listRecentsMatches)
+ with(recyclerViewMatches) {
+ layoutManager = LinearLayoutManager(view.context)
+ adapter = MatchesAdapter(
+ (activity as MainActivity).manager.matchesMgr.getItemsByCompetition(competition.name)
+ .toList().toTypedArray()
+ )
+ }
+
+ }
}
\ No newline at end of file
diff --git a/src/app/src/main/java/uca/iut/clermont/view/FavoriteFragment.kt b/src/app/src/main/java/uca/iut/clermont/view/FavoriteFragment.kt
index ca8c75e..c21d06b 100644
--- a/src/app/src/main/java/uca/iut/clermont/view/FavoriteFragment.kt
+++ b/src/app/src/main/java/uca/iut/clermont/view/FavoriteFragment.kt
@@ -24,8 +24,20 @@ class FavoriteFragment : Fragment(), FavoritesAdapter.OnItemClickListener {
): View? {
val view = inflater.inflate(R.layout.fragment_favorite, container, false)
var competitions = (activity as MainActivity).manager.competitionsMgr.getItems()
+
+ initRecyclerView(view, competitions, this)
+ initializeView(view)
+
+ return view
+ }
+
+ private fun navigate() {
+ findNavController().navigate(R.id.homeFragment)
+ }
+
+ private fun initializeView(view: View) {
var buttonHome = view.findViewById(R.id.buttonHome)
- val buttonTextFavorite = view.findViewById