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