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; } }