diff --git a/Habitica/res/drawable-hdpi/currency_gem.png b/Habitica/res/drawable-hdpi/currency_gem.png new file mode 100644 index 000000000..c38477268 Binary files /dev/null and b/Habitica/res/drawable-hdpi/currency_gem.png differ diff --git a/Habitica/res/drawable-hdpi/currency_gold.png b/Habitica/res/drawable-hdpi/currency_gold.png new file mode 100644 index 000000000..6d54747cd Binary files /dev/null and b/Habitica/res/drawable-hdpi/currency_gold.png differ diff --git a/Habitica/res/drawable-hdpi/currency_hourglass.png b/Habitica/res/drawable-hdpi/currency_hourglass.png new file mode 100644 index 000000000..1acf63f08 Binary files /dev/null and b/Habitica/res/drawable-hdpi/currency_hourglass.png differ diff --git a/Habitica/res/drawable-hdpi/ic_header_gem.png b/Habitica/res/drawable-hdpi/ic_header_gem.png deleted file mode 100644 index c5f800274..000000000 Binary files a/Habitica/res/drawable-hdpi/ic_header_gem.png and /dev/null differ diff --git a/Habitica/res/drawable-hdpi/ic_header_gold.png b/Habitica/res/drawable-hdpi/ic_header_gold.png deleted file mode 100644 index ded610669..000000000 Binary files a/Habitica/res/drawable-hdpi/ic_header_gold.png and /dev/null differ diff --git a/Habitica/res/drawable-hdpi/ic_header_silver.png b/Habitica/res/drawable-hdpi/ic_header_silver.png deleted file mode 100644 index b1d5591db..000000000 Binary files a/Habitica/res/drawable-hdpi/ic_header_silver.png and /dev/null differ diff --git a/Habitica/res/drawable-hdpi/item_count_bubble.png b/Habitica/res/drawable-hdpi/item_count_bubble.png new file mode 100644 index 000000000..6d1ef3e61 Binary files /dev/null and b/Habitica/res/drawable-hdpi/item_count_bubble.png differ diff --git a/Habitica/res/drawable-hdpi/item_limited_bubble.png b/Habitica/res/drawable-hdpi/item_limited_bubble.png new file mode 100644 index 000000000..8b3061d77 Binary files /dev/null and b/Habitica/res/drawable-hdpi/item_limited_bubble.png differ diff --git a/Habitica/res/drawable-hdpi/item_locked_bubble.png b/Habitica/res/drawable-hdpi/item_locked_bubble.png new file mode 100644 index 000000000..fe4f622bb Binary files /dev/null and b/Habitica/res/drawable-hdpi/item_locked_bubble.png differ diff --git a/Habitica/res/drawable-hdpi/item_pinned.png b/Habitica/res/drawable-hdpi/item_pinned.png new file mode 100644 index 000000000..e86d89885 Binary files /dev/null and b/Habitica/res/drawable-hdpi/item_pinned.png differ diff --git a/Habitica/res/drawable-hdpi/shop_gem.png b/Habitica/res/drawable-hdpi/shop_gem.png new file mode 100644 index 000000000..2bab83a0b Binary files /dev/null and b/Habitica/res/drawable-hdpi/shop_gem.png differ diff --git a/Habitica/res/drawable-mdpi/currency_gem.png b/Habitica/res/drawable-mdpi/currency_gem.png new file mode 100644 index 000000000..f8a3b2c69 Binary files /dev/null and b/Habitica/res/drawable-mdpi/currency_gem.png differ diff --git a/Habitica/res/drawable-mdpi/currency_gold.png b/Habitica/res/drawable-mdpi/currency_gold.png new file mode 100644 index 000000000..d393719c8 Binary files /dev/null and b/Habitica/res/drawable-mdpi/currency_gold.png differ diff --git a/Habitica/res/drawable-mdpi/currency_hourglass.png b/Habitica/res/drawable-mdpi/currency_hourglass.png new file mode 100644 index 000000000..fe49c0fac Binary files /dev/null and b/Habitica/res/drawable-mdpi/currency_hourglass.png differ diff --git a/Habitica/res/drawable-mdpi/ic_header_gem.png b/Habitica/res/drawable-mdpi/ic_header_gem.png deleted file mode 100644 index 0938cdf31..000000000 Binary files a/Habitica/res/drawable-mdpi/ic_header_gem.png and /dev/null differ diff --git a/Habitica/res/drawable-mdpi/ic_header_gold.png b/Habitica/res/drawable-mdpi/ic_header_gold.png deleted file mode 100644 index 51acad3ff..000000000 Binary files a/Habitica/res/drawable-mdpi/ic_header_gold.png and /dev/null differ diff --git a/Habitica/res/drawable-mdpi/ic_header_silver.png b/Habitica/res/drawable-mdpi/ic_header_silver.png deleted file mode 100644 index 54ea896c5..000000000 Binary files a/Habitica/res/drawable-mdpi/ic_header_silver.png and /dev/null differ diff --git a/Habitica/res/drawable-mdpi/item_count_bubble.png b/Habitica/res/drawable-mdpi/item_count_bubble.png new file mode 100644 index 000000000..eb25e95f5 Binary files /dev/null and b/Habitica/res/drawable-mdpi/item_count_bubble.png differ diff --git a/Habitica/res/drawable-mdpi/item_limited_bubble.png b/Habitica/res/drawable-mdpi/item_limited_bubble.png new file mode 100644 index 000000000..5a45b177c Binary files /dev/null and b/Habitica/res/drawable-mdpi/item_limited_bubble.png differ diff --git a/Habitica/res/drawable-mdpi/item_locked_bubble.png b/Habitica/res/drawable-mdpi/item_locked_bubble.png new file mode 100644 index 000000000..ac1050276 Binary files /dev/null and b/Habitica/res/drawable-mdpi/item_locked_bubble.png differ diff --git a/Habitica/res/drawable-mdpi/item_pinned.png b/Habitica/res/drawable-mdpi/item_pinned.png new file mode 100644 index 000000000..fb86625d9 Binary files /dev/null and b/Habitica/res/drawable-mdpi/item_pinned.png differ diff --git a/Habitica/res/drawable-mdpi/shop_empty_hourglass.png b/Habitica/res/drawable-mdpi/shop_empty_hourglass.png new file mode 100644 index 000000000..5c237be6b Binary files /dev/null and b/Habitica/res/drawable-mdpi/shop_empty_hourglass.png differ diff --git a/Habitica/res/drawable-mdpi/shop_empty_seasonal.png b/Habitica/res/drawable-mdpi/shop_empty_seasonal.png new file mode 100644 index 000000000..642d79627 Binary files /dev/null and b/Habitica/res/drawable-mdpi/shop_empty_seasonal.png differ diff --git a/Habitica/res/drawable-mdpi/shop_gem.png b/Habitica/res/drawable-mdpi/shop_gem.png new file mode 100644 index 000000000..4369e09dc Binary files /dev/null and b/Habitica/res/drawable-mdpi/shop_gem.png differ diff --git a/Habitica/res/drawable-xhdpi/currency_gem.png b/Habitica/res/drawable-xhdpi/currency_gem.png new file mode 100644 index 000000000..0568bda9d Binary files /dev/null and b/Habitica/res/drawable-xhdpi/currency_gem.png differ diff --git a/Habitica/res/drawable-xhdpi/currency_gold.png b/Habitica/res/drawable-xhdpi/currency_gold.png new file mode 100644 index 000000000..b0dbf9f36 Binary files /dev/null and b/Habitica/res/drawable-xhdpi/currency_gold.png differ diff --git a/Habitica/res/drawable-xhdpi/currency_hourglass.png b/Habitica/res/drawable-xhdpi/currency_hourglass.png new file mode 100644 index 000000000..2da0a580f Binary files /dev/null and b/Habitica/res/drawable-xhdpi/currency_hourglass.png differ diff --git a/Habitica/res/drawable-xhdpi/ic_header_gem.png b/Habitica/res/drawable-xhdpi/ic_header_gem.png deleted file mode 100644 index a26ea8f65..000000000 Binary files a/Habitica/res/drawable-xhdpi/ic_header_gem.png and /dev/null differ diff --git a/Habitica/res/drawable-xhdpi/ic_header_gold.png b/Habitica/res/drawable-xhdpi/ic_header_gold.png deleted file mode 100644 index 8b056a249..000000000 Binary files a/Habitica/res/drawable-xhdpi/ic_header_gold.png and /dev/null differ diff --git a/Habitica/res/drawable-xhdpi/ic_header_silver.png b/Habitica/res/drawable-xhdpi/ic_header_silver.png deleted file mode 100644 index 05d3977ea..000000000 Binary files a/Habitica/res/drawable-xhdpi/ic_header_silver.png and /dev/null differ diff --git a/Habitica/res/drawable-xhdpi/item_count_bubble.png b/Habitica/res/drawable-xhdpi/item_count_bubble.png new file mode 100644 index 000000000..dbbe711ec Binary files /dev/null and b/Habitica/res/drawable-xhdpi/item_count_bubble.png differ diff --git a/Habitica/res/drawable-xhdpi/item_limited_bubble.png b/Habitica/res/drawable-xhdpi/item_limited_bubble.png new file mode 100644 index 000000000..e28b393fe Binary files /dev/null and b/Habitica/res/drawable-xhdpi/item_limited_bubble.png differ diff --git a/Habitica/res/drawable-xhdpi/item_locked_bubble.png b/Habitica/res/drawable-xhdpi/item_locked_bubble.png new file mode 100644 index 000000000..26d1257ba Binary files /dev/null and b/Habitica/res/drawable-xhdpi/item_locked_bubble.png differ diff --git a/Habitica/res/drawable-xhdpi/item_pinned.png b/Habitica/res/drawable-xhdpi/item_pinned.png new file mode 100644 index 000000000..8da5e6868 Binary files /dev/null and b/Habitica/res/drawable-xhdpi/item_pinned.png differ diff --git a/Habitica/res/drawable-xhdpi/shop_empty_hourglass.png b/Habitica/res/drawable-xhdpi/shop_empty_hourglass.png new file mode 100644 index 000000000..7bf778f17 Binary files /dev/null and b/Habitica/res/drawable-xhdpi/shop_empty_hourglass.png differ diff --git a/Habitica/res/drawable-xhdpi/shop_empty_seasonal.png b/Habitica/res/drawable-xhdpi/shop_empty_seasonal.png new file mode 100644 index 000000000..bba8868c7 Binary files /dev/null and b/Habitica/res/drawable-xhdpi/shop_empty_seasonal.png differ diff --git a/Habitica/res/drawable-xhdpi/shop_gem.png b/Habitica/res/drawable-xhdpi/shop_gem.png new file mode 100644 index 000000000..765664867 Binary files /dev/null and b/Habitica/res/drawable-xhdpi/shop_gem.png differ diff --git a/Habitica/res/drawable-xxhdpi/currency_gem.png b/Habitica/res/drawable-xxhdpi/currency_gem.png new file mode 100644 index 000000000..76926d1e8 Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/currency_gem.png differ diff --git a/Habitica/res/drawable-xxhdpi/currency_gold.png b/Habitica/res/drawable-xxhdpi/currency_gold.png new file mode 100644 index 000000000..590e0ad46 Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/currency_gold.png differ diff --git a/Habitica/res/drawable-xxhdpi/currency_hourglass.png b/Habitica/res/drawable-xxhdpi/currency_hourglass.png new file mode 100644 index 000000000..1bb64b025 Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/currency_hourglass.png differ diff --git a/Habitica/res/drawable-xxhdpi/ic_header_gem.png b/Habitica/res/drawable-xxhdpi/ic_header_gem.png deleted file mode 100644 index 4e35b4fda..000000000 Binary files a/Habitica/res/drawable-xxhdpi/ic_header_gem.png and /dev/null differ diff --git a/Habitica/res/drawable-xxhdpi/ic_header_gold.png b/Habitica/res/drawable-xxhdpi/ic_header_gold.png deleted file mode 100644 index a59e815d8..000000000 Binary files a/Habitica/res/drawable-xxhdpi/ic_header_gold.png and /dev/null differ diff --git a/Habitica/res/drawable-xxhdpi/ic_header_silver.png b/Habitica/res/drawable-xxhdpi/ic_header_silver.png deleted file mode 100644 index eb926b300..000000000 Binary files a/Habitica/res/drawable-xxhdpi/ic_header_silver.png and /dev/null differ diff --git a/Habitica/res/drawable-xxhdpi/item_count_bubble.png b/Habitica/res/drawable-xxhdpi/item_count_bubble.png new file mode 100644 index 000000000..ebcad3ffd Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/item_count_bubble.png differ diff --git a/Habitica/res/drawable-xxhdpi/item_limited_bubble.png b/Habitica/res/drawable-xxhdpi/item_limited_bubble.png new file mode 100644 index 000000000..0ae3a8fee Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/item_limited_bubble.png differ diff --git a/Habitica/res/drawable-xxhdpi/item_locked_bubble.png b/Habitica/res/drawable-xxhdpi/item_locked_bubble.png new file mode 100644 index 000000000..a559fc4cd Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/item_locked_bubble.png differ diff --git a/Habitica/res/drawable-xxhdpi/item_pinned.png b/Habitica/res/drawable-xxhdpi/item_pinned.png new file mode 100644 index 000000000..45293844f Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/item_pinned.png differ diff --git a/Habitica/res/drawable-xxhdpi/shop_gem.png b/Habitica/res/drawable-xxhdpi/shop_gem.png new file mode 100644 index 000000000..f10bad024 Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/shop_gem.png differ diff --git a/Habitica/res/drawable/layout_rounded_bg_shopitem_price.xml b/Habitica/res/drawable/layout_rounded_bg_shopitem_price.xml index b4fe424a1..d6f0b7a0c 100644 --- a/Habitica/res/drawable/layout_rounded_bg_shopitem_price.xml +++ b/Habitica/res/drawable/layout_rounded_bg_shopitem_price.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/Habitica/res/layout/activity_challenge_detail.xml b/Habitica/res/layout/activity_challenge_detail.xml index c32e8aa68..6c00ea846 100644 --- a/Habitica/res/layout/activity_challenge_detail.xml +++ b/Habitica/res/layout/activity_challenge_detail.xml @@ -132,7 +132,7 @@ + android:src="@drawable/currency_gem" /> - - - - - - - - + android:layout_height="wrap_content" /> diff --git a/Habitica/res/layout/activity_main.xml b/Habitica/res/layout/activity_main.xml index 066c173b0..974b1d421 100644 --- a/Habitica/res/layout/activity_main.xml +++ b/Habitica/res/layout/activity_main.xml @@ -46,7 +46,33 @@ android:minHeight="?attr/actionBarSize" android:theme="@style/Toolbar" app:layout_collapseMode="pin" - app:popupTheme="@style/Theme.AppCompat.Light" /> + app:popupTheme="@style/Theme.AppCompat.Light"> + + + + + + + + - - - - - - - + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/Habitica/res/layout/challenge_item.xml b/Habitica/res/layout/challenge_item.xml index 2efee0584..d27ea447f 100644 --- a/Habitica/res/layout/challenge_item.xml +++ b/Habitica/res/layout/challenge_item.xml @@ -30,7 +30,7 @@ + android:src="@drawable/currency_gem" /> diff --git a/Habitica/res/layout/currency_view.xml b/Habitica/res/layout/currency_view.xml new file mode 100644 index 000000000..6cc13ae1a --- /dev/null +++ b/Habitica/res/layout/currency_view.xml @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/Habitica/res/layout/dialog_challenge_detail_reward.xml b/Habitica/res/layout/dialog_challenge_detail_reward.xml index eed88b277..a24e12d6d 100644 --- a/Habitica/res/layout/dialog_challenge_detail_reward.xml +++ b/Habitica/res/layout/dialog_challenge_detail_reward.xml @@ -21,7 +21,7 @@ android:layout_marginRight="15.5dp" android:layout_marginStart="14.5dp" android:layout_marginTop="18dp" - android:src="@drawable/ic_header_gold" + android:src="@drawable/currency_gold" /> diff --git a/Habitica/res/layout/dialog_purchase_customization.xml b/Habitica/res/layout/dialog_purchase_customization.xml index 8fafb9f44..c4942f3c3 100644 --- a/Habitica/res/layout/dialog_purchase_customization.xml +++ b/Habitica/res/layout/dialog_purchase_customization.xml @@ -26,7 +26,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" - android:src="@drawable/ic_header_gem" + android:src="@drawable/currency_gem" android:layout_gravity="center"/> diff --git a/Habitica/res/layout/fragment_welcome.xml b/Habitica/res/layout/fragment_welcome.xml index ef600484a..1eef36f44 100644 --- a/Habitica/res/layout/fragment_welcome.xml +++ b/Habitica/res/layout/fragment_welcome.xml @@ -32,7 +32,7 @@ android:layout_marginLeft="8dp"/> - + tools:src="@drawable/currency_gold"/> - + + + + diff --git a/Habitica/res/layout/widget_avatar_stats.xml b/Habitica/res/layout/widget_avatar_stats.xml index d5cb57b3b..c6622d3af 100644 --- a/Habitica/res/layout/widget_avatar_stats.xml +++ b/Habitica/res/layout/widget_avatar_stats.xml @@ -217,46 +217,33 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical"> - + - diff --git a/Habitica/res/values/colors.xml b/Habitica/res/values/colors.xml index 49fdde7ee..be1bac370 100644 --- a/Habitica/res/values/colors.xml +++ b/Habitica/res/values/colors.xml @@ -50,6 +50,8 @@ #edecee #f9f9f9 + #4cedecee + #D9D9D9 #989898 diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 0ae55b9db..74c4abefa 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -624,4 +624,7 @@ Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner. Loading... Reloading Content + k + m + b diff --git a/Habitica/res/values/styles.xml b/Habitica/res/values/styles.xml index d9716ca14..fe0178285 100644 --- a/Habitica/res/values/styles.xml +++ b/Habitica/res/values/styles.xml @@ -392,4 +392,11 @@ + + \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NumberAbbreviator.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NumberAbbreviator.java new file mode 100644 index 000000000..c78bbe3a7 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NumberAbbreviator.java @@ -0,0 +1,38 @@ +package com.habitrpg.android.habitica.helpers; + +import android.content.Context; + +import com.habitrpg.android.habitica.R; + +import java.text.DecimalFormat; + +public class NumberAbbreviator { + + public static String abbreviate(Context context, double number) { + int counter = 0; + while (number >= 1000) { + counter++; + number = number / 1000; + } + + DecimalFormat formatter = new DecimalFormat("###.##"+abbreviationForCounter(context, counter)); + return formatter.format(number); + } + + + private static String abbreviationForCounter(Context context, int counter) { + switch (counter) { + case 0: + return ""; + case 1: + return context.getString(R.string.thousand_abbrev); + case 2: + return context.getString(R.string.million_abbrev); + case 3: + return context.getString(R.string.billion_abbrev); + default: + return ""; + } + } + +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Avatar.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Avatar.java index 0f81b38a2..61683632e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Avatar.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Avatar.java @@ -30,4 +30,6 @@ public interface Avatar { Flags getFlags(); Integer getGemCount(); + + Integer getHourglassCount(); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.java index 4da14e3e5..081fd80df 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.java @@ -148,6 +148,11 @@ public class Member extends RealmObject implements Avatar { return 0; } + @Override + public Integer getHourglassCount() { + return 0; + } + public void setFlags(Flags flags) { this.flags = flags; if (flags != null && id != null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.java index f8ea02887..39d150f6c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.java @@ -15,7 +15,8 @@ public class ShopItem { @SerializedName("class") public String imageName; public Integer value; - public Boolean locked; + public boolean locked; + public boolean limited; public String currency; public String purchaseType; public String categoryIdentifier; @@ -79,9 +80,6 @@ public class ShopItem { } public Boolean getLocked() { - if (locked == null) { - return false; - } return locked; } @@ -138,4 +136,8 @@ public class ShopItem { return false; } } + + public boolean isLimited() { + return limited; + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.java index 016d37e15..a3df3499c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.java @@ -191,6 +191,14 @@ public class User extends RealmObject implements Avatar { return (int)(this.balance * 4); } + @Override + public Integer getHourglassCount() { + if (getPurchased() != null) { + return getPurchased().getPlan().consecutive.getTrinkets(); + } + return 0; + } + public void setBalance(double balance) { this.balance = balance; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java index 6a57f1ad0..90fcdef8f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java @@ -16,6 +16,7 @@ import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand; import com.habitrpg.android.habitica.models.Avatar; import com.habitrpg.android.habitica.models.user.Stats; import com.habitrpg.android.habitica.ui.menu.MainDrawerBuilder; +import com.habitrpg.android.habitica.ui.views.CurrencyView; import com.habitrpg.android.habitica.ui.views.ValueBar; import org.greenrobot.eventbus.EventBus; @@ -25,8 +26,9 @@ import java.util.Locale; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.OnClick; -public class AvatarWithBarsViewModel implements View.OnClickListener { +public class AvatarWithBarsViewModel { @BindView(R.id.hpBar) ValueBar hpBar; @BindView(R.id.xpBar) @@ -42,12 +44,8 @@ public class AvatarWithBarsViewModel implements View.OnClickListener { @BindView(R.id.lvl_tv) TextView lvlText; - @BindView(R.id.gold_tv) - TextView goldText; - @BindView(R.id.silver_tv) - TextView silverText; - @BindView(R.id.gems_tv) - TextView gemsText; + @BindView(R.id.currencyView) + CurrencyView currencyView; private Avatar userObject; @@ -68,12 +66,6 @@ public class AvatarWithBarsViewModel implements View.OnClickListener { setHpBarData(0, 50); setXpBarData(0, 1); setMpBarData(0, 1); - - gemsText.setClickable(true); - gemsText.setOnClickListener(this); - - avatarView.setClickable(true); - avatarView.setOnClickListener(this); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) @@ -83,8 +75,6 @@ public class AvatarWithBarsViewModel implements View.OnClickListener { Stats stats = user.getStats(); String userClass = ""; - int gp = (stats.getGp().intValue()); - int sp = (int) ((stats.getGp() - gp) * 100); avatarView.setAvatar(user); @@ -128,11 +118,9 @@ public class AvatarWithBarsViewModel implements View.OnClickListener { setXpBarData(stats.getExp().floatValue(), stats.getToNextLevel()); setMpBarData(stats.getMp().floatValue(), stats.getMaxMP()); - goldText.setText(String.valueOf(gp)); - silverText.setText(String.valueOf(sp)); - - Integer gems = user.getGemCount(); - gemsText.setText(String.valueOf(gems)); + currencyView.setHourglasses(user.getHourglassCount()); + currencyView.setGold(stats.getGp()); + currencyView.setGems(user.getGemCount()); } private void setHpBarData(float value, int valueMax) { @@ -166,25 +154,19 @@ public class AvatarWithBarsViewModel implements View.OnClickListener { public void onEvent(BoughtGemsEvent gemsEvent) { Integer gems = userObject.getGemCount(); gems += gemsEvent.NewGemsToAdd; - gemsText.setText(String.valueOf(gems)); + currencyView.setGems(gems); } - @Override - public void onClick(View view) { - if (view == gemsText) { - // Gems Clicked - - EventBus.getDefault().post(new OpenGemPurchaseFragmentCommand()); - } else { - // Avatar overview - OpenMenuItemCommand event = new OpenMenuItemCommand(); - event.identifier = MainDrawerBuilder.SIDEBAR_AVATAR; - EventBus.getDefault().post(event); - } + @OnClick(R.id.gemTextView) + public void gemTextClicked() { + EventBus.getDefault().post(new OpenGemPurchaseFragmentCommand()); } - public void hideGems() { - gemsText.setVisibility(View.GONE); + @OnClick(R.id.avatarView) + public void avatarViewClicked() { + OpenMenuItemCommand event = new OpenMenuItemCommand(); + event.identifier = MainDrawerBuilder.SIDEBAR_AVATAR; + EventBus.getDefault().post(event); } public void valueBarLabelsToBlack() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/ItemDetailDialog.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/ItemDetailDialog.java index 03c90d023..1a92c4087 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/ItemDetailDialog.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/ItemDetailDialog.java @@ -92,10 +92,10 @@ public class ItemDetailDialog extends AlertDialog { public void setCurrency(String currency) { switch (currency) { case "gold": - currencyImageView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.ic_header_gold)); + currencyImageView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.currency_gold)); break; case "gems": - currencyImageView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.ic_header_gem)); + currencyImageView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.currency_gem)); break; default: currencyImageView.setImageDrawable(null); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java index 15230f25c..8cd819bed 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java @@ -142,7 +142,6 @@ public class FullProfileActivity extends BaseActivity { socialRepository.getMember(this.userId).subscribe(this::updateView, RxErrorHandler.handleEmptyError()); avatarWithBars = new AvatarWithBarsViewModel(this, avatar_with_bars); - avatarWithBars.hideGems(); avatarWithBars.valueBarLabelsToBlack(); avatar_with_bars.setBackgroundColor(ContextCompat.getColor(this, R.color.transparent)); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 62721ff99..94e2b4d3f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -32,6 +32,7 @@ import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.FrameLayout; +import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import com.habitrpg.android.habitica.HabiticaApplication; @@ -153,6 +154,10 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria AppBarLayout appBar; @BindView(R.id.toolbar) Toolbar toolbar; + @BindView(R.id.toolbar_accessory_container) + FrameLayout toolbarAccessoryContainer; + @BindView(R.id.toolbar_title) + TextView toolbarTitleTextView; @BindView(R.id.collapsing_toolbar) CollapsingToolbarLayout collapsingToolbar; @BindView(R.id.detail_tabs) @@ -346,6 +351,7 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria fragment.setUser(user); fragment.setActivity(this); fragment.setTabLayout(detail_tabs); + fragment.setToolbarAccessoryContainer(toolbarAccessoryContainer); fragment.setCollapsingToolbar(collapsingToolbar); fragment.setBottomNavigation(bottomNavigation); fragment.setFloatingMenuWrapper(floatingMenuWrapper); @@ -505,9 +511,9 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria return; } if (fragment != null && fragment.customTitle() != null) { - getSupportActionBar().setTitle(fragment.customTitle()); + toolbarTitleTextView.setText(fragment.customTitle()); } else if (user != null && user.getProfile() != null) { - getSupportActionBar().setTitle(user.getProfile().getName()); + toolbarTitleTextView.setText(user.getProfile().getName()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ShopRecyclerAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ShopRecyclerAdapter.java index c1745ff39..a0150d1f2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ShopRecyclerAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ShopRecyclerAdapter.java @@ -127,6 +127,12 @@ public class ShopRecyclerAdapter extends RecyclerView.Adapter 0) { + hourglassTextView.setVisibility(View.VISIBLE); + } else { + hourglassTextView.setVisibility(View.GONE); + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java index 2096ff859..5d7868a46 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java @@ -13,6 +13,7 @@ import android.widget.RemoteViews; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.data.UserRepository; +import com.habitrpg.android.habitica.helpers.NumberAbbreviator; import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.models.user.Stats; @@ -95,11 +96,15 @@ public class AvatarStatsWidgetProvider extends BaseWidgetProvider { remoteViews.setProgressBar(R.id.mp_bar, stats.getMaxMP(), stats.getMp().intValue(), false); remoteViews.setViewVisibility(R.id.mp_wrapper, (stats.getHabitClass() == null || stats.getLvl() < 10 || user.getPreferences().getDisableClasses()) ? View.GONE : View.VISIBLE); - int gp = (stats.getGp().intValue()); - int sp = (int) ((stats.getGp() - gp) * 100); - remoteViews.setTextViewText(R.id.gold_tv, String.valueOf(gp)); - remoteViews.setTextViewText(R.id.silver_tv, String.valueOf(sp)); + remoteViews.setTextViewText(R.id.gold_tv, NumberAbbreviator.abbreviate(context, stats.getGp())); remoteViews.setTextViewText(R.id.gems_tv, String.valueOf((int) (user.getBalance() * 4))); + int hourGlassCount = user.getHourglassCount(); + if (hourGlassCount == 0) { + remoteViews.setViewVisibility(R.id.hourglasses_tv, View.GONE); + } else { + remoteViews.setTextViewText(R.id.hourglasses_tv, String.valueOf(hourGlassCount)); + remoteViews.setViewVisibility(R.id.hourglasses_tv, View.VISIBLE); + } remoteViews.setTextViewText(R.id.lvl_tv, context.getString(R.string.user_level, user.getStats().getLvl())); AvatarView avatarView = new AvatarView(context, true, true, true); diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/NumberAbbreviatorTest.java b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/NumberAbbreviatorTest.java new file mode 100644 index 000000000..40071cf56 --- /dev/null +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/NumberAbbreviatorTest.java @@ -0,0 +1,55 @@ +package com.habitrpg.android.habitica.helpers; + +import android.content.Context; + +import com.habitrpg.android.habitica.BuildConfig; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; + +import static org.junit.Assert.*; + + +@Config(constants = BuildConfig.class) +@RunWith(value = RobolectricTestRunner.class) +public class NumberAbbreviatorTest { + + private Context context; + + @Before + public void setUp() { + context = RuntimeEnvironment.application; + } + + @Test + public void testThatItDoesntAbbreviatesSmallNumbers() { + assertEquals("215", NumberAbbreviator.abbreviate(context, 215)); + assertEquals("2.05", NumberAbbreviator.abbreviate(context, 2.05)); + } + + @Test + public void testThatItAbbreviatesThousand() { + assertEquals("1.55k", NumberAbbreviator.abbreviate(context, 1550)); + } + + @Test + public void testThatItAbbreviatesMillion() { + assertEquals("9.99m", NumberAbbreviator.abbreviate(context, 9990000)); + } + + @Test + public void testThatItAbbreviatesBillion() { + assertEquals("1.99b", NumberAbbreviator.abbreviate(context, 1990000000)); + } + + @Test + public void testThatItAbbreviatesThousandWithoutAdditionalDecimals() { + assertEquals("1k", NumberAbbreviator.abbreviate(context, 1000)); + assertEquals("1.5k", NumberAbbreviator.abbreviate(context, 1500)); + } + +} \ No newline at end of file