EditHabitDialog adjustments

Modified edithabitdialog to populate from Habit object and added Controller to TypePanel
pull/419/head
Jake Powell 7 years ago
parent 98d09e6d55
commit 6f6a386954

@ -24,6 +24,7 @@ import android.os.*;
import android.support.annotation.*; import android.support.annotation.*;
import android.support.v7.app.*; import android.support.v7.app.*;
import android.text.format.*; import android.text.format.*;
import android.util.Log;
import android.view.*; import android.view.*;
import com.android.datetimepicker.time.*; import com.android.datetimepicker.time.*;
@ -63,6 +64,9 @@ public class EditHabitDialog extends AppCompatDialogFragment
@BindView(R.id.namePanel) @BindView(R.id.namePanel)
NameDescriptionPanel namePanel; NameDescriptionPanel namePanel;
@BindView(R.id.typePanel)
TypePanel typePanel;
@BindView(R.id.reminderPanel) @BindView(R.id.reminderPanel)
ReminderPanel reminderPanel; ReminderPanel reminderPanel;
@ -112,6 +116,7 @@ public class EditHabitDialog extends AppCompatDialogFragment
populateForm(); populateForm();
setupReminderController(); setupReminderController();
setupTypeController();
setupNameController(); setupNameController();
return view; return view;
@ -138,11 +143,6 @@ public class EditHabitDialog extends AppCompatDialogFragment
} }
} }
private int getTypeFromArguments()
{
return Habit.YES_NO_HABIT;
}
private void initDependencies() private void initDependencies()
{ {
Context appContext = getContext().getApplicationContext(); Context appContext = getContext().getApplicationContext();
@ -164,9 +164,9 @@ public class EditHabitDialog extends AppCompatDialogFragment
@OnClick(R.id.buttonSave) @OnClick(R.id.buttonSave)
void onSaveButtonClick() void onSaveButtonClick()
{ {
int type = getTypeFromArguments();
if (!namePanel.validate()) return; if (!namePanel.validate()) return;
int type = typePanel.getType();
if (type == Habit.YES_NO_HABIT && !frequencyPanel.validate()) return; if (type == Habit.YES_NO_HABIT && !frequencyPanel.validate()) return;
if (type == Habit.NUMBER_HABIT && !targetPanel.validate()) return; if (type == Habit.NUMBER_HABIT && !targetPanel.validate()) return;
@ -204,16 +204,24 @@ public class EditHabitDialog extends AppCompatDialogFragment
private void populateForm() private void populateForm()
{ {
Habit habit = modelFactory.buildHabit(); Habit habit = modelFactory.buildHabit();
habit.setFrequency(Frequency.DAILY);
habit.setColor(prefs.getDefaultHabitColor(habit.getColor())); habit.setColor(prefs.getDefaultHabitColor(habit.getColor()));
habit.setType(getTypeFromArguments()); habit.setType(Habit.YES_NO_HABIT);
habit.setFrequency(Frequency.DAILY);
if (originalHabit != null) habit.copyFrom(originalHabit); if (originalHabit != null) habit.copyFrom(originalHabit);
if (habit.isNumerical()) frequencyPanel.setVisibility(GONE); if (habit.isNumerical())
else targetPanel.setVisibility(GONE); {
frequencyPanel.setVisibility(GONE);
}
else
{
targetPanel.setVisibility(GONE);
}
namePanel.populateFrom(habit); namePanel.populateFrom(habit);
typePanel.setType(habit.getType());
typePanel.setEnabled(originalHabit == null);
frequencyPanel.setFrequency(habit.getFrequency()); frequencyPanel.setFrequency(habit.getFrequency());
targetPanel.setTargetValue(habit.getTargetValue()); targetPanel.setTargetValue(habit.getTargetValue());
targetPanel.setUnit(habit.getUnit()); targetPanel.setUnit(habit.getUnit());
@ -241,6 +249,18 @@ public class EditHabitDialog extends AppCompatDialogFragment
}); });
} }
private void setupTypeController()
{
typePanel.setController(new TypePanel.Controller()
{
@Override
public void onTypeSelected(Integer previousType)
{
Log.d("YOUREIT", "Prev: " + previousType.toString() + " Sel: " + typePanel.getType().toString());
}
});
}
private void setupReminderController() private void setupReminderController()
{ {
reminderPanel.setController(new ReminderPanel.Controller() reminderPanel.setController(new ReminderPanel.Controller()

@ -47,6 +47,11 @@ public class TypePanel extends FrameLayout
@BindView(R.id.spinner) @BindView(R.id.spinner)
Spinner spinner; Spinner spinner;
private Integer type;
@NonNull
private Controller controller;
public TypePanel(@NonNull Context context, public TypePanel(@NonNull Context context,
@Nullable AttributeSet attrs) @Nullable AttributeSet attrs)
{ {
@ -55,19 +60,20 @@ public class TypePanel extends FrameLayout
View view = inflate(context, R.layout.edit_habit_type, null); View view = inflate(context, R.layout.edit_habit_type, null);
ButterKnife.bind(this, view); ButterKnife.bind(this, view);
addView(view); addView(view);
setType(Habit.YES_NO_HABIT);
controller = new Controller() {};
} }
@NonNull @NonNull
public Integer getType() public Integer getType()
{ {
Integer type = spinner.getSelectedItemPosition(); return type;
if (type.equals(0)) return Habit.YES_NO_HABIT;
if (type.equals(0)) return Habit.NUMBER_HABIT;
return -1;
} }
public void setType(@NonNull Integer type) public void setType(@NonNull Integer type)
{ {
this.type = type;
int position = getQuickSelectPosition(type); int position = getQuickSelectPosition(type);
spinner.setSelection(position); spinner.setSelection(position);
} }
@ -76,7 +82,28 @@ public class TypePanel extends FrameLayout
public void onTypeSelected(int position) public void onTypeSelected(int position)
{ {
if (position < 0 || position > 1) throw new IllegalArgumentException(); if (position < 0 || position > 1) throw new IllegalArgumentException();
// TODO: A callback? Integer previousType = type;
type = getTypeFromQuickSelect(position);
controller.onTypeSelected(previousType);
}
public void setEnabled(boolean enabled)
{
spinner.setEnabled(enabled);
}
public void setController(@NonNull Controller controller) { this.controller = controller; }
public interface Controller
{
default void onTypeSelected(Integer previousType) {}
}
private Integer getTypeFromQuickSelect(@NonNull Integer position)
{
if (position.equals(0)) return Habit.YES_NO_HABIT;
if (position.equals(1)) return Habit.NUMBER_HABIT;
return -1;
} }
private int getQuickSelectPosition(@NonNull Integer type) private int getQuickSelectPosition(@NonNull Integer type)

Loading…
Cancel
Save