Added functionality to change colours of badge during runtime

This commit is contained in:
tanvidadu 2018-06-01 03:44:49 +05:30
parent e28e4471b8
commit c65df3756e
4 changed files with 47 additions and 1 deletions

View file

@ -254,7 +254,7 @@ public class AchievementsActivity extends NavigationBaseActivity {
String levelUpInfoString = getString(R.string.level);
levelUpInfoString += " " + Integer.toString(levelInfo.getLevel());
levelNumber.setText(levelUpInfoString);
final ContextThemeWrapper wrapper = new ContextThemeWrapper(this, R.style.LevelOne);
final ContextThemeWrapper wrapper = new ContextThemeWrapper(this, levelInfo.getLevelStyle());
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.badge, wrapper.getTheme());
Bitmap bitmap = drawableToBitmap(drawable);
BitmapDrawable bitmapImage = writeOnDrawable(bitmap, Integer.toString(levelInfo.getLevel()));

View file

@ -8,6 +8,7 @@ public class Level {
private int maximumUniqueImagesUsed;
private int revertRate;
private int level;
private int levelStyle;
public int getMaximumUniqueImagesUsed() {
return maximumUniqueImagesUsed;
@ -32,4 +33,13 @@ public class Level {
public void setLevel(int level) {
this.level = level;
}
public void setLevelStyle(int levelStyle) {
this.levelStyle = levelStyle;
}
public int getLevelStyle() {
return levelStyle;
}
}

View file

@ -1,5 +1,7 @@
package fr.free.nrw.commons.achievements;
import fr.free.nrw.commons.R;
/**
* calculates the level of the user
*/
@ -13,42 +15,52 @@ public class LevelController {
Level calculateLevelUp( Achievements achievements){
Level level = new Level ();
level.setLevel(1);
level.setLevelStyle(R.style.LevelOne);
level.setMaximumUploadCount(20);
level.setMaximumUniqueImagesUsed(5);
if(achievements.getImagesUploaded() >= 100 && achievements.getUniqueUsedImages() >= 45){
level.setLevel(10);
level.setLevelStyle(R.style.LevelFive);
} else if (achievements.getImagesUploaded() >= 90 && achievements.getUniqueUsedImages() >= 40){
level.setLevel(9);
level.setMaximumUniqueImagesUsed(45);
level.setMaximumUploadCount(100);
level.setLevelStyle(R.style.LevelFour);
} else if (achievements.getImagesUploaded() >= 80 && achievements.getUniqueUsedImages() >= 35){
level.setLevel(8);
level.setMaximumUniqueImagesUsed(40);
level.setMaximumUploadCount(90);
level.setLevelStyle(R.style.LevelThree);
} else if (achievements.getImagesUploaded() >= 70 && achievements.getUniqueUsedImages() >= 30){
level.setLevel(7);
level.setMaximumUniqueImagesUsed(35);
level.setMaximumUploadCount(80);
level.setLevelStyle(R.style.LevelTwo);
} else if (achievements.getImagesUploaded() >= 60 && achievements.getUniqueUsedImages() >= 25 ){
level.setLevel(6);
level.setMaximumUniqueImagesUsed(30);
level.setMaximumUploadCount(70);
level.setLevelStyle(R.style.LevelOne);
} else if (achievements.getImagesUploaded() >= 50 && achievements.getUniqueUsedImages() >= 20 ){
level.setLevel(5);
level.setMaximumUniqueImagesUsed(25);
level.setMaximumUploadCount(60);
level.setLevelStyle(R.style.LevelFive);
} else if (achievements.getImagesUploaded() >= 40 && achievements.getUniqueUsedImages() >= 15 ){
level.setLevel(4);
level.setMaximumUniqueImagesUsed(20);
level.setMaximumUploadCount(50);
level.setLevelStyle(R.style.LevelFour);
} else if (achievements.getImagesUploaded() >= 30 && achievements.getUniqueUsedImages() >= 10 ){
level.setLevel(3);
level.setMaximumUniqueImagesUsed(15);
level.setMaximumUploadCount(40);
level.setLevelStyle(R.style.LevelThree);
} else if (achievements.getImagesUploaded() >= 20 && achievements.getUniqueUsedImages() >= 5 ){
level.setLevel(2);
level.setMaximumUniqueImagesUsed(10);
level.setMaximumUploadCount(30);
level.setLevelStyle(R.style.LevelTwo);
}
return level;

View file

@ -63,4 +63,28 @@
<item name="centerRegion">#bc6853</item>
</style>
<style name="LevelTwo">
<item name="boundary">#a8a8c0</item>
<item name="camera">#604890</item>
<item name="centerRegion">#6060a8</item>
</style>
<style name="LevelThree">
<item name="boundary">#90c0a8</item>
<item name="camera">#487878</item>
<item name="centerRegion">#48a8a8</item>
</style>
<style name="LevelFour">
<item name="boundary">#ffc078</item>
<item name="camera">#d87818</item>
<item name="centerRegion">#f09018</item>
</style>
<style name="LevelFive">
<item name="boundary">#c0a8c0</item>
<item name="camera">#784878</item>
<item name="centerRegion">#906078</item>
</style>
</resources>