diff --git a/Habitica/Habitica.iml b/Habitica/Habitica.iml
index 91349e54a..603d0732f 100644
--- a/Habitica/Habitica.iml
+++ b/Habitica/Habitica.iml
@@ -68,18 +68,18 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
@@ -109,58 +109,63 @@
+
-
+
+
-
-
+
+
-
+
+
-
+
-
+
+
+
+
-
-
-
+
-
-
-
+
+
-
-
+
+
+
-
-
-
+
+
+
-
+
-
+
+
+
+
-
-
\ No newline at end of file
diff --git a/Habitica/build.gradle b/Habitica/build.gradle
index 0a7f6a852..8bed35020 100644
--- a/Habitica/build.gradle
+++ b/Habitica/build.gradle
@@ -34,7 +34,10 @@ repositories {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.squareup.retrofit:retrofit:1.6.0'
+ compile 'io.reactivex:rxjava:1.0.10'
+ compile 'com.squareup.okhttp:okhttp-urlconnection:2.3.0'
+ compile 'com.squareup.okhttp:okhttp:2.3.0'
+ compile 'com.squareup.retrofit:retrofit:1.9.0'
compile('com.crashlytics.sdk.android:crashlytics:2.3.0@aar') {
transitive = true;
diff --git a/Habitica/res/drawable-hdpi/triangle_bad.9.png b/Habitica/res/drawable-hdpi/triangle_bad.9.png
deleted file mode 100644
index 41215801d..000000000
Binary files a/Habitica/res/drawable-hdpi/triangle_bad.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-hdpi/triangle_best.9.png b/Habitica/res/drawable-hdpi/triangle_best.9.png
deleted file mode 100644
index c286ccf7c..000000000
Binary files a/Habitica/res/drawable-hdpi/triangle_best.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-hdpi/triangle_better.9.png b/Habitica/res/drawable-hdpi/triangle_better.9.png
deleted file mode 100644
index af79d95cf..000000000
Binary files a/Habitica/res/drawable-hdpi/triangle_better.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-hdpi/triangle_completed.9.png b/Habitica/res/drawable-hdpi/triangle_completed.9.png
deleted file mode 100644
index a5e10b32c..000000000
Binary files a/Habitica/res/drawable-hdpi/triangle_completed.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-hdpi/triangle_good.9.png b/Habitica/res/drawable-hdpi/triangle_good.9.png
deleted file mode 100644
index 07fadb2f6..000000000
Binary files a/Habitica/res/drawable-hdpi/triangle_good.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-hdpi/triangle_neutral.9.png b/Habitica/res/drawable-hdpi/triangle_neutral.9.png
deleted file mode 100644
index 2a827edbc..000000000
Binary files a/Habitica/res/drawable-hdpi/triangle_neutral.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-hdpi/triangle_worse.9.png b/Habitica/res/drawable-hdpi/triangle_worse.9.png
deleted file mode 100644
index bb718a4c4..000000000
Binary files a/Habitica/res/drawable-hdpi/triangle_worse.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-hdpi/triangle_worst.9.png b/Habitica/res/drawable-hdpi/triangle_worst.9.png
deleted file mode 100644
index 4e4732cde..000000000
Binary files a/Habitica/res/drawable-hdpi/triangle_worst.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-ldpi/triangle_bad.9.png b/Habitica/res/drawable-ldpi/triangle_bad.9.png
deleted file mode 100644
index 6adb0efd9..000000000
Binary files a/Habitica/res/drawable-ldpi/triangle_bad.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-ldpi/triangle_best.9.png b/Habitica/res/drawable-ldpi/triangle_best.9.png
deleted file mode 100644
index 8438c2bd6..000000000
Binary files a/Habitica/res/drawable-ldpi/triangle_best.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-ldpi/triangle_better.9.png b/Habitica/res/drawable-ldpi/triangle_better.9.png
deleted file mode 100644
index f0116622f..000000000
Binary files a/Habitica/res/drawable-ldpi/triangle_better.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-ldpi/triangle_completed.9.png b/Habitica/res/drawable-ldpi/triangle_completed.9.png
deleted file mode 100644
index 89af98fd7..000000000
Binary files a/Habitica/res/drawable-ldpi/triangle_completed.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-ldpi/triangle_good.9.png b/Habitica/res/drawable-ldpi/triangle_good.9.png
deleted file mode 100644
index ebf1c7d4f..000000000
Binary files a/Habitica/res/drawable-ldpi/triangle_good.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-ldpi/triangle_neutral.9.png b/Habitica/res/drawable-ldpi/triangle_neutral.9.png
deleted file mode 100644
index 029a7f43a..000000000
Binary files a/Habitica/res/drawable-ldpi/triangle_neutral.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-ldpi/triangle_worse.9.png b/Habitica/res/drawable-ldpi/triangle_worse.9.png
deleted file mode 100644
index 2d42f1b70..000000000
Binary files a/Habitica/res/drawable-ldpi/triangle_worse.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-ldpi/triangle_worst.9.png b/Habitica/res/drawable-ldpi/triangle_worst.9.png
deleted file mode 100644
index d17151748..000000000
Binary files a/Habitica/res/drawable-ldpi/triangle_worst.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-mdpi/triangle_bad.9.png b/Habitica/res/drawable-mdpi/triangle_bad.9.png
deleted file mode 100644
index 7625e9e2a..000000000
Binary files a/Habitica/res/drawable-mdpi/triangle_bad.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-mdpi/triangle_best.9.png b/Habitica/res/drawable-mdpi/triangle_best.9.png
deleted file mode 100644
index 2cc5e794f..000000000
Binary files a/Habitica/res/drawable-mdpi/triangle_best.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-mdpi/triangle_better.9.png b/Habitica/res/drawable-mdpi/triangle_better.9.png
deleted file mode 100644
index 75016b3c6..000000000
Binary files a/Habitica/res/drawable-mdpi/triangle_better.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-mdpi/triangle_completed.9.png b/Habitica/res/drawable-mdpi/triangle_completed.9.png
deleted file mode 100644
index 789dbe2f2..000000000
Binary files a/Habitica/res/drawable-mdpi/triangle_completed.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-mdpi/triangle_good.9.png b/Habitica/res/drawable-mdpi/triangle_good.9.png
deleted file mode 100644
index 00abe5d6d..000000000
Binary files a/Habitica/res/drawable-mdpi/triangle_good.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-mdpi/triangle_neutral.9.png b/Habitica/res/drawable-mdpi/triangle_neutral.9.png
deleted file mode 100644
index 00fbf1db8..000000000
Binary files a/Habitica/res/drawable-mdpi/triangle_neutral.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-mdpi/triangle_worse.9.png b/Habitica/res/drawable-mdpi/triangle_worse.9.png
deleted file mode 100644
index 4ba685543..000000000
Binary files a/Habitica/res/drawable-mdpi/triangle_worse.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-mdpi/triangle_worst.9.png b/Habitica/res/drawable-mdpi/triangle_worst.9.png
deleted file mode 100644
index a174527a1..000000000
Binary files a/Habitica/res/drawable-mdpi/triangle_worst.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-xhdpi/triangle_bad.9.png b/Habitica/res/drawable-xhdpi/triangle_bad.9.png
deleted file mode 100644
index f20b6bdec..000000000
Binary files a/Habitica/res/drawable-xhdpi/triangle_bad.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-xhdpi/triangle_best.9.png b/Habitica/res/drawable-xhdpi/triangle_best.9.png
deleted file mode 100644
index 692bb5bb7..000000000
Binary files a/Habitica/res/drawable-xhdpi/triangle_best.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-xhdpi/triangle_better.9.png b/Habitica/res/drawable-xhdpi/triangle_better.9.png
deleted file mode 100644
index 90b20bea4..000000000
Binary files a/Habitica/res/drawable-xhdpi/triangle_better.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-xhdpi/triangle_completed.9.png b/Habitica/res/drawable-xhdpi/triangle_completed.9.png
deleted file mode 100644
index dc8a9f4d6..000000000
Binary files a/Habitica/res/drawable-xhdpi/triangle_completed.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-xhdpi/triangle_good.9.png b/Habitica/res/drawable-xhdpi/triangle_good.9.png
deleted file mode 100644
index 818df4fad..000000000
Binary files a/Habitica/res/drawable-xhdpi/triangle_good.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-xhdpi/triangle_neutral.9.png b/Habitica/res/drawable-xhdpi/triangle_neutral.9.png
deleted file mode 100644
index 8b7f26cb5..000000000
Binary files a/Habitica/res/drawable-xhdpi/triangle_neutral.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-xhdpi/triangle_worse.9.png b/Habitica/res/drawable-xhdpi/triangle_worse.9.png
deleted file mode 100644
index b861df10d..000000000
Binary files a/Habitica/res/drawable-xhdpi/triangle_worse.9.png and /dev/null differ
diff --git a/Habitica/res/drawable-xhdpi/triangle_worst.9.png b/Habitica/res/drawable-xhdpi/triangle_worst.9.png
deleted file mode 100644
index 88439d103..000000000
Binary files a/Habitica/res/drawable-xhdpi/triangle_worst.9.png and /dev/null differ
diff --git a/Habitica/res/drawable/card_background_shadow.9.png b/Habitica/res/drawable/card_background_shadow.9.png
deleted file mode 100644
index 5f5c28dd5..000000000
Binary files a/Habitica/res/drawable/card_background_shadow.9.png and /dev/null differ
diff --git a/Habitica/res/drawable/chest.png b/Habitica/res/drawable/chest.png
deleted file mode 100644
index 2fc885da1..000000000
Binary files a/Habitica/res/drawable/chest.png and /dev/null differ
diff --git a/Habitica/res/drawable/female_sprites.png b/Habitica/res/drawable/female_sprites.png
deleted file mode 100644
index 1456ff633..000000000
Binary files a/Habitica/res/drawable/female_sprites.png and /dev/null differ
diff --git a/Habitica/res/drawable/layout_rounded_bg.xml b/Habitica/res/drawable/layout_rounded_bg.xml
new file mode 100644
index 000000000..b086829ae
--- /dev/null
+++ b/Habitica/res/drawable/layout_rounded_bg.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/drawable/layout_rounded_bg_brand.xml b/Habitica/res/drawable/layout_rounded_bg_brand.xml
new file mode 100644
index 000000000..7382351de
--- /dev/null
+++ b/Habitica/res/drawable/layout_rounded_bg_brand.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/drawable/male_sprites.png b/Habitica/res/drawable/male_sprites.png
deleted file mode 100644
index 126f9b173..000000000
Binary files a/Habitica/res/drawable/male_sprites.png and /dev/null differ
diff --git a/Habitica/res/drawable/shop_sprites.png b/Habitica/res/drawable/shop_sprites.png
deleted file mode 100644
index c012533b1..000000000
Binary files a/Habitica/res/drawable/shop_sprites.png and /dev/null differ
diff --git a/Habitica/res/drawable/spritesmith.png b/Habitica/res/drawable/spritesmith.png
deleted file mode 100644
index 927196511..000000000
Binary files a/Habitica/res/drawable/spritesmith.png and /dev/null differ
diff --git a/Habitica/res/layout/avatar_with_bars.xml b/Habitica/res/layout/avatar_with_bars.xml
index 9f51300b8..649e63158 100644
--- a/Habitica/res/layout/avatar_with_bars.xml
+++ b/Habitica/res/layout/avatar_with_bars.xml
@@ -10,13 +10,19 @@
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal"
- android:paddingRight="@dimen/activity_horizontal_margin">
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingEnd="@dimen/activity_horizontal_margin"
+ android:paddingTop="8dp">
diff --git a/Habitica/res/layout/daily_item_card.xml b/Habitica/res/layout/daily_item_card.xml
index 9b54d9a01..f36eb4343 100644
--- a/Habitica/res/layout/daily_item_card.xml
+++ b/Habitica/res/layout/daily_item_card.xml
@@ -3,68 +3,105 @@
+
-
-
-
+
-
-
+
-
-
-
+ android:checked="@{daily.completed}"
+ app:backgroundColor="@{daily.getLightTaskColor}"
+ android:gravity="center"
+ android:layout_gravity="center_horizontal" />
+
-
+
-
+ android:text="@{daily.notes}"
+ android:visibility="@{daily.notes != null ? View.VISIBLE : View.GONE}"/>
+
+
+
+
+
+
+
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/habit_item_card.xml b/Habitica/res/layout/habit_item_card.xml
index e06c83932..9e3b62c91 100644
--- a/Habitica/res/layout/habit_item_card.xml
+++ b/Habitica/res/layout/habit_item_card.xml
@@ -11,59 +11,42 @@
type="Task" />
-
-
-
+
-
+ android:layout_height="match_parent">
+
+
+
+
-
-
-
-
-
-
-
-
+
-
+
-
-
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/reward_item_card.xml b/Habitica/res/layout/reward_item_card.xml
index 5be1554ed..97f5a0185 100644
--- a/Habitica/res/layout/reward_item_card.xml
+++ b/Habitica/res/layout/reward_item_card.xml
@@ -3,37 +3,29 @@
-
+
+ type="Task" />
-
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:background="@color/white">
-
+ android:layout_height="wrap_content">
+ android:layout_height="match_parent">
-
-
@@ -51,6 +45,8 @@
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/checkedTextView"
android:layout_alignStart="@+id/checkedTextView"
+ android:layout_alignRight="@+id/checkedTextView"
+ android:layout_alignEnd="@+id/checkedTextView"
android:layout_below="@+id/checkedTextView"
android:maxLines="3"
android:minLines="2"
@@ -58,22 +54,13 @@
android:paddingRight="5dp"
android:text="@{reward.notes}" />
-
-
@@ -83,16 +70,16 @@
android:layout_width="65dp"
android:padding="5dp"
android:layout_height="wrap_content"
- android:layout_above="@+id/separator"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
- android:layout_alignParentTop="true"
+ android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
+ android:layout_marginStart="5dp"
app:imageName="@{reward.id}"/>
-
+
-
+
\ No newline at end of file
diff --git a/Habitica/res/layout/todo_item_card.xml b/Habitica/res/layout/todo_item_card.xml
index 424e60197..623943e4c 100644
--- a/Habitica/res/layout/todo_item_card.xml
+++ b/Habitica/res/layout/todo_item_card.xml
@@ -3,46 +3,33 @@
+
-
-
-
+
-
-
+
+
-
-
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/value_bar.xml b/Habitica/res/layout/value_bar.xml
index 304450091..2e80ef228 100644
--- a/Habitica/res/layout/value_bar.xml
+++ b/Habitica/res/layout/value_bar.xml
@@ -6,6 +6,9 @@
+
-
-
-
+ android:orientation="vertical">
-
-
-
+ android:layout_height="wrap_content">
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/colors.xml b/Habitica/res/values/colors.xml
index 8074824a8..24a01b3dc 100644
--- a/Habitica/res/values/colors.xml
+++ b/Habitica/res/values/colors.xml
@@ -1,40 +1,56 @@
- #da5353
- #fcf0f0
- #250808
- #ffcc35
- #fffbf0
- #2e2200
- #4781e7
- #eff4fd
- #051228
- #7a12f8
+
+ #36205D
+ #432874
+ #4F2A93
+ #6133B4
+ #9A62FF
+ #BDA8FF
+ @color/brand_100
- #E6B8AF
- #c96652
- #F4CCCC
- #dc5d5d
+ #E6B8AF
+ #c96652
+ #c96652
- #FCE5CD
- #f4a24c
+ #FF6165
+ #F74E52
+ #F23035
- #FFF2CC
- #ffcf42
+ #FF944C
+ #FA8537
+ #F47825
- #D9EAD3
- #8bbf79
+ #FFBE5D
+ #FFB445
+ #FFA624
- #D0E0E3
- #7eaab2
+ #D9EAD3
+ #8bbf79
+ #8bbf79
- #C9DAF8
- #5288e9
+ #5AE4B2
+ #3FDAA2
+ #23CC8F
+
+ #50B5E9
+ #46A7D9
+ #2995CD
#D9D9D9
#989898
+ @color/worse_100
+ #fcf0f0
+ #250808
+ @color/neutral_100
+ #fffbf0
+ #2e2200
+ @color/best_100
+ #eff4fd
+ #051228
+
#ffcf42
@@ -71,8 +87,10 @@
#1FFFFFFF
#202020
- @color/material_drawer_primary
+ @color/brand
#FFF
#ffd8dcdd
+
+ #c3c2c6
\ No newline at end of file
diff --git a/Habitica/res/values/dimens.xml b/Habitica/res/values/dimens.xml
index 5e5a197b8..cdaf4cad2 100644
--- a/Habitica/res/values/dimens.xml
+++ b/Habitica/res/values/dimens.xml
@@ -11,11 +11,11 @@
14.0sp
16.0dip
- 29dp
- 25dp
+ 15dp
5dp
- 140dp
- 147dp
+ 5dp
+ 150dp
+ 120dp
70dp
48dp
@@ -32,4 +32,10 @@
20dp
+
+ 60dp
+
+ 0.5dp
+ 14dp
+ 36dp
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index e67cf4404..7c1c108e1 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -6,8 +6,9 @@
Refresh
+
-
- XP
- HP
+ Experience
+ Health
+ Mana
%1$d-%2$d-%3$d
Task added
LVL UP!
@@ -106,7 +107,6 @@
Close
SP_last_version
- MP
Update
About
diff --git a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java
index 0d001de3c..d65d17f4b 100644
--- a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java
+++ b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java
@@ -12,6 +12,7 @@ import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter;
+import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
@@ -25,10 +26,12 @@ import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.Reward;
+import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
import com.raizlabs.android.dbflow.structure.ModelAdapter;
import java.io.IOException;
+import java.lang.reflect.Type;
+import java.util.List;
import retrofit.Callback;
import retrofit.ErrorHandler;
@@ -59,7 +62,11 @@ public class APIHelper implements ErrorHandler, Profiler {
}
};
- //Exclusion stratety needed for DBFlow https://github.com/Raizlabs/DBFlow/issues/121
+
+ Type taskTagClassListType = new TypeToken>() {}.getType();
+
+
+ //Exclusion stratety needed for DBFlow https://github.com/Raizlabs/DBFlow/issues/121
Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
@@ -72,7 +79,7 @@ public class APIHelper implements ErrorHandler, Profiler {
return false;
}
})
- .registerTypeAdapter(TagsAdapter.class, new TagsAdapter().nullSafe())
+ .registerTypeAdapter(taskTagClassListType, new TagsAdapter())
.registerTypeAdapter(Boolean.class, booleanAsIntAdapter)
.registerTypeAdapter(boolean.class, booleanAsIntAdapter)
.create();
@@ -152,11 +159,7 @@ public class APIHelper implements ErrorHandler, Profiler {
}
public void updateTask(Task item, Callback cb) {
- if(item instanceof Task) {
this.apiService.updateTask(item.getId(), item, cb);
- } else if(item instanceof Reward) {
- this.apiService.updateTask(item.getId(), item, cb);
- }
}
//public void buyItem(Reward.SpecialReward itemBought, View btn) {
diff --git a/Habitica/src/com/habitrpg/android/habitica/MainActivity.java b/Habitica/src/com/habitrpg/android/habitica/MainActivity.java
index a0f9968bb..d4945ee31 100644
--- a/Habitica/src/com/habitrpg/android/habitica/MainActivity.java
+++ b/Habitica/src/com/habitrpg/android/habitica/MainActivity.java
@@ -37,8 +37,6 @@ import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.Reward;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.RewardItem;
import com.mikepenz.materialdrawer.Drawer;
import com.mikepenz.materialdrawer.DrawerBuilder;
import com.mikepenz.materialdrawer.model.DividerDrawerItem;
@@ -279,7 +277,7 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
}
public void onEvent(TaskTappedEvent event) {
- if(event.Task instanceof RewardItem)
+ if(event.Task.type.equals("reward"))
return;
Bundle bundle = new Bundle();
@@ -320,6 +318,9 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
return;
}
+ mAPIHelper.updateTaskDirection(rewardKey, TaskDirection.down, new TaskScoringCallback(this));
+
+ /*
if (event.Reward instanceof RewardItem) {
if (rewardKey.equals("potion")) {
int currentHp = User.getStats().getHp().intValue();
@@ -356,8 +357,7 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
});
} else {
// User created Rewards
- mAPIHelper.updateTaskDirection(rewardKey, TaskDirection.down, new TaskScoringCallback(this));
- }
+ }*/
}
public void onEvent(final TaskSaveEvent event) {
@@ -411,8 +411,6 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
}
- private ObservableArrayList GearRewards = new ObservableArrayList<>();
-
public void loadTaskLists() {
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
@@ -440,7 +438,7 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
break;
case 3:
layoutOfType = R.layout.reward_item_card;
- fragment = TaskRecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter("reward", Reward.class, layoutOfType, HabitItemRecyclerViewAdapter.RewardViewHolder.class, context), Reward.class);
+ fragment = TaskRecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter("reward", Task.class, layoutOfType, HabitItemRecyclerViewAdapter.RewardViewHolder.class, context), Task.class);
break;
default:
layoutOfType = R.layout.todo_item_card;
@@ -577,7 +575,7 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
keyCondition = keyCondition.and(item.key);
}
-
+/*
ConditionQueryBuilder queryBuilder = new ConditionQueryBuilder(ItemData.class,
keyCondition);
@@ -597,6 +595,7 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
GearRewards.clear();
GearRewards.addAll(rewardList);
+ */
}
@Override
diff --git a/Habitica/src/com/habitrpg/android/habitica/events/BuyRewardTappedEvent.java b/Habitica/src/com/habitrpg/android/habitica/events/BuyRewardTappedEvent.java
index 61f3d4630..0d1086552 100644
--- a/Habitica/src/com/habitrpg/android/habitica/events/BuyRewardTappedEvent.java
+++ b/Habitica/src/com/habitrpg/android/habitica/events/BuyRewardTappedEvent.java
@@ -1,10 +1,10 @@
package com.habitrpg.android.habitica.events;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.Reward;
+import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
/**
* Created by Negue on 11.07.2015.
*/
public class BuyRewardTappedEvent {
- public Reward Reward;
+ public Task Reward;
}
diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java b/Habitica/src/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java
index b2edb026a..047963138 100644
--- a/Habitica/src/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java
+++ b/Habitica/src/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java
@@ -3,6 +3,9 @@ package com.habitrpg.android.habitica.ui;
import android.content.Context;
import android.databinding.BindingAdapter;
import android.databinding.DataBindingUtil;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
@@ -52,31 +55,25 @@ public class AvatarWithBarsViewModel {
mpBar = DataBindingUtil.bind(v.findViewById(R.id.mpBar));
- SetValueBar(hpBar, 50, 50, context.getString(R.string.HP_default),
- res.getColor(R.color.hpColor), res.getColor(R.color.hpColorBackground), res.getColor(R.color.hpColorForeground));
- SetValueBar(xpBar, 1, 1, context.getString(R.string.XP_default),
- res.getColor(R.color.xpColor), res.getColor(R.color.xpColorBackground), res.getColor(R.color.xpColorForeground));
- SetValueBar(mpBar, 100, 100, context.getString(R.string.MP_default),
- res.getColor(R.color.mpColor), res.getColor(R.color.mpColorBackground),res.getColor(R.color.mpColorForeground));
+ SetValueBar(hpBar, 50, 50, context.getString(R.string.HP_default), R.color.hpColor);
+ SetValueBar(xpBar, 1, 1, context.getString(R.string.XP_default), R.color.xpColor);
+ SetValueBar(mpBar, 100, 100, context.getString(R.string.MP_default), R.color.mpColor);
}
public void UpdateData(HabitRPGUser user)
{
Stats stats = user.getStats();
- SetValueBar(hpBar, stats.getHp().floatValue(), stats.getMaxHealth(), context.getString(R.string.HP_default),
- res.getColor(R.color.hpColor), res.getColor(R.color.hpColorBackground), res.getColor(R.color.hpColorForeground));
- SetValueBar(xpBar, stats.getExp().floatValue(), stats.getToNextLevel(), context.getString(R.string.XP_default),
- res.getColor(R.color.xpColor), res.getColor(R.color.xpColorBackground), res.getColor(R.color.xpColorForeground));
- SetValueBar(mpBar, stats.getMp().floatValue(), stats.getMaxMP(), context.getString(R.string.MP_default),
- res.getColor(R.color.mpColor), res.getColor(R.color.mpColorBackground),res.getColor(R.color.mpColorForeground));
+ SetValueBar(hpBar, stats.getHp().floatValue(), stats.getMaxHealth(), context.getString(R.string.HP_default), context.getResources().getColor(R.color.hpColor));
+ SetValueBar(xpBar, stats.getExp().floatValue(), stats.getToNextLevel(), context.getString(R.string.XP_default), context.getResources().getColor(R.color.xpColor));
+ SetValueBar(mpBar, stats.getMp().floatValue(), stats.getMaxMP(), context.getString(R.string.MP_default), context.getResources().getColor(R.color.mpColor));
new UserPicture(user, this.context).setPictureOn(image);
}
// Layout_Weight don't accepts 0.7/0.3 to have 70% filled instead it shows the 30% , so I had to switch the values
// but on a 1.0/0.0 which switches to 0.0/1.0 it shows the blank part full size...
- private void SetValueBar(ValueBarBinding valueBar, float value, float valueMax, String postString, int color, int colorBackground, int textColor)
+ private void SetValueBar(ValueBarBinding valueBar, float value, float valueMax, String description, int color)
{
double percent = Math.min(1, value / valueMax);
@@ -91,17 +88,16 @@ public class AvatarWithBarsViewModel {
valueBar.setWeightToHide((float) percent);
}
- valueBar.setText((int) value + "/" + (int) valueMax + " " + postString);
+ valueBar.setText((int) value + "/" + (int) valueMax);
+ valueBar.setDescription(description);
valueBar.setBarForegroundColor(color);
- valueBar.setBarBackgroundColor(colorBackground);
- valueBar.setTextColor(textColor);
}
@BindingAdapter("app:layout_weight")
public static void setLayoutWeight(View view, float weight) {
LinearLayout.LayoutParams layout = (LinearLayout.LayoutParams)view.getLayoutParams();
- Log.d("setLayoutWeight", weight+"");
+ Log.d("setLayoutWeight", weight + "");
layout.weight = weight;
@@ -116,6 +112,17 @@ public class AvatarWithBarsViewModel {
view.startAnimation(anim);
}
+ @BindingAdapter("app:rounded_background")
+ public static void setRoundedBackground(View view, int color) {
+ Drawable drawable = view.getResources().getDrawable(R.drawable.layout_rounded_bg);
+ drawable.setColorFilter(color, PorterDuff.Mode.MULTIPLY);
+ if(Build.VERSION.SDK_INT < 16) {
+ view.setBackgroundDrawable(drawable);
+ } else {
+ view.setBackground(drawable);
+ }
+ }
+
public static class LayoutWeightAnimation extends Animation {
float targetWeight;
float initializeWeight;
diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/adapter/HabitItemRecyclerViewAdapter.java b/Habitica/src/com/habitrpg/android/habitica/ui/adapter/HabitItemRecyclerViewAdapter.java
index 99a46064c..8732ce30b 100644
--- a/Habitica/src/com/habitrpg/android/habitica/ui/adapter/HabitItemRecyclerViewAdapter.java
+++ b/Habitica/src/com/habitrpg/android/habitica/ui/adapter/HabitItemRecyclerViewAdapter.java
@@ -5,8 +5,6 @@ import android.databinding.BindingAdapter;
import android.databinding.DataBindingUtil;
import android.databinding.ObservableArrayList;
import android.databinding.ObservableList;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
@@ -32,15 +30,12 @@ import com.habitrpg.android.habitica.events.TaskTappedEvent;
import com.habitrpg.android.habitica.events.TodoCheckedEvent;
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.Reward;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.RewardItem;
import com.raizlabs.android.dbflow.runtime.FlowContentObserver;
import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.language.Select;
import com.raizlabs.android.dbflow.structure.BaseModel;
import com.raizlabs.android.dbflow.structure.Model;
import com.squareup.picasso.Picasso;
-import com.squareup.picasso.Target;
import java.util.List;
@@ -174,8 +169,6 @@ public class HabitItemRecyclerViewAdapter
return new HabitItemRecyclerViewAdapter.TodoViewHolder(view);
case "RewardViewHolder":
return new HabitItemRecyclerViewAdapter.RewardViewHolder(view);
- case "RewardItemViewHolder":
- return new HabitItemRecyclerViewAdapter.RewardItemViewHolder(view);
}
}
}
@@ -224,14 +217,13 @@ public class HabitItemRecyclerViewAdapter
ViewHelper.SetBackgroundTint(view, view.getResources().getColor(color));
}
+ @BindingAdapter("app:backgroundColor")
+ public static void setBackgroundTintColor(View view, int color) {
+ view.setBackgroundColor(view.getResources().getColor(color));
+ }
+
public abstract class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
- @InjectView(R.id.card_view)
- protected CardView cardView;
-
- @InjectView(R.id.checkedTextView)
- protected CheckedTextView checkedTextView;
-
protected android.content.res.Resources resources;
public THabitItem Item;
@@ -376,7 +368,7 @@ public class HabitItemRecyclerViewAdapter
}
}
- public class RewardViewHolder extends ViewHolder {
+ public class RewardViewHolder extends ViewHolder {
RewardItemCardBinding binding;
public RewardViewHolder(View itemView) {
@@ -401,58 +393,14 @@ public class HabitItemRecyclerViewAdapter
}
@Override
- public void bindHolder(Reward habitItem, int position) {
- super.bindHolder(habitItem, position);
+ public void bindHolder(Task reward, int position) {
+ super.bindHolder(reward, position);
- binding.setReward(habitItem);
+ binding.setReward(reward);
}
}
- public class RewardItemViewHolder extends ViewHolder implements Target
- {
- RewardItemCardBinding binding;
- public RewardItemViewHolder(View itemView) {
- super(itemView);
-
- binding = DataBindingUtil.bind(itemView);
-
- binding.btnReward.setClickable(true);
- binding.btnReward.setOnClickListener(this);
- }
-
- @Override
- public void onClick(View v) {
- BuyRewardTappedEvent event = new BuyRewardTappedEvent();
-
- if (v == binding.btnReward) {
- event.Reward = Item;
-
- EventBus.getDefault().post(event);
- } else super.onClick(v);
- }
-
- @Override
- public void bindHolder(RewardItem habitItem, int position) {
- super.bindHolder(habitItem, position);
- binding.setReward(habitItem);
- }
-
- @Override
- public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
- binding.imageView3.setImageBitmap(bitmap);
- }
-
- @Override
- public void onBitmapFailed(Drawable errorDrawable) {
-
- }
-
- @Override
- public void onPrepareLoad(Drawable placeHolderDrawable) {
-
- }
- }
public void loadContent() {
if(this.observableContent == null) {
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/HabitRPGInteractor.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/HabitRPGInteractor.java
deleted file mode 100644
index f8038a981..000000000
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/HabitRPGInteractor.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.magicmicky.habitrpgwrapper.lib;
-
-import com.google.gson.ExclusionStrategy;
-import com.google.gson.FieldAttributes;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
-import com.magicmicky.habitrpgwrapper.lib.api.Server;
-import com.magicmicky.habitrpgwrapper.lib.api.TypeAdapter.TagsAdapter;
-import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
-import com.magicmicky.habitrpgwrapper.lib.models.Status;
-import com.magicmicky.habitrpgwrapper.lib.models.Tag;
-import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
-import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
-import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
-import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.Reward;
-import com.raizlabs.android.dbflow.structure.ModelAdapter;
-
-import java.util.List;
-
-import retrofit.Callback;
-import retrofit.RequestInterceptor;
-import retrofit.RestAdapter;
-import retrofit.converter.GsonConverter;
-
-/**
- * Created by MagicMicky on 13/06/2014.
- */
-public class HabitRPGInteractor {
-
- private ApiService apiService;
- public HabitRPGInteractor(final String apiKey, final String userKey, final Server server) {
- RequestInterceptor requestInterceptor = new RequestInterceptor() {
- @Override
- public void intercept(RequestInterceptor.RequestFacade request) {
- request.addHeader("x-api-key", apiKey);
- request.addHeader("x-api-user",userKey);
- }
- };
-
- //Exclusion stratety needed for DBFlow https://github.com/Raizlabs/DBFlow/issues/121
- Gson gson = new GsonBuilder()
- .setExclusionStrategies(new ExclusionStrategy() {
- @Override
- public boolean shouldSkipField(FieldAttributes f) {
- return f.getDeclaredClass().equals(ModelAdapter.class);
- }
-
- @Override
- public boolean shouldSkipClass(Class> clazz) {
- return false;
- }
- }).registerTypeAdapter(TagsAdapter.class, new TagsAdapter().nullSafe()).create();
-
- RestAdapter adapter = new RestAdapter.Builder()
- .setEndpoint(server.toString())
- .setRequestInterceptor(requestInterceptor)
- .setConverter(new GsonConverter(gson))
- .build();
- this.apiService = adapter.create(ApiService.class);
- }
- public HabitRPGInteractor(final String apiKey, final String userKey) {
- this(apiKey, userKey, Server.NORMAL);
- }
- /**
- * Retrieve the Status of habitrpg
- * @see com.magicmicky.habitrpgwrapper.lib.models.Status
- * @param statusCallback the callback called when status is retrieved
- */
- public void getStatus(Callback statusCallback) {
- this.apiService.getStatus(statusCallback);
- }
-
- /**
- * Retrieve a User from HabitRPG's API.
- * @see com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser
- * @param callback The callback called when the user is retrieved
- */
- public void getUser(Callback callback) {
- this.apiService.getUser(callback);
- }
-
- /**
- * Retrieve a daily from HabitRPG's API
- * @param dailyId the id of the daily to retrieve
- * @param dailyCallback the callback called when the daily is retrieved
- * @see Task
- */
- public void getTask(String dailyId, Callback dailyCallback) {
- this.apiService.getTask(dailyId, dailyCallback);
- }
-
-
- /**
- * Retrieve a Reward form HabitRPG's API
- * @param rewardId the id of the reward to retrieve
- * @param rewardCallback the callback called when the reward is retrieved.
- * @see com.magicmicky.habitrpgwrapper.lib.models.tasks.Reward
- */
- public void getReward(String rewardId, Callback rewardCallback) {
- this.apiService.getReward(rewardId, rewardCallback);
- }
-
- /**
- * Update the task to "up" or "down", and check or uncheck dailies/todos.
- * @param taskId the id of the task to update
- * @param direction the direction of the task
- * @param taskDirectionCallback the callback called when the direction is set.
- * @see com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData
- */
- public void postTaskDirection(String taskId, TaskDirection direction, Callback taskDirectionCallback) {
- this.apiService.postTaskDirection(taskId, direction.toString(), taskDirectionCallback);
- }
-
- /**
- * Create a daily on HabitRPG
- * @param task the daily to create
- * @param taskCallback the callback called when the daily is created
- * @see Task
- */
- public void createItem(Task task, Callback taskCallback) {
- this.apiService.createItem(task, taskCallback);
- }
-
- /**
- * Creates a reward
- * @param reward the reward to create
- * @param rewardCallback the callback called once the item is created
- */
- public void createItem(Reward reward, Callback rewardCallback) {
- this.apiService.createItem(reward, rewardCallback);
- }
-
- /**
- * Update an habit
- * @param taskId the id of the habit to update
- * @param task the habit to update, with updated field
- * @param taskCallback the callback called once the habit is updated
- */
- public void updateItem(String taskId, Task task, Callback taskCallback) {
- this.apiService.updateTask(taskId, task, taskCallback);
- }
-
- /**
- * Updates a Reward
- * @param rewardId the id of the reward to update
- * @param reward the reward to update, with updated field
- * @param rewardCallback the callback called once the item is updated
- */
- public void updateItem(String rewardId, Reward reward, Callback rewardCallback) {
- this.apiService.updateTask(rewardId, reward, rewardCallback);
- }
-
- /**
- * Deletes a task.
- * @param itemId the id of the task to delete
- * @param voidCallback the callback (on void) called once the item is deleted
- */
- public void deleteItem(String itemId, Callback voidCallback) {
- this.apiService.deleteTask(itemId, voidCallback);
- }
-
- /**
- * Creates a tag
- * @param tag The tag to create
- * @param multiTagCallback the callback called once the tag is created
- */
- public void createTag(Tag tag, Callback> multiTagCallback) {
- this.apiService.createTag(tag, multiTagCallback);
- }
-
- /**
- * Updates a tag
- * @param tagId The id of the tag to udpate
- * @param tag The tag to update, with updated field
- * @param tagCallback The callback called once the tag is updated
- */
- public void updateTag(String tagId, Tag tag, Callback tagCallback) {
- this.apiService.updateTag(tagId, tag, tagCallback);
- }
-
- /**
- * Deletes a tag
- * @param tagId the id of the tag to delete
- * @param voidCallback the callback (on void) called once the item is deleted
- */
- public void deleteTag(String tagId, Callback voidCallback) {
- this.apiService.deleteTag(tagId, voidCallback);
- }
-
- /**
- * Connects a user
- * @param authData The username & password of the user
- * @param responseCallback The callback called once the user is connected
- */
- public void connectUser(UserAuth authData, Callback responseCallback) {
- this.apiService.connectLocal(authData,responseCallback);
- }
-
-}
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java
index 6aa589813..92db00211 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java
@@ -7,9 +7,8 @@ import com.magicmicky.habitrpgwrapper.lib.models.Tag;
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.Reward;
+import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import java.util.List;
@@ -45,8 +44,6 @@ public interface ApiService {
// void revive(Callback habitRPGUserCallback);
- @GET("/user/tasks/{id}")
- void getReward(@Path("id") String id, Callback habitItemCallback);
@GET("/user/tasks/{id}")
void getTask(@Path("id") String id, Callback habitItemCallback);
@@ -55,14 +52,10 @@ public interface ApiService {
void postTaskDirection(@Path("id") String id, @Path("direction") String direction, Callback taskDirectionCallback);
- @POST("/user/tasks")
- void createItem(@Body Reward item, Callback habitItemCallback);
@POST("/user/tasks")
void createItem(@Body Task item, Callback habitItemCallback);
- @PUT("/user/tasks/{id}")
- void updateTask(@Path("id") String id, @Body Reward item, Callback habitItemCallback);
@PUT("/user/tasks/{id}")
void updateTask(@Path("id") String id, @Body Task item, Callback habitItemCallback);
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java
index 5419c6f69..09c272d50 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/HabitRPGUser.java
@@ -2,7 +2,6 @@ package com.magicmicky.habitrpgwrapper.lib.models;
import com.habitrpg.android.habitica.HabitDatabase;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
-import com.magicmicky.habitrpgwrapper.lib.models.tasks.Reward;
import com.raizlabs.android.dbflow.annotation.Column;
import com.raizlabs.android.dbflow.annotation.ForeignKey;
import com.raizlabs.android.dbflow.annotation.ForeignKeyReference;
@@ -29,7 +28,7 @@ public class HabitRPGUser extends BaseModel {
List dailys;
List todos;
- List rewards;
+ List rewards;
List habits;
List tags;
@@ -89,7 +88,7 @@ public class HabitRPGUser extends BaseModel {
this.todos = todos;
}
- public void setRewards(List rewards) {
+ public void setRewards(List rewards) {
this.rewards = rewards;
}
@@ -167,10 +166,10 @@ public class HabitRPGUser extends BaseModel {
}
@OneToMany(methods = {OneToMany.Method.SAVE, OneToMany.Method.DELETE}, variableName = "rewards")
- public List getRewards() {
+ public List getRewards() {
if(rewards == null) {
rewards = new Select()
- .from(Reward.class)
+ .from(Task.class)
.queryList();
}
return rewards;
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Tag.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Tag.java
index bb98587e8..c34e6c8f0 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Tag.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/Tag.java
@@ -3,6 +3,7 @@ package com.magicmicky.habitrpgwrapper.lib.models;
import com.habitrpg.android.habitica.HabitDatabase;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
import com.raizlabs.android.dbflow.annotation.Column;
+import com.raizlabs.android.dbflow.annotation.ModelContainer;
import com.raizlabs.android.dbflow.annotation.OneToMany;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
@@ -17,6 +18,7 @@ import java.util.List;
* Created by MagicMicky on 16/03/14.
*/
+@ModelContainer
@Table(databaseName = HabitDatabase.NAME)
public class Tag extends BaseModel{
@@ -42,6 +44,7 @@ public class Tag extends BaseModel{
if(tasks == null) {
tasks = new Select()
.from(TaskTag.class)
+ .where(Condition.column("tag_id").eq(this.id))
.queryList();
}
return tasks;
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/ChecklistItem.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/ChecklistItem.java
index 1f1dccf77..f3762c21a 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/ChecklistItem.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/ChecklistItem.java
@@ -24,7 +24,7 @@ public class ChecklistItem extends BaseModel {
@Column
private boolean completed;
-/*
+
@Column
@ForeignKey(
references = {@ForeignKeyReference(columnName = "task_id",
@@ -32,7 +32,7 @@ public class ChecklistItem extends BaseModel {
foreignColumnName = "id")},
saveForeignKeyModel = false)
ForeignKeyContainer task;
-*/
+
public ChecklistItem() {
this(null,null);
}
@@ -70,4 +70,14 @@ public class ChecklistItem extends BaseModel {
public void setCompleted(boolean completed) {
this.completed = completed;
}
+
+ public Task getTask() {
+ return task.toModel();
+ }
+
+ public void setTask(Task task) {
+ this.task = new ForeignKeyContainer<>(Task.class);
+ this.task.setModel(task);
+ this.task.put("id", task.id);
+ }
}
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Reward.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Reward.java
deleted file mode 100644
index 479b6e4c7..000000000
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Reward.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.magicmicky.habitrpgwrapper.lib.models.tasks;
-
-
-import com.habitrpg.android.habitica.HabitDatabase;
-import com.raizlabs.android.dbflow.annotation.Table;
-
-/**
- * A reward. Contain a reward that you can see on the website
- * @author MagicMicky
- *
- */
-@Table(databaseName = HabitDatabase.NAME, allFields = true)
-public class Reward extends Task {
-
- public Reward() {
- super();
- }
- /**
- * @return the id
- */
- public String getId() {
- return id;
- }
- /**
- * @param id the id to set
- */
- public void setId(String id) {
- this.id = id;
- }
-
-}
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/RewardItem.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/RewardItem.java
deleted file mode 100644
index a3f030cf8..000000000
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/RewardItem.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.magicmicky.habitrpgwrapper.lib.models.tasks;
-
-/**
- * Created by Negue on 15.07.2015.
- */
-public class RewardItem extends Reward {
-
-}
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java
index 75553f21c..7a92f3138 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java
@@ -5,9 +5,11 @@ import com.habitrpg.android.habitica.R;
import com.raizlabs.android.dbflow.annotation.Column;
import com.raizlabs.android.dbflow.annotation.ForeignKey;
import com.raizlabs.android.dbflow.annotation.ForeignKeyReference;
+import com.raizlabs.android.dbflow.annotation.ModelContainer;
import com.raizlabs.android.dbflow.annotation.OneToMany;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
+import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.language.Select;
import com.raizlabs.android.dbflow.structure.BaseModel;
@@ -16,6 +18,7 @@ import java.util.List;
/**
* Created by viirus on 10/08/15.
*/
+@ModelContainer
@Table(databaseName = HabitDatabase.NAME)
public class Task extends BaseModel {
@@ -31,13 +34,21 @@ public class Task extends BaseModel {
@Column
public Double value;
+ public List tags;
+ //Habits
@Column
public Boolean up, down;
+
+ //todos/dailies
@Column
public Boolean completed;
+ public List checklist;
+
+
+ //dailies
@Column
public String frequency;
@@ -51,9 +62,12 @@ public class Task extends BaseModel {
public Days repeat;
//TODO: private String lastCompleted;
+
+ //todos
@Column
public String date;
+
/**
* @return the id
*/
@@ -132,6 +146,24 @@ public class Task extends BaseModel {
public void setType(String type) {this.type = type;}
+ @OneToMany(methods = {OneToMany.Method.SAVE, OneToMany.Method.DELETE}, variableName = "tags")
+ public List getTags() {
+ if(tags == null) {
+ tags = new Select()
+ .from(TaskTag.class)
+ .where(Condition.column("task_id").eq(this.id))
+ .queryList();
+ }
+ return tags;
+ }
+
+ public void setTags(List tags) {
+ for (TaskTag tag : tags) {
+ tag.setTask(this);
+ }
+ this.tags = tags;
+ }
+
/**
* @return whether or not the habit can be "upped"
*/
@@ -171,6 +203,35 @@ public class Task extends BaseModel {
this.completed = completed;
}
+
+ @OneToMany(methods = {OneToMany.Method.SAVE, OneToMany.Method.DELETE}, variableName = "checklist")
+ public List getChecklist() {
+ if(this.checklist == null) {
+ this.checklist = new Select()
+ .from(ChecklistItem.class)
+ .where(Condition.column("task_id").eq(this.id))
+ .queryList();
+ }
+ return this.checklist;
+ }
+
+ public void setChecklist(List checklist) {
+ for (ChecklistItem checklistItem : checklist) {
+ checklistItem.setTask(this);
+ }
+ this.checklist = checklist;
+ }
+
+ public Integer getCompletedChecklistCount() {
+ Integer count = 0;
+ for (ChecklistItem item : this.getChecklist()) {
+ if (item.getCompleted()) {
+ count++;
+ }
+ }
+ return count;
+ }
+
public String getFrequency() { return frequency; }
public void setFrequency(String frequency) { this.frequency = frequency; }
@@ -190,20 +251,7 @@ public class Task extends BaseModel {
public void setRepeat(Days repeat) {
this.repeat = repeat;
}
- /**
- * Formated:
- * SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
- * @return the lastCompleted
- */
-/* public String getLastCompleted() {
- return lastCompleted;
- }
- /**
- * @param lastCompleted the lastCompleted to set
- */
-/* public void setLastCompleted(String lastCompleted) {
- this.lastCompleted = lastCompleted;
- }
+
/**
* @return the streak
*/
@@ -246,19 +294,56 @@ public class Task extends BaseModel {
this.attribute = attribute;
}
+
+ @Override
+ public void save() {
+ if (this.tags != null) {
+ for (TaskTag tag : this.tags) {
+ tag.setTask(this);
+ }
+ }
+ if (this.checklist != null) {
+ for (ChecklistItem item : this.checklist) {
+ item.setTask(this);
+ }
+ }
+ super.save();
+ }
+
public int getLightTaskColor()
{
if (this.value < -20)
- return R.color.worst;
+ return R.color.worst_100;
if (this.value < -10)
- return R.color.worse;
+ return R.color.worse_100;
if (this.value < -1)
- return R.color.bad;
+ return R.color.bad_100;
if (this.value < 5)
- return R.color.neutral;
+ return R.color.neutral_100;
if (this.value < 10)
- return R.color.better;
- return R.color.best;
+ return R.color.better_100;
+ return R.color.best_100;
+ }
+
+ /**
+ * Get the button color resources depending on a certain score
+ *
+ * @return the color resource id
+ */
+ public int getMediumTaskColor()
+ {
+ if (this.value < -20)
+ return R.color.worst_50;
+ if (this.value < -10)
+ return R.color.worse_50;
+ if (this.value < -1)
+ return R.color.bad_50;
+ if (this.value < 5)
+ return R.color.neutral_50;
+ if (this.value < 10)
+ return R.color.better_50;
+
+ return R.color.best_50;
}
/**
@@ -269,16 +354,16 @@ public class Task extends BaseModel {
public int getDarkTaskColor()
{
if (this.value < -20)
- return R.color.worst_btn;
+ return R.color.worst_10;
if (this.value < -10)
- return R.color.worse_btn;
+ return R.color.worse_10;
if (this.value < -1)
- return R.color.bad_btn;
+ return R.color.bad_10;
if (this.value < 5)
- return R.color.neutral_btn;
+ return R.color.neutral_10;
if (this.value < 10)
- return R.color.better_btn;
+ return R.color.better_10;
- return R.color.best_btn;
+ return R.color.best_10;
}
}
diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/TaskTag.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/TaskTag.java
index b7b813331..055a0ec91 100644
--- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/TaskTag.java
+++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/TaskTag.java
@@ -25,13 +25,15 @@ public class TaskTag extends BaseModel {
@Column
@ForeignKey(references = {@ForeignKeyReference(columnName = "tag_id",
columnType = String.class,
- foreignColumnName = "id")})
+ foreignColumnName = "id")},
+ saveForeignKeyModel = false)
public ForeignKeyContainer tag;
@Column
@ForeignKey(references = {@ForeignKeyReference(columnName = "task_id",
columnType = String.class,
- foreignColumnName = "id")})
+ foreignColumnName = "id")},
+ saveForeignKeyModel = false)
public ForeignKeyContainer task;
public Tag getTag() {
@@ -41,6 +43,7 @@ public class TaskTag extends BaseModel {
public void setTag(Tag tag) {
this.tag = new ForeignKeyContainer<>(Tag.class);
this.tag.setModel(tag);
+ this.tag.put("id", tag.id);
}
public Task getTask() {
@@ -50,6 +53,7 @@ public class TaskTag extends BaseModel {
public void setTask(Task task) {
this.task = new ForeignKeyContainer<>(Task.class);
this.task.setModel(task);
+ this.task.put("id", task.id);
}
}