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 @@ + + + + + + + + + + \ 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