Allow user to change values in calendar chart for numerical habits

pull/627/head
Nam Nguyen 5 years ago
parent e1368777ab
commit 603dca97ac

@ -87,7 +87,7 @@ dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "com.github.paolorotolo:appintro:3.4.0"
implementation "com.google.dagger:dagger:$DAGGER_VERSION"
implementation "com.jakewharton:butterknife:8.6.1-SNAPSHOT"
implementation "com.jakewharton:butterknife:10.0.0"
implementation "org.apmem.tools:layouts:1.10"
implementation "com.google.code.gson:gson:2.8.5"
implementation "com.google.code.findbugs:jsr305:3.0.2"

@ -26,9 +26,9 @@ import androidx.annotation.NonNull;
import org.isoron.androidbase.activities.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.activities.common.dialogs.*;
import org.isoron.uhabits.activities.habits.edit.*;
import org.isoron.uhabits.core.models.*;
import org.isoron.uhabits.core.ui.callbacks.*;
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior;
import org.isoron.uhabits.core.ui.screens.habits.show.*;
import org.isoron.uhabits.intents.*;
@ -54,6 +54,9 @@ public class ShowHabitScreen extends BaseScreen
@NonNull
private final IntentFactory intentFactory;
@NonNull
private final NumberPickerFactory numberPickerFactory;
@Inject
public ShowHabitScreen(@NonNull BaseActivity activity,
@NonNull Habit habit,
@ -61,6 +64,7 @@ public class ShowHabitScreen extends BaseScreen
@NonNull ShowHabitsMenu menu,
@NonNull ConfirmDeleteDialogFactory confirmDeleteDialogFactory,
@NonNull IntentFactory intentFactory,
@NonNull NumberPickerFactory numberPickerFactory,
@NonNull Lazy<ShowHabitBehavior> behavior)
{
super(activity);
@ -71,6 +75,7 @@ public class ShowHabitScreen extends BaseScreen
this.habit = habit;
this.behavior = behavior;
this.confirmDeleteDialogFactory = confirmDeleteDialogFactory;
this.numberPickerFactory = numberPickerFactory;
view.setController(this);
}
@ -80,6 +85,14 @@ public class ShowHabitScreen extends BaseScreen
behavior.get().onEditHistory();
}
@Override
public void showNumberPicker(double value,
@NonNull String unit,
@NonNull ListHabitsBehavior.NumberPickerCallback callback)
{
numberPickerFactory.create(value, unit, callback).show();
}
@Override
public void onToggleCheckmark(Timestamp timestamp, int value)
{

@ -23,6 +23,7 @@ import androidx.annotation.*;
import org.isoron.uhabits.core.commands.*;
import org.isoron.uhabits.core.models.*;
import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior;
import javax.inject.*;
@ -58,12 +59,29 @@ public class ShowHabitBehavior
public void onToggleCheckmark(Timestamp timestamp, int value)
{
if (habit.isNumerical()) {
CheckmarkList checkmarks = habit.getCheckmarks();
double oldValue = checkmarks.getValues(timestamp, timestamp)[0];
screen.showNumberPicker(oldValue / 1000, habit.getUnit(), newValue ->
{
newValue = Math.round(newValue * 1000);
commandRunner.execute(
new CreateRepetitionCommand(habitList, habit, timestamp, (int) newValue),
habit.getId());
});
} else {
commandRunner.execute(
new CreateRepetitionCommand(habitList, habit, timestamp, value), null);
}
}
public interface Screen
{
void showEditHistoryScreen();
void showNumberPicker(double value,
@NonNull String unit,
@NonNull ListHabitsBehavior.NumberPickerCallback callback);
}
}

Loading…
Cancel
Save