From 75ad7523cc3b83bd669dcf8909e43c9416a7efa9 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Sun, 15 Nov 2015 17:22:05 +0100 Subject: [PATCH] Display levelup popup --- Habitica/Habitica.iml | 12 +++--- Habitica/res/layout/levelup_dialog.xml | 22 ++++++++++ Habitica/res/values/strings.xml | 5 +++ .../android/habitica/MainActivity.java | 40 +++++++++++++++++-- .../lib/models/Preferences.java | 14 +++++++ .../lib/models/SuppressedModals.java | 33 +++++++++++++++ 6 files changed, 117 insertions(+), 9 deletions(-) create mode 100644 Habitica/res/layout/levelup_dialog.xml create mode 100644 Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/SuppressedModals.java diff --git a/Habitica/Habitica.iml b/Habitica/Habitica.iml index 51894536d..0a617fb2a 100644 --- a/Habitica/Habitica.iml +++ b/Habitica/Habitica.iml @@ -74,7 +74,7 @@ - + @@ -128,15 +128,15 @@ + - - + @@ -148,25 +148,25 @@ - + - + + - diff --git a/Habitica/res/layout/levelup_dialog.xml b/Habitica/res/layout/levelup_dialog.xml new file mode 100644 index 000000000..76d9a9a3b --- /dev/null +++ b/Habitica/res/layout/levelup_dialog.xml @@ -0,0 +1,22 @@ + + + + + + + + \ No newline at end of file diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index ede6592c2..76adedc4e 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -157,4 +157,9 @@ Gryphon 128307497299777 + You gained a level! + By accomplishing your real-life goals, you\'ve grown to Level %1$d! + You have been fully healed! + Huzzah! + \ No newline at end of file diff --git a/Habitica/src/com/habitrpg/android/habitica/MainActivity.java b/Habitica/src/com/habitrpg/android/habitica/MainActivity.java index df2f21417..a59c31058 100644 --- a/Habitica/src/com/habitrpg/android/habitica/MainActivity.java +++ b/Habitica/src/com/habitrpg/android/habitica/MainActivity.java @@ -1,6 +1,8 @@ package com.habitrpg.android.habitica; +import android.content.DialogInterface; import android.content.Intent; +import android.databinding.DataBindingUtil; import android.graphics.Color; import android.os.Bundle; import android.support.design.widget.Snackbar; @@ -13,13 +15,16 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.CompoundButton; +import android.widget.ImageView; import android.widget.TextView; +import com.afollestad.materialdialogs.MaterialDialog; import com.github.clans.fab.FloatingActionMenu; import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; import com.habitrpg.android.habitica.callbacks.TaskCreationCallback; import com.habitrpg.android.habitica.callbacks.TaskScoringCallback; import com.habitrpg.android.habitica.callbacks.TaskUpdateCallback; +import com.habitrpg.android.habitica.databinding.ValueBarBinding; import com.habitrpg.android.habitica.events.BuyRewardTappedEvent; import com.habitrpg.android.habitica.events.HabitScoreEvent; import com.habitrpg.android.habitica.events.TaskCheckedEvent; @@ -32,12 +37,14 @@ import com.habitrpg.android.habitica.events.commands.CreateTagCommand; import com.habitrpg.android.habitica.events.commands.FilterTasksByTagsCommand; import com.habitrpg.android.habitica.helpers.TagsHelper; import com.habitrpg.android.habitica.prefs.PrefsActivity; +import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel; import com.habitrpg.android.habitica.ui.EditTextDrawer; import com.habitrpg.android.habitica.ui.MainDrawerBuilder; import com.habitrpg.android.habitica.ui.adapter.HabitItemRecyclerViewAdapter; import com.habitrpg.android.habitica.ui.adapter.IReceiveNewEntries; import com.habitrpg.android.habitica.ui.fragments.TaskRecyclerViewFragment; import com.habitrpg.android.habitica.ui.helpers.Debounce; +import com.habitrpg.android.habitica.userpicture.UserPicture; import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; import com.magicmicky.habitrpgwrapper.lib.models.Tag; import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection; @@ -59,6 +66,8 @@ import com.raizlabs.android.dbflow.sql.language.Select; import com.raizlabs.android.dbflow.structure.BaseModel; import com.raizlabs.android.dbflow.structure.Model; +import org.w3c.dom.Text; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -337,12 +346,12 @@ public class MainActivity extends AvatarActivityBase implements HabitRPGUserCall //endregion Events private void notifyUser(double xp, double hp, double gold, - double lvl, double delta) { + int lvl, double delta) { StringBuilder message = new StringBuilder(); SnackbarDisplayType displayType = SnackbarDisplayType.NORMAL; if (lvl > User.getStats().getLvl()) { - message.append(getString(R.string.lvlup)); - //If user lvl up, we need to fetch again the data from the server... + displayLevelUpDialog(lvl); + this.mAPIHelper.retrieveUser(new HabitRPGUserCallback(this)); User.getStats().setLvl((int) lvl); showSnackbar(message.toString()); @@ -562,6 +571,7 @@ public class MainActivity extends AvatarActivityBase implements HabitRPGUserCall showSnackbar(data.get_tmp().getDrop().getDialog(), SnackbarDisplayType.DROP); } } + } @Override @@ -695,4 +705,28 @@ public class MainActivity extends AvatarActivityBase implements HabitRPGUserCall return true; } }; + + private void displayLevelUpDialog(int level) { + if (User.getPreferences().getSuppressModals().getLevelUp()) { + return; + } + MaterialDialog dialog = new MaterialDialog.Builder(this) + .title(R.string.levelup_header) + .customView(R.layout.levelup_dialog, true) + .positiveText(R.string.levelup_button) + .positiveColorRes(R.color.brand_100) + .build(); + + View customView = dialog.getCustomView(); + if (customView != null) { + TextView detailView = (TextView)customView.findViewById(R.id.levelupDetail); + detailView.setText(this.getString(R.string.levelup_detail, level)); + + ImageView avatarView = (ImageView)customView.findViewById(R.id.avatarView); + UserPicture userPicture = new UserPicture(User, this, false, false, false); + userPicture.setPictureOn(avatarView); + } + + dialog.show(); + } } \ No newline at end of file diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Preferences.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Preferences.java index 7825abbde..e9d0cecf9 100644 --- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Preferences.java +++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Preferences.java @@ -34,6 +34,12 @@ public class Preferences extends BaseModel { foreignColumnName = "userId")}) public Hair hair; + @Column + @ForeignKey(references = {@ForeignKeyReference(columnName = "suppressedModals_user_id", + columnType = String.class, + foreignColumnName = "userId")}) + public SuppressedModals suppressModals; + public Preferences() { } @@ -189,6 +195,14 @@ public class Preferences extends BaseModel { this.hair = hair; } + public SuppressedModals getSuppressModals() { + return suppressModals; + } + + public void setSuppressModals(SuppressedModals suppressModals) { + this.suppressModals = suppressModals; + } + @Override public void save() { hair.userId = userId; diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/SuppressedModals.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/SuppressedModals.java new file mode 100644 index 000000000..4a29b8258 --- /dev/null +++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/SuppressedModals.java @@ -0,0 +1,33 @@ +package com.magicmicky.habitrpgwrapper.lib.models; + +import com.habitrpg.android.habitica.HabitDatabase; +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.PrimaryKey; +import com.raizlabs.android.dbflow.annotation.Table; +import com.raizlabs.android.dbflow.structure.BaseModel; + +/** + * Created by viirus on 15/11/15. + */ +@Table(databaseName = HabitDatabase.NAME) +public class SuppressedModals extends BaseModel { + + @Column + @PrimaryKey + public String userId; + + private Boolean streak; + private Boolean raisePet; + private Boolean hatchPet; + private Boolean levelUp; + + public Boolean getStreak() {return streak; } + public Boolean getRaisePet() {return raisePet; } + public Boolean getHatchPet() {return hatchPet; } + public Boolean getLevelUp() {return levelUp; } + + public void setStreak(Boolean streak) {this.streak = streak; } + public void setRaisePet(Boolean raisePet) {this.raisePet = raisePet; } + public void setHatchPet(Boolean hatchPet) {this.hatchPet = hatchPet; } + public void setLevelUp(Boolean levelUp) {this.levelUp = levelUp; } +}