Added Enum Model and increased levels to 15

This commit is contained in:
tanvidadu 2018-06-15 01:53:25 +05:30
parent c8771e0b58
commit e2a0e6969d
2 changed files with 69 additions and 66 deletions

View file

@ -64,8 +64,8 @@ public class AchievementsActivity extends NavigationBaseActivity {
private Boolean isUploadFetched = false;
private Boolean isStatisticsFetched = false;
private Achievements achievements = new Achievements();
private LevelController level = new LevelController();
private Level levelInfo;
private LevelController level;
private LevelController.LevelInfo levelInfo;
@BindView(R.id.achievement_badge)
ImageView imageView;
@ -230,9 +230,9 @@ public class AchievementsActivity extends NavigationBaseActivity {
private void setUploadProgress( int uploadCount){
imagesUploadedProgressbar.setProgress
(100*uploadCount/levelInfo.getMaximumUploadCount());
(100*uploadCount/levelInfo.getMaxUploadCount());
imagesUploadedProgressbar.setProgressTextFormatPattern
(uploadCount +"/" + levelInfo.getMaximumUploadCount() );
(uploadCount +"/" + levelInfo.getMaxUploadCount() );
}
/**
@ -265,17 +265,17 @@ public class AchievementsActivity extends NavigationBaseActivity {
private void inflateAchievements( Achievements achievements ){
thanksReceived.setText(Integer.toString(achievements.getThanksReceived()));
imagesUsedByWikiProgessbar.setProgress
(100*achievements.getUniqueUsedImages()/levelInfo.getMaximumUniqueImagesUsed());
(100*achievements.getUniqueUsedImages()/levelInfo.getMaxUniqueImages() );
imagesUsedByWikiProgessbar.setProgressTextFormatPattern
(achievements.getUniqueUsedImages() + "/" + levelInfo.getMaximumUniqueImagesUsed());
(achievements.getUniqueUsedImages() + "/" + levelInfo.getMaxUniqueImages());
imagesFeatured.setText(Integer.toString(achievements.getFeaturedImages()));
String levelUpInfoString = getString(R.string.level);
levelUpInfoString += " " + Integer.toString(levelInfo.getLevel());
levelUpInfoString += " " + Integer.toString(levelInfo.getLevelNumber());
levelNumber.setText(levelUpInfoString);
final ContextThemeWrapper wrapper = new ContextThemeWrapper(this, levelInfo.getLevelStyle());
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.badge, wrapper.getTheme());
Bitmap bitmap = BitmapUtils.drawableToBitmap(drawable);
BitmapDrawable bitmapImage = BitmapUtils.writeOnDrawable(bitmap, Integer.toString(levelInfo.getLevel()),this);
BitmapDrawable bitmapImage = BitmapUtils.writeOnDrawable(bitmap, Integer.toString(levelInfo.getLevelNumber()),this);
imageView.setImageDrawable(bitmapImage);
}
@ -296,7 +296,7 @@ public class AchievementsActivity extends NavigationBaseActivity {
*/
private void hideProgressBar() {
if (progressBar != null && isUploadFetched && isStatisticsFetched) {
levelInfo = level.calculateLevelUp(achievements);
levelInfo = LevelController.LevelInfo.from(achievements.getImagesUploaded(),achievements.getUniqueUsedImages());
inflateAchievements(achievements);
setUploadProgress(achievements.getImagesUploaded());
progressBar.setVisibility(View.GONE);

View file

@ -7,64 +7,67 @@ import fr.free.nrw.commons.R;
*/
public class LevelController {
/**
* calculated the level of user and return the level information
* @param achievements
* @return
*/
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.setMaximumUniqueImagesUsed(50);
level.setMaximumUploadCount(110);
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);
public LevelInfo level;
public enum LevelInfo{
LEVEL_15(15,R.style.LevelFive, 80, 160),
LEVEL_14(14,R.style.LevelFour, 75 , 150),
LEVEL_13(13,R.style.LevelThree, 70, 140),
LEVEL_12(12,R.style.LevelTwo,65 , 130),
LEVEL_11(11,R.style.LevelOne, 60, 120),
LEVEL_10(10, R.style.LevelFive, 55, 110),
LEVEL_9(9, R.style.LevelFour, 50, 100),
LEVEL_8(8, R.style.LevelThree, 45, 90),
LEVEL_7(7, R.style.LevelTwo, 40, 80),
LEVEL_6(6,R.style.LevelOne,30,70),
LEVEL_5(5, R.style.LevelFive, 25, 60),
LEVEL_4(4, R.style.LevelFour,20,50),
LEVEL_3(3, R.style.LevelThree, 15,40),
LEVEL_2(2, R.style.LevelTwo, 10, 30),
LEVEL_1(1, R.style.LevelOne, 5, 20 );
private int levelNumber;
private int levelStyle;
private int maxUniqueImages;
private int maxUploadCount;
LevelInfo(int levelNumber, int levelStyle, int maxUniqueImages, int maxUploadCount) {
this.levelNumber = levelNumber;
this.levelStyle = levelStyle;
this.maxUniqueImages = maxUniqueImages;
this.maxUploadCount = maxUploadCount;
}
return level;
public static LevelInfo from(int imagesUploaded, int uniqueImagesUsed) {
LevelInfo level = LEVEL_1;
for (LevelInfo levelInfo : LevelInfo.values()) {
if (imagesUploaded > levelInfo.maxUploadCount && uniqueImagesUsed > levelInfo.maxUniqueImages) {
level = levelInfo;
return level;
}
}
return level;
}
public int getLevelStyle() {
return levelStyle;
}
public int getLevelNumber() {
return levelNumber;
}
public void setLevelStyle(int levelStyle) {
this.levelStyle = levelStyle;
}
public int getMaxUniqueImages() {
return maxUniqueImages;
}
public int getMaxUploadCount() {
return maxUploadCount;
}
}
}