diff --git a/app/build.gradle b/app/build.gradle index c949707c2..60ad885a9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,6 +44,7 @@ dependencies { implementation 'com.github.pedrovgs:renderers:3.3.3' implementation "org.maplibre.gl:android-sdk:$MAPLIBRE_VERSION" implementation 'org.maplibre.gl:android-plugin-scalebar-v9:1.0.0' + implementation 'com.google.android.flexbox:flexbox:3.0.0' implementation 'com.jakewharton.timber:timber:4.7.1' implementation 'com.github.deano2390:MaterialShowcaseView:1.2.0' diff --git a/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.java b/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.java index f44b7eb6d..9007f052e 100644 --- a/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/profile/achievements/AchievementsFragment.java @@ -2,12 +2,16 @@ package fr.free.nrw.commons.profile.achievements; import android.accounts.Account; import android.content.Context; +import android.graphics.ColorMatrix; +import android.graphics.ColorMatrixColorFilter; import android.net.Uri; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.appcompat.view.ContextThemeWrapper; @@ -28,6 +32,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.schedulers.Schedulers; import java.util.Locale; +import java.util.Map; import java.util.Objects; import javax.inject.Inject; import org.apache.commons.lang3.StringUtils; @@ -92,10 +97,10 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment { binding.imagesUploadInfo.setOnClickListener(view -> showUploadInfo()); binding.imagesRevertedInfo.setOnClickListener(view -> showRevertedInfo()); binding.imagesUsedByWikiInfo.setOnClickListener(view -> showUsedByWikiInfo()); - binding.imagesNearbyInfo.setOnClickListener(view -> showImagesViaNearbyInfo()); - binding.imagesFeaturedInfo.setOnClickListener(view -> showFeaturedImagesInfo()); - binding.thanksReceivedInfo.setOnClickListener(view -> showThanksReceivedInfo()); - binding.qualityImagesInfo.setOnClickListener(view -> showQualityImagesInfo()); + binding.wikidataEditsIcon.setOnClickListener(view -> showImagesViaNearbyInfo()); + binding.qualityImageIcon.setOnClickListener(view -> showFeaturedImagesInfo()); + binding.featuredImageIcon.setOnClickListener(view -> showThanksReceivedInfo()); + binding.thanksImageIcon.setOnClickListener(view -> showThanksReceivedInfo()); // DisplayMetrics used to fetch the size of the screen DisplayMetrics displayMetrics = new DisplayMetrics(); @@ -132,11 +137,26 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment { binding.imageFeatured.setText("0"); binding.qualityImages.setText("0"); binding.achievementLevel.setText("0"); + binding.thanksReceived.setText("0"); + Map badgeMap = Map.of( + binding.wikidataEditsIcon,binding.wikidataEdits, + binding.featuredImageIcon,binding.imageFeatured, + binding.qualityImageIcon, binding.qualityImages, + binding.thanksImageIcon, binding.thanksReceived + ); + badgeRender(badgeMap); setMenuVisibility(true); return rootView; } setWikidataEditCount(); setAchievements(); + Map badgeMap = Map.of( + binding.wikidataEditsIcon,binding.wikidataEdits, + binding.featuredImageIcon,binding.imageFeatured, + binding.qualityImageIcon, binding.qualityImages, + binding.thanksImageIcon, binding.thanksReceived + ); + badgeRender(badgeMap); return rootView; } @@ -479,4 +499,28 @@ public class AchievementsFragment extends CommonsDaggerSupportFragment { } return true; } + /** + * list the badgeset and set the 0 one to gray + * @param badgeMap + */ + public void badgeRender(Map badgeMap){ + for(Map.Entry badge:badgeMap.entrySet()){ + TextView textView= badge.getValue(); + ImageView imageView=badge.getKey(); + if(textView.getText().equals("0")){ + Grayfilter(imageView); + textView.setVisibility(View.GONE); + } + } + } + /** + * Set imageView element to Gray + * @param imageView + */ + public void Grayfilter(ImageView imageView){ + ColorMatrix matrix = new ColorMatrix(); + matrix.setSaturation(0); + ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix); + imageView.setColorFilter(filter); + } } diff --git a/app/src/main/res/drawable/badge_number_background.xml b/app/src/main/res/drawable/badge_number_background.xml new file mode 100644 index 000000000..c7f6aa228 --- /dev/null +++ b/app/src/main/res/drawable/badge_number_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_achievements.xml b/app/src/main/res/layout/fragment_achievements.xml index e0dddcf5b..992ab4d4c 100644 --- a/app/src/main/res/layout/fragment_achievements.xml +++ b/app/src/main/res/layout/fragment_achievements.xml @@ -335,104 +335,53 @@ - - - + - + android:padding="8dp" + > - - + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/wikidata_edits" + android:text="2" + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:layout_gravity="end|bottom" + android:background="@drawable/badge_number_background" + /> + - - - - - - - - - - - + android:padding="8dp"> - - + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/image_featured" + android:text="2" + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:layout_gravity="end|bottom" + android:background="@drawable/badge_number_background" + /> + app:tint="@color/primaryLightColor" /> + - - - - - - - - - - + android:padding="8dp"> - - + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/quality_images" + android:text="2" + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:layout_gravity="end|bottom" + android:background="@drawable/badge_number_background" + /> + - - - - - - - - - - + android:padding="8dp"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/thanks_received" + android:text="2" + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:layout_gravity="end|bottom" + android:background="@drawable/badge_number_background" + /> + app:tint="@color/primaryLightColor"/> + - - + - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f9de8e051..bd451dea8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -370,7 +370,8 @@ Delete Achievements Profile - Statistics + Badges + Badges Thanks Received Featured Images Images via \"Nearby Places\"