diff --git a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/RepositoryListAdapter.kt b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/RepositoryListAdapter.kt index 88e318f..6d866bd 100644 --- a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/RepositoryListAdapter.kt +++ b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/RepositoryListAdapter.kt @@ -12,10 +12,18 @@ class RepositoryListAdapter(private val dataSet: List, private val o class ViewHolder(view: View, private val onClick: (Repository) -> Unit) : RecyclerView.ViewHolder(view) { private val repositoryNameView: TextView + private val repositoryDescriptionView: TextView + private val repositoryStarsView: TextView + private val repositoryLanguageView: TextView + private val repositoryForksView: TextView private var currentRepository: Repository? = null init { - repositoryNameView = view.findViewById(R.id.repository_name) + repositoryNameView = view.findViewById(R.id.repo_name) + repositoryDescriptionView = view.findViewById(R.id.repo_description) + repositoryStarsView = view.findViewById(R.id.repo_stars) + repositoryLanguageView = view.findViewById(R.id.repo_language) + repositoryForksView = view.findViewById(R.id.repo_forks) itemView.setOnClickListener { currentRepository?.let { onClick(it) @@ -23,15 +31,42 @@ class RepositoryListAdapter(private val dataSet: List, private val o } } - fun bind(repository: Repository) { - repositoryNameView.text = repository.name + fun bind(repository: Repository?) { + if (repository == null) { + val resources = itemView.resources + repositoryNameView.text = resources.getString(R.string.loading) + repositoryDescriptionView.visibility = View.GONE + repositoryStarsView.text = resources.getString(R.string.unknown) + repositoryLanguageView.visibility = View.GONE + repositoryForksView.text = resources.getString(R.string.unknown) + } else { + repositoryNameView.text = repository.name + + var descriptionVisibility = View.GONE + if (repository.description != null) { + repositoryDescriptionView.text = repository.description + descriptionVisibility = View.VISIBLE + } + repositoryDescriptionView.visibility = descriptionVisibility + + repositoryStarsView.text = repository.stars.toString() + repositoryForksView.text = repository.forks.toString() + + var languageVisibility = View.GONE + if (!repository.language.isNullOrEmpty()) { + val resources = this.itemView.context.resources + repositoryLanguageView.text = resources.getString(R.string.language, repository.language) + languageVisibility = View.VISIBLE + } + repositoryLanguageView.visibility = languageVisibility + } currentRepository = repository } } override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(viewGroup.context) - .inflate(R.layout.repository_row_item, viewGroup, false) + .inflate(R.layout.repository_view_item, viewGroup, false) return ViewHolder(view, onClick) } diff --git a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/model/Repository.kt b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/model/Repository.kt index 372d4f4..ce369a2 100644 --- a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/model/Repository.kt +++ b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/model/Repository.kt @@ -1,3 +1,12 @@ package fr.uca.iut.clfreville2.teaiswarm.model -data class Repository(val owner: Owner, val name: String, val stars: Int = 0) +import com.squareup.moshi.Json + +data class Repository( + val owner: Owner, + val name: String, + val description: String? = null, + @Json(name = "stars_count") val stars: Int = 0, + @Json(name = "forks_count") val forks: Int = 0, + val language: String? = null +) diff --git a/app/src/main/res/drawable/ic_git_branch.xml b/app/src/main/res/drawable/ic_git_branch.xml new file mode 100644 index 0000000..4238087 --- /dev/null +++ b/app/src/main/res/drawable/ic_git_branch.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/drawable/ic_star.xml b/app/src/main/res/drawable/ic_star.xml new file mode 100644 index 0000000..abf86bb --- /dev/null +++ b/app/src/main/res/drawable/ic_star.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/main/res/layout/repository_view_item.xml b/app/src/main/res/layout/repository_view_item.xml new file mode 100644 index 0000000..6fc53b4 --- /dev/null +++ b/app/src/main/res/layout/repository_view_item.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f8c6127..d24ca34 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,4 +7,7 @@ #FF018786 #FF000000 #FFFFFFFF + + #1F75FE + #551F75FE \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 125df87..fc26e13 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,3 +1,11 @@ 16dp + 12dp + 12dp + 24sp + 16sp + 24dp + 36dp + 32dp + 24sp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ad23dda..701b627 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,4 +8,7 @@ Previous Next + Language: %s + Loading + Unknown \ No newline at end of file diff --git a/build.gradle b/build.gradle index 6a0d096..61ca049 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.4.2' apply false - id 'com.android.library' version '7.4.2' apply false + id 'com.android.application' version '7.3.0' apply false + id 'com.android.library' version '7.3.0' apply false id 'org.jetbrains.kotlin.android' version '1.8.20-RC' apply false } \ No newline at end of file