diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java
index 6ff2bfa6b..1c06fdc92 100755
--- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java
+++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java
@@ -20,11 +20,16 @@
package org.isoron.uhabits.activities.habits.edit;
import android.content.*;
+import android.content.res.Resources;
import android.os.*;
import android.support.annotation.*;
import android.support.v7.app.*;
import android.text.format.*;
+import android.util.Log;
import android.view.*;
+import android.widget.AdapterView;
+import android.widget.Spinner;
+import android.widget.TextView;
import com.android.datetimepicker.time.*;
@@ -167,8 +172,8 @@ void onSaveButtonClick()
int type = getTypeFromArguments();
if (!namePanel.validate()) return;
- if (type == Habit.YES_NO_HABIT && !frequencyPanel.validate()) return;
- if (type == Habit.NUMBER_HABIT && !targetPanel.validate()) return;
+ if (type == Habit.WEEKLY_HABIT && !frequencyPanel.validate()) return;
+ if (type == Habit.DAILY_HABIT && !targetPanel.validate()) return;
Habit habit = modelFactory.buildHabit();
if( originalHabit != null )
@@ -180,8 +185,13 @@ void onSaveButtonClick()
habit.setFrequency(frequencyPanel.getFrequency());
habit.setUnit(targetPanel.getUnit());
habit.setTargetValue(targetPanel.getTargetValue());
- habit.setType(type);
+ //habit.setType(type);
+ Log.d("habit-typeDaily",String.valueOf(habit.getType()));
+ if (targetPanel.getVisibility() == View.VISIBLE)
+ habit.setType(Habit.DAILY_HABIT);
+ else
+ habit.setType(Habit.WEEKLY_HABIT);
saveHabit(habit);
dismiss();
}
@@ -201,6 +211,41 @@ private Habit parseHabitFromArguments()
return habit;
}
+ @BindView(R.id.spHabitType)
+ Spinner spHabitType;
+ @BindView(R.id.tvSpinnerHabitType)
+ TextView tvSpinnerHabitType;
+ @BindView(R.id.tvDescription)
+ ExampleEditText tvDescription;
+
+ private void setupHabitTypeController(Habit habit){
+ spHabitType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ Log.d("spinner-position", String.valueOf(i));
+ Resources res = getResources();
+ if (i == Habit.DAILY_HABIT){
+ habit.setType(Habit.DAILY_HABIT);
+ tvDescription.setExample(res.getString(R.string.example_question_numerical));
+ } else {
+ habit.setType(Habit.WEEKLY_HABIT);
+ tvDescription.setExample(res.getString(R.string.example_question_boolean));
+ }
+
+ if (habit.isNumerical()) { // show targetPanel
+ frequencyPanel.setVisibility(GONE);
+ targetPanel.setVisibility(View.VISIBLE);
+ } else { // show frequencyPanel instead
+ targetPanel.setVisibility(GONE);
+ frequencyPanel.setVisibility(View.VISIBLE);
+ }
+ }
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+ }
+ });
+ }
+
private void populateForm()
{
Habit habit = modelFactory.buildHabit();
@@ -218,8 +263,12 @@ private void populateForm()
targetPanel.setTargetValue(habit.getTargetValue());
targetPanel.setUnit(habit.getUnit());
if (habit.hasReminder()) reminderPanel.setReminder(habit.getReminder());
+
+ setupHabitTypeController(habit);
+
}
+
private void setupNameController()
{
namePanel.setController(new NameDescriptionPanel.Controller()
diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialogFactory.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialogFactory.java
index a91c3b14a..438fff076 100755
--- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialogFactory.java
+++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialogFactory.java
@@ -39,7 +39,7 @@ public EditHabitDialog createBoolean()
{
EditHabitDialog dialog = new EditHabitDialog();
Bundle args = new Bundle();
- args.putInt(BUNDLE_HABIT_TYPE, Habit.YES_NO_HABIT);
+ args.putInt(BUNDLE_HABIT_TYPE, Habit.WEEKLY_HABIT);
dialog.setArguments(args);
return dialog;
}
@@ -48,7 +48,7 @@ public EditHabitDialog createNumerical()
{
EditHabitDialog dialog = new EditHabitDialog();
Bundle args = new Bundle();
- args.putInt(BUNDLE_HABIT_TYPE, Habit.NUMBER_HABIT);
+ args.putInt(BUNDLE_HABIT_TYPE, Habit.DAILY_HABIT);
dialog.setArguments(args);
return dialog;
}
diff --git a/uhabits-android/src/main/res/layout/edit_habit_name.xml b/uhabits-android/src/main/res/layout/edit_habit_name.xml
index 70ad45cdc..74e01d569 100755
--- a/uhabits-android/src/main/res/layout/edit_habit_name.xml
+++ b/uhabits-android/src/main/res/layout/edit_habit_name.xml
@@ -54,6 +54,21 @@
+
+
+
+
+
diff --git a/uhabits-android/src/main/res/values/constants.xml b/uhabits-android/src/main/res/values/constants.xml
index 57c788f75..682aa33bf 100755
--- a/uhabits-android/src/main/res/values/constants.xml
+++ b/uhabits-android/src/main/res/values/constants.xml
@@ -90,6 +90,11 @@
- @string/toggle
+
+ - Weekly habit
+ - Daily habit
+
+
- @string/day
- @string/week
diff --git a/uhabits-android/src/main/res/values/strings.xml b/uhabits-android/src/main/res/values/strings.xml
index 0fb0453d2..26856ba12 100755
--- a/uhabits-android/src/main/res/values/strings.xml
+++ b/uhabits-android/src/main/res/values/strings.xml
@@ -222,8 +222,8 @@
Unit
Count
This field should not be blank
- e.g. How many steps did you walk today?
- e.g. steps
+ e.g. How much water did you drink today?
+ e.g. glasses
e.g. Did you exercise today?
Question
Target
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java
index 69e41bead..d54715374 100755
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java
@@ -44,9 +44,9 @@ public class Habit
public static final String HABIT_URI_FORMAT =
"content://org.isoron.uhabits/habit/%d";
- public static final int NUMBER_HABIT = 1;
+ public static final int DAILY_HABIT = 1;
- public static final int YES_NO_HABIT = 0;
+ public static final int WEEKLY_HABIT = 0;
@Nullable
public Long id;
@@ -262,7 +262,7 @@ public synchronized int getType()
public synchronized void setType(int type)
{
- if (type != YES_NO_HABIT && type != NUMBER_HABIT)
+ if (type != WEEKLY_HABIT && type != DAILY_HABIT)
throw new IllegalArgumentException();
data.type = type;
@@ -336,7 +336,7 @@ public synchronized boolean isCompletedToday()
public synchronized boolean isNumerical()
{
- return data.type == NUMBER_HABIT;
+ return data.type == DAILY_HABIT;
}
public HabitData getData()
@@ -388,11 +388,11 @@ public HabitData()
this.color = 8;
this.archived = false;
this.frequency = new Frequency(3, 7);
- this.type = YES_NO_HABIT;
+ this.type = WEEKLY_HABIT;
this.name = "";
this.description = "";
this.targetType = AT_LEAST;
- this.targetValue = 100;
+ this.targetValue = 8;
this.unit = "";
this.position = 0;
}
diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java
index 929367fdc..281ede4c0 100755
--- a/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java
+++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java
@@ -71,7 +71,7 @@ public Habit createLongHabit()
public Habit createNumericalHabit()
{
Habit habit = modelFactory.buildHabit();
- habit.setType(Habit.NUMBER_HABIT);
+ habit.setType(Habit.DAILY_HABIT);
habit.setName("Run");
habit.setDescription("How many miles did you run today?");
habit.setUnit("miles");
@@ -96,10 +96,10 @@ public Habit createNumericalHabit()
public Habit createLongNumericalHabit(Timestamp reference)
{
Habit habit = modelFactory.buildHabit();
- habit.setType(Habit.NUMBER_HABIT);
- habit.setName("Walk");
- habit.setDescription("How many steps did you walk today?");
- habit.setUnit("steps");
+ habit.setType(Habit.DAILY_HABIT);
+ habit.setName("Drink");
+ habit.setDescription("Did you drink water eight times today?");
+ habit.setUnit("glasses");
habit.setTargetType(Habit.AT_LEAST);
habit.setTargetValue(100);
habit.setColor(1);