diff --git a/Habitica/assets/migrations/Habitica/5.sql b/Habitica/assets/migrations/Habitica/5.sql
new file mode 100644
index 000000000..d1ebdf412
--- /dev/null
+++ b/Habitica/assets/migrations/Habitica/5.sql
@@ -0,0 +1 @@
+ALTER TABLE Hair ADD COLUMN 'flower' INTEGER DEFAULT 0;
\ No newline at end of file
diff --git a/Habitica/res/layout/avatar_overview_card.xml b/Habitica/res/layout/avatar_overview_card.xml
new file mode 100644
index 000000000..4ce643550
--- /dev/null
+++ b/Habitica/res/layout/avatar_overview_card.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/fragment_avatar_overview.xml b/Habitica/res/layout/fragment_avatar_overview.xml
new file mode 100644
index 000000000..741a53c64
--- /dev/null
+++ b/Habitica/res/layout/fragment_avatar_overview.xml
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/fragment_party_info.xml b/Habitica/res/layout/fragment_party_info.xml
index 7dc30041e..d264aa5a6 100644
--- a/Habitica/res/layout/fragment_party_info.xml
+++ b/Habitica/res/layout/fragment_party_info.xml
@@ -83,7 +83,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
- bind:imageName='@{"quest_"+ quest.key}'
+ bind:questImageName='@{"quest_"+ quest.key}'
/>
Yes
No
Quest
+ Body
+ Hair
+ Shirt
+ Skin
+ Animal Ears
+ Base
+ Color
+ Beard
+ Mustache
+ Flower
+ Bangs
+ Nothing set
+ Size
+ Slim
+ Broad
\ No newline at end of file
diff --git a/Habitica/res/values/values.xml b/Habitica/res/values/values.xml
index bab281936..79d847ad1 100644
--- a/Habitica/res/values/values.xml
+++ b/Habitica/res/values/values.xml
@@ -29,4 +29,9 @@
- @string/saturday
- @string/sunday
+
+
+ - @string/avatar_size_slim
+ - @string/avatar_size_broad
+
diff --git a/Habitica/src/com/habitrpg/android/habitica/HabitDatabase.java b/Habitica/src/com/habitrpg/android/habitica/HabitDatabase.java
index c4e3dc580..728160b99 100644
--- a/Habitica/src/com/habitrpg/android/habitica/HabitDatabase.java
+++ b/Habitica/src/com/habitrpg/android/habitica/HabitDatabase.java
@@ -10,5 +10,5 @@ public class HabitDatabase {
public static final String NAME = "Habitica";
- public static final int VERSION = 4;
+ public static final int VERSION = 5;
}
diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java b/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java
index 840e6d044..ade62d2e2 100644
--- a/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java
+++ b/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java
@@ -9,6 +9,7 @@ import com.habitrpg.android.habitica.ui.activities.AboutActivity;
import com.habitrpg.android.habitica.ui.activities.MainActivity;
import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.ui.activities.PrefsActivity;
+import com.habitrpg.android.habitica.ui.fragments.AvatarOverviewFragment;
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
import com.habitrpg.android.habitica.ui.fragments.GemsPurchaseFragment;
import com.habitrpg.android.habitica.ui.fragments.PartyFragment;
@@ -37,9 +38,12 @@ public class MainDrawerBuilder {
public static final int SIDEBAR_SKILLS = 1;
public static final int SIDEBAR_TAVERN = 3;
public static final int SIDEBAR_PARTY = 4;
- public static final int SIDEBAR_PURCHASE = 5;
- public static final int SIDEBAR_SETTINGS = 7;
- public static final int SIDEBAR_ABOUT = 8;
+ public static final int SIDEBAR_AVATAR = 5;
+ public static final int SIDEBAR_EQUIPMENT = 6;
+ public static final int SIDEBAR_STABLE = 7;
+ public static final int SIDEBAR_PURCHASE = 8;
+ public static final int SIDEBAR_SETTINGS = 9;
+ public static final int SIDEBAR_ABOUT = 10;
@@ -82,9 +86,9 @@ public class MainDrawerBuilder {
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_challenges)),*/
new SectionDrawerItem().withName(activity.getString(R.string.sidebar_section_inventory)),
- new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_avatar)).withEnabled(false).withBadge(R.string.coming_soon),
- new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_equipment)).withEnabled(false).withBadge(R.string.coming_soon),
- new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_stable)).withEnabled(false).withBadge(R.string.coming_soon),
+ new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_avatar)).withIdentifier(SIDEBAR_AVATAR),
+ new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_equipment)).withIdentifier(SIDEBAR_EQUIPMENT).withEnabled(false).withBadge(R.string.coming_soon),
+ new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_stable)).withIdentifier(SIDEBAR_STABLE).withEnabled(false).withBadge(R.string.coming_soon),
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_purchaseGems)).withIdentifier(SIDEBAR_PURCHASE),
new DividerDrawerItem(),
@@ -117,6 +121,10 @@ public class MainDrawerBuilder {
fragment = new TavernFragment();
break;
}
+ case SIDEBAR_AVATAR: {
+ fragment = new AvatarOverviewFragment();
+ break;
+ }
case SIDEBAR_PURCHASE: {
fragment = new GemsPurchaseFragment();
break;
diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/AvatarOverviewFragment.java b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/AvatarOverviewFragment.java
new file mode 100644
index 000000000..d660e5e2d
--- /dev/null
+++ b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/AvatarOverviewFragment.java
@@ -0,0 +1,83 @@
+package com.habitrpg.android.habitica.ui.fragments;
+
+import android.databinding.DataBindingUtil;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.Spinner;
+
+import com.habitrpg.android.habitica.R;
+import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
+import com.habitrpg.android.habitica.databinding.FragmentAvatarOverviewBinding;
+import com.habitrpg.android.habitica.databinding.FragmentPartyInfoBinding;
+import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import butterknife.Bind;
+import butterknife.ButterKnife;
+
+/**
+ * Created by viirus on 12/01/16.
+ */
+public class AvatarOverviewFragment extends BaseFragment implements AdapterView.OnItemSelectedListener {
+
+ FragmentAvatarOverviewBinding viewBinding;
+
+ @Bind(R.id.avatar_size_spinner)
+ Spinner avatarSizeSpinner;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ super.onCreateView(inflater, container, savedInstanceState);
+ View v = inflater.inflate(R.layout.fragment_avatar_overview, container, false);
+
+ viewBinding = DataBindingUtil.bind(v);
+ viewBinding.setPreferences(this.user.getPreferences());
+
+ ButterKnife.bind(this, v);
+
+ this.setSize(this.user.getPreferences().getSize());
+ avatarSizeSpinner.setOnItemSelectedListener(this);
+
+ return v;
+ }
+
+ @Override
+ public void updateUserData(HabitRPGUser user) {
+ super.updateUserData(user);
+ viewBinding.setPreferences(user.getPreferences());
+ this.setSize(user.getPreferences().getSize());
+ }
+
+ private void setSize(String size) {
+ if (size.equals("slim")) {
+ avatarSizeSpinner.setSelection(0, false);
+ } else {
+ avatarSizeSpinner.setSelection(1, false);
+ }
+ }
+
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ String newSize;
+ if (position == 0) {
+ newSize = "slim";
+ } else {
+ newSize = "broad";
+ }
+
+ if (!this.user.getPreferences().getSize().equals(newSize)) {
+ Map updateData = new HashMap();
+ updateData.put("preferences.size", newSize);
+ mAPIHelper.apiService.updateUser(updateData, new HabitRPGUserCallback(activity));
+ }
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {}
+}
diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java b/Habitica/src/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java
index 2a9ab831b..b68a44339 100644
--- a/Habitica/src/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java
+++ b/Habitica/src/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java
@@ -24,6 +24,15 @@ public class DataBindingUtils {
@BindingAdapter("bind:imageName")
public static void loadImage(ImageView view, String imageName) {
+ if (view.getVisibility() == View.VISIBLE) {
+ Picasso.with(view.getContext())
+ .load("https://habitica-assets.s3.amazonaws.com/mobileApp/images/" + imageName + ".png")
+ .into(view);
+ }
+ }
+
+ @BindingAdapter("bind:questImageName")
+ public static void loadQuestImage(ImageView view, String imageName) {
if (view.getVisibility() == View.VISIBLE) {
Picasso.with(view.getContext())
.load("https://habitica-assets.s3.amazonaws.com/mobileApp/images/" + imageName + ".png")
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Hair.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Hair.java
index 082b63df8..6829241d5 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Hair.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Hair.java
@@ -16,19 +16,20 @@ public class Hair extends BaseModel {
public String userId;
@Column
- private int mustache,beard, bangs,base;
+ private int mustache,beard, bangs,base, flower;
@Column
private String color;
public Hair() {
}
- public Hair(int mustache, int beard, int bangs, int base, String color) {
+ public Hair(int mustache, int beard, int bangs, int base, String color, int flower) {
this.mustache = mustache;
this.beard = beard;
this.bangs = bangs;
this.base = base;
this.color = color;
+ this.flower = flower;
}
public int getMustache() {
@@ -70,4 +71,8 @@ public class Hair extends BaseModel {
public void setColor(String color) {
this.color = color;
}
+
+ public int getFlower() { return flower; }
+
+ public void setFlower(int flower) { this.flower = flower; }
}