Implemented Badge and Minor Code Refactor

This commit is contained in:
Neel Doshi 2024-12-02 01:07:08 +05:30
parent 871c0ffb94
commit 21af5b4627
4 changed files with 268 additions and 223 deletions

View file

@ -6,10 +6,14 @@ import android.util.DisplayMetrics
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.ViewTreeObserver
import android.widget.Toast
import androidx.appcompat.view.ContextThemeWrapper
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
import com.google.android.material.badge.BadgeDrawable
import com.google.android.material.badge.BadgeUtils
import com.google.android.material.badge.ExperimentalBadgeUtils
import fr.free.nrw.commons.R
import fr.free.nrw.commons.Utils
import fr.free.nrw.commons.auth.SessionManager
@ -64,9 +68,9 @@ class AchievementsFragment : CommonsDaggerSupportFragment(){
binding.imagesUploadInfoIcon.setOnClickListener { showUploadInfo() }
binding.imagesRevertedInfoIcon.setOnClickListener { showRevertedInfo() }
binding.imagesUsedByWikiInfoIcon.setOnClickListener { showUsedByWikiInfo() }
binding.imagesNearbyInfoIcon.setOnClickListener { showImagesViaNearbyInfo() }
binding.imagesFeaturedInfoIcon.setOnClickListener { showFeaturedImagesInfo() }
binding.thanksReceivedInfoIcon.setOnClickListener { showThanksReceivedInfo() }
//binding.imagesNearbyInfoIcon.setOnClickListener { showImagesViaNearbyInfo() }
//binding.imagesFeaturedInfoIcon.setOnClickListener { showFeaturedImagesInfo() }
//binding.thanksReceivedInfoIcon.setOnClickListener { showThanksReceivedInfo() }
binding.qualityImageIcon.setOnClickListener { showQualityImagesInfo() }
// DisplayMetrics used to fetch the size of the screen
@ -84,9 +88,6 @@ class AchievementsFragment : CommonsDaggerSupportFragment(){
binding.progressBar.visibility = View.VISIBLE
setHasOptionsMenu(true)
// Set the initial value of WikiData edits to 0
binding.wikidataEdits.text = "0"
if (sessionManager.userName == null || sessionManager.userName == userName) {
binding.tvAchievementsOfUser.visibility = View.GONE
} else {
@ -94,14 +95,7 @@ class AchievementsFragment : CommonsDaggerSupportFragment(){
binding.tvAchievementsOfUser.text = getString(R.string.achievements_of_user, userName)
}
if (isBetaFlavour) {
binding.progressBar.visibility = View.GONE
binding.imagesUsedCount.setText(R.string.no_image)
binding.imagesRevertedText.setText(R.string.no_image_reverted)
binding.imagesUploadTextParam.setText(R.string.no_image_uploaded)
binding.wikidataEdits.text = "0"
binding.imageFeatured.text = "0"
binding.qualityImages.text = "0"
binding.achievementLevel.text = "0"
binding.layout.visibility = View.GONE
setMenuVisibility(true)
return binding.root
}
@ -212,7 +206,7 @@ class AchievementsFragment : CommonsDaggerSupportFragment(){
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ edits: Int ->
numberOfEdits = edits
binding.wikidataEdits.text = edits.toString()
showBadgesWithCount(view = binding.wikidataEditsIcon, count = edits)
}, { e: Throwable ->
Timber.e("Error:$e")
})
@ -351,15 +345,22 @@ class AchievementsFragment : CommonsDaggerSupportFragment(){
* and assign badge and level. Also stores the achievements level of the user in BasicKvStore to display in menu
* @param achievements
*/
// @OptIn(ExperimentalBadgeUtils::class)
private fun inflateAchievements(achievements: Achievements) {
// binding.imagesUsedByWikiProgressBar.setVisibility(View.VISIBLE);
binding.thanksReceived.text = achievements.thanksReceived.toString()
// Thanks Received Badge
showBadgesWithCount(view = binding.thanksImageIcon, count = achievements.thanksReceived)
// Featured Images Badge
showBadgesWithCount(view = binding.featuredImageIcon, count = achievements.featuredImages)
// Quality Images Badge
showBadgesWithCount(view = binding.qualityImageIcon, count = achievements.qualityImages)
binding.imagesUsedByWikiProgressBar.progress =
100 * achievements.uniqueUsedImages / levelInfo.maxUniqueImages
binding.imagesUsedCount.text = (achievements.uniqueUsedImages.toString() + "/"
+ levelInfo.maxUniqueImages)
binding.imageFeatured.text = achievements.featuredImages.toString()
binding.qualityImages.text = achievements.qualityImages.toString()
binding.achievementLevel.text = getString(R.string.level,levelInfo.levelNumber)
binding.achievementBadgeImage.setImageDrawable(
@ -373,6 +374,49 @@ class AchievementsFragment : CommonsDaggerSupportFragment(){
store.putString("userAchievementsLevel", levelInfo.levelNumber.toString())
}
/**
* This function is used to show badge on any view (button, imageView, etc)
* @param view The View on which the badge will be displayed eg (button, imageView, etc)
* @param count The number to be displayed inside the badge.
* @param backgroundColor The badge background color. Default is R.attr.colorPrimary
* @param badgeTextColor The badge text color. Default is R.attr.colorPrimary
* @param badgeGravity The position of the badge [TOP_END,TOP_START,BOTTOM_END,BOTTOM_START]. Default is TOP_END
* @return if the number is 0, then it will not create badge for it and hide the view
* @see https://developer.android.com/reference/com/google/android/material/badge/BadgeDrawable
*/
private fun showBadgesWithCount(
view: View,
count: Int,
backgroundColor: Int = R.attr.colorPrimary,
badgeTextColor: Int = R.attr.textEnabled,
badgeGravity: Int = BadgeDrawable.TOP_END
) {
//https://stackoverflow.com/a/67742035
if (count == 0) {
view.visibility = View.GONE
return
}
view.viewTreeObserver.addOnGlobalLayoutListener(object :
ViewTreeObserver.OnGlobalLayoutListener {
/**
* Callback method to be invoked when the global layout state or the visibility of views
* within the view tree changes
*/
@ExperimentalBadgeUtils
override fun onGlobalLayout() {
view.visibility = View.VISIBLE
val badgeDrawable = BadgeDrawable.create(requireActivity())
badgeDrawable.number = count
badgeDrawable.badgeGravity = badgeGravity
badgeDrawable.badgeTextColor = badgeTextColor
badgeDrawable.backgroundColor = backgroundColor
BadgeUtils.attachBadgeDrawable(badgeDrawable, binding.wikidataEditsIcon)
view.getViewTreeObserver().removeOnGlobalLayoutListener(this)
}
})
}
/**
* to hide progressbar

View file

@ -11,7 +11,7 @@
<!-- TODO Add ContentDescription For ALL Images Added ignore to suppress Lints -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/drawer_layout"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -283,234 +283,233 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal"
android:text="@string/statistics"
android:text="@string/badges"
android:textAllCaps="true"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/materialDivider2" />
<!--Nearby Places Statistics-->
<ImageView
android:id="@+id/wikidata_edits_icon"
android:layout_width="@dimen/dimen_40"
android:layout_height="@dimen/dimen_40"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_statistics"
app:srcCompat="@drawable/ic_custom_map_marker" />
<TextView
android:id="@+id/images_nearby_data"
style="?android:textAppearanceMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="@string/statistics_wikidata_edits"
app:layout_constraintBottom_toBottomOf="@+id/wikidata_edits_icon"
app:layout_constraintEnd_toStartOf="@+id/images_nearby_info_icon"
app:layout_constraintStart_toEndOf="@+id/wikidata_edits_icon"
app:layout_constraintTop_toTopOf="@+id/wikidata_edits_icon" />
<!-- <TextView-->
<!-- android:id="@+id/images_nearby_data"-->
<!-- style="?android:textAppearanceMedium"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginStart="16dp"-->
<!-- android:layout_marginEnd="16dp"-->
<!-- android:text="@string/statistics_wikidata_edits"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/wikidata_edits_icon"-->
<!-- app:layout_constraintEnd_toStartOf="@+id/images_nearby_info_icon"-->
<!-- app:layout_constraintStart_toEndOf="@+id/wikidata_edits_icon"-->
<!-- app:layout_constraintTop_toTopOf="@+id/wikidata_edits_icon" />-->
<ImageView
android:id="@+id/images_nearby_info_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toBottomOf="@+id/images_nearby_data"
app:layout_constraintEnd_toStartOf="@+id/wikidata_edits"
app:layout_constraintTop_toTopOf="@+id/images_nearby_data"
app:srcCompat="@drawable/ic_info_outline_24dp"
app:tint="@color/black" />
<!-- <ImageView-->
<!-- android:id="@+id/images_nearby_info_icon"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginEnd="16dp"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/images_nearby_data"-->
<!-- app:layout_constraintEnd_toStartOf="@+id/wikidata_edits"-->
<!-- app:layout_constraintTop_toTopOf="@+id/images_nearby_data"-->
<!-- app:srcCompat="@drawable/ic_info_outline_24dp"-->
<!-- app:tint="@color/black" />-->
<TextView
android:id="@+id/wikidata_edits"
style="?android:textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
app:layout_constraintBottom_toBottomOf="@+id/images_nearby_info_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/images_nearby_info_icon"
tools:text="2" />
<!-- <TextView-->
<!-- android:id="@+id/wikidata_edits"-->
<!-- style="?android:textAppearanceMedium"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/images_nearby_info_icon"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="@+id/images_nearby_info_icon"-->
<!-- tools:text="2" />-->
<com.google.android.material.divider.MaterialDivider
android:id="@+id/materialDivider3"
<!-- <com.google.android.material.divider.MaterialDivider-->
<!-- android:id="@+id/materialDivider3"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginStart="@dimen/activity_margin_horizontal"-->
<!-- android:layout_marginTop="@dimen/activity_margin_horizontal"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toBottomOf="@+id/wikidata_edits_icon" />-->
<!-- <TextView-->
<!-- android:id="@+id/images_featured_data"-->
<!-- style="?android:textAppearanceMedium"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginStart="@dimen/activity_margin_horizontal"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- android:text="@string/statistics_featured"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/featured_image_icon"-->
<!-- app:layout_constraintEnd_toStartOf="@+id/images_nearby_info_icon"-->
<!-- app:layout_constraintStart_toEndOf="@+id/featured_image_icon"-->
<!-- app:layout_constraintTop_toTopOf="@+id/featured_image_icon" />-->
<!-- <TextView-->
<!-- android:id="@+id/image_featured"-->
<!-- style="?android:textAppearanceMedium"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/images_featured_info_icon"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="@+id/images_featured_info_icon"-->
<!-- tools:text="2" />-->
<!-- <com.google.android.material.divider.MaterialDivider-->
<!-- android:id="@+id/materialDivider4"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginStart="@dimen/activity_margin_horizontal"-->
<!-- android:layout_marginTop="@dimen/activity_margin_horizontal"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toBottomOf="@+id/featured_image_icon" />-->
<LinearLayout
android:id="@+id/badgesItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:orientation="horizontal"
android:padding="@dimen/activity_margin_horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/wikidata_edits_icon" />
app:layout_constraintTop_toBottomOf="@+id/tv_statistics">
<!--Featured Image Statistics-->
<!--Nearby Places Statistics-->
<ImageView
android:id="@+id/wikidata_edits_icon"
android:layout_width="@dimen/dimen_40"
android:layout_height="@dimen/dimen_40"
android:layout_marginEnd="@dimen/medium_width"
app:srcCompat="@drawable/ic_custom_map_marker" />
<ImageView
android:id="@+id/featured_image_icon"
android:layout_width="@dimen/dimen_40"
android:layout_height="@dimen/dimen_40"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/materialDivider3"
app:srcCompat="@drawable/featured" />
<!--Featured Image Statistics-->
<ImageView
android:id="@+id/featured_image_icon"
android:layout_width="@dimen/dimen_40"
android:layout_height="@dimen/dimen_40"
android:layout_marginEnd="@dimen/medium_width"
app:srcCompat="@drawable/featured" />
<TextView
android:id="@+id/images_featured_data"
style="?android:textAppearanceMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:text="@string/statistics_featured"
app:layout_constraintBottom_toBottomOf="@+id/featured_image_icon"
app:layout_constraintEnd_toStartOf="@+id/images_nearby_info_icon"
app:layout_constraintStart_toEndOf="@+id/featured_image_icon"
app:layout_constraintTop_toTopOf="@+id/featured_image_icon" />
<!--Quality Image Statistics-->
<ImageView
android:id="@+id/quality_image_icon"
android:layout_width="@dimen/dimen_40"
android:layout_height="@dimen/dimen_40"
android:layout_marginEnd="@dimen/medium_width"
app:srcCompat="@drawable/ic_quality_images_logo" />
<!--Thank Image Statistics-->
<ImageView
android:id="@+id/thanks_image_icon"
android:layout_width="@dimen/dimen_40"
android:layout_height="@dimen/dimen_40"
android:layout_marginEnd="@dimen/medium_width"
app:srcCompat="@drawable/ic_thanks" />
<ImageView
android:id="@+id/images_featured_info_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toBottomOf="@+id/images_featured_data"
app:layout_constraintEnd_toStartOf="@+id/wikidata_edits"
app:layout_constraintTop_toTopOf="@+id/images_featured_data"
app:srcCompat="@drawable/ic_info_outline_24dp"
app:tint="@color/black" />
</LinearLayout>
<!-- <TextView-->
<!-- android:id="@+id/quality_images_data"-->
<!-- style="?android:textAppearanceMedium"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginStart="@dimen/activity_margin_horizontal"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- android:text="@string/statistics_quality"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/quality_image_icon"-->
<!-- app:layout_constraintEnd_toStartOf="@+id/images_nearby_info_icon"-->
<!-- app:layout_constraintStart_toEndOf="@+id/quality_image_icon"-->
<!-- app:layout_constraintTop_toTopOf="@+id/quality_image_icon" />-->
<!-- <ImageView-->
<!-- android:id="@+id/quality_images_info_icon"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginEnd="16dp"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/quality_images_data"-->
<!-- app:layout_constraintEnd_toStartOf="@+id/quality_images"-->
<!-- app:layout_constraintTop_toTopOf="@+id/quality_images_data"-->
<!-- app:srcCompat="@drawable/ic_info_outline_24dp"-->
<!-- app:tint="@color/black" />-->
<!-- <TextView-->
<!-- android:id="@+id/quality_images"-->
<!-- style="?android:textAppearanceMedium"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/quality_images_info_icon"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="@+id/quality_images_info_icon"-->
<!-- tools:text="2" />-->
<!-- <com.google.android.material.divider.MaterialDivider-->
<!-- android:id="@+id/materialDivider5"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginStart="@dimen/activity_margin_horizontal"-->
<!-- android:layout_marginTop="@dimen/activity_margin_horizontal"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toBottomOf="@+id/quality_image_icon" />-->
<TextView
android:id="@+id/image_featured"
style="?android:textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
app:layout_constraintBottom_toBottomOf="@+id/images_featured_info_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/images_featured_info_icon"
tools:text="2" />
<com.google.android.material.divider.MaterialDivider
android:id="@+id/materialDivider4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/featured_image_icon" />
<!--Quality Image Statistics-->
<!-- <TextView-->
<!-- android:id="@+id/thanks_received_data"-->
<!-- style="?android:textAppearanceMedium"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginStart="@dimen/activity_margin_horizontal"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- android:text="@string/statistics_thanks"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/thanks_image_icon"-->
<!-- app:layout_constraintEnd_toStartOf="@+id/images_nearby_info_icon"-->
<!-- app:layout_constraintStart_toEndOf="@+id/thanks_image_icon"-->
<!-- app:layout_constraintTop_toTopOf="@+id/thanks_image_icon" />-->
<ImageView
android:id="@+id/quality_image_icon"
android:layout_width="@dimen/dimen_40"
android:layout_height="@dimen/dimen_40"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/materialDivider4"
app:srcCompat="@drawable/ic_quality_images_logo" />
<!-- <ImageView-->
<!-- android:id="@+id/thanks_received_info_icon"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/thanks_received_data"-->
<!-- app:layout_constraintEnd_toStartOf="@+id/quality_images"-->
<!-- app:layout_constraintTop_toTopOf="@+id/thanks_received_data"-->
<!-- app:srcCompat="@drawable/ic_info_outline_24dp"-->
<!-- app:tint="@color/black" />-->
<TextView
android:id="@+id/quality_images_data"
style="?android:textAppearanceMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:text="@string/statistics_quality"
app:layout_constraintBottom_toBottomOf="@+id/quality_image_icon"
app:layout_constraintEnd_toStartOf="@+id/images_nearby_info_icon"
app:layout_constraintStart_toEndOf="@+id/quality_image_icon"
app:layout_constraintTop_toTopOf="@+id/quality_image_icon" />
<ImageView
android:id="@+id/quality_images_info_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toBottomOf="@+id/quality_images_data"
app:layout_constraintEnd_toStartOf="@+id/quality_images"
app:layout_constraintTop_toTopOf="@+id/quality_images_data"
app:srcCompat="@drawable/ic_info_outline_24dp"
app:tint="@color/black" />
<TextView
android:id="@+id/quality_images"
style="?android:textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
app:layout_constraintBottom_toBottomOf="@+id/quality_images_info_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/quality_images_info_icon"
tools:text="2" />
<com.google.android.material.divider.MaterialDivider
android:id="@+id/materialDivider5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/quality_image_icon" />
<!--Thank Image Statistics-->
<ImageView
android:id="@+id/thanks_image_icon"
android:layout_width="@dimen/dimen_40"
android:layout_height="@dimen/dimen_40"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginTop="@dimen/activity_margin_horizontal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/materialDivider5"
app:srcCompat="@drawable/ic_thanks" />
<TextView
android:id="@+id/thanks_received_data"
style="?android:textAppearanceMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_margin_horizontal"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:text="@string/statistics_thanks"
app:layout_constraintBottom_toBottomOf="@+id/thanks_image_icon"
app:layout_constraintEnd_toStartOf="@+id/images_nearby_info_icon"
app:layout_constraintStart_toEndOf="@+id/thanks_image_icon"
app:layout_constraintTop_toTopOf="@+id/thanks_image_icon" />
<ImageView
android:id="@+id/thanks_received_info_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
app:layout_constraintBottom_toBottomOf="@+id/thanks_received_data"
app:layout_constraintEnd_toStartOf="@+id/quality_images"
app:layout_constraintTop_toTopOf="@+id/thanks_received_data"
app:srcCompat="@drawable/ic_info_outline_24dp"
app:tint="@color/black" />
<TextView
android:id="@+id/thanks_received"
style="?android:textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
app:layout_constraintBottom_toBottomOf="@+id/thanks_received_info_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/thanks_received_info_icon"
tools:text="2" />
<!-- <TextView-->
<!-- android:id="@+id/thanks_received"-->
<!-- style="?android:textAppearanceMedium"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginEnd="@dimen/activity_margin_horizontal"-->
<!-- app:layout_constraintBottom_toBottomOf="@+id/thanks_received_info_icon"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="@+id/thanks_received_info_icon"-->
<!-- tools:text="2" />-->
<ProgressBar

View file

@ -371,6 +371,7 @@
<string name="delete">Delete</string>
<string name="Achievements">Achievements</string>
<string name="Profile">Profile</string>
<string name="badges">Badges</string>
<string name="statistics">Statistics</string>
<string name="statistics_thanks">Thanks Received</string>
<string name="statistics_featured">Featured Images</string>

View file

@ -1,6 +1,6 @@
<resources>
<style name="DarkAppTheme" parent="Theme.AppCompat.NoActionBar">
<style name="DarkAppTheme" parent="Theme.MaterialComponents.NoActionBar">
<item name="contributionsListBackground">@color/contributionListDarkBackground</item>
<item name="tabBackground">@color/contributionListDarkBackground</item>
<item name="tabIndicatorColor">@color/white</item>
@ -62,7 +62,7 @@
<item name="android:splitMotionEvents">false</item>
</style>
<style name="LightAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="LightAppTheme" parent="Theme.MaterialComponents.NoActionBar">
<item name="contributionsListBackground">@color/white</item>
<item name="tabBackground">@color/card_light_grey</item>
<item name="tabIndicatorColor">@color/primaryDarkColor</item>
@ -73,6 +73,7 @@
<item name="drawerHeaderBackground">@color/drawerHeader_background_light</item>
<item name="tutorialBackground">@color/tutorial_background_light</item>
<item name="icon">@color/secondaryTextColor</item>
<item name="colorPrimary">@color/primaryDarkColor</item>
<item name="colorPrimaryDark">@color/primaryDarkColor</item>
<item name="colorAccent">@color/primaryColor</item>
<item name="colorButtonNormal">@color/primaryColor</item>