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