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