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.v7.app.*;
import android.text.format.*;
import android.util.Log;
import android.view.*;
import com.android.datetimepicker.time.*;
@ -63,6 +64,9 @@ public class EditHabitDialog extends AppCompatDialogFragment
@BindView(R.id.namePanel)
NameDescriptionPanel namePanel;
@BindView(R.id.typePanel)
TypePanel typePanel;
@BindView(R.id.reminderPanel)
ReminderPanel reminderPanel;
@ -112,6 +116,7 @@ public class EditHabitDialog extends AppCompatDialogFragment
populateForm();
setupReminderController();
setupTypeController();
setupNameController();
return view;
@ -138,11 +143,6 @@ public class EditHabitDialog extends AppCompatDialogFragment
}
}
private int getTypeFromArguments()
{
return Habit.YES_NO_HABIT;
}
private void initDependencies()
{
Context appContext = getContext().getApplicationContext();
@ -164,9 +164,9 @@ public class EditHabitDialog extends AppCompatDialogFragment
@OnClick(R.id.buttonSave)
void onSaveButtonClick()
{
int type = getTypeFromArguments();
if (!namePanel.validate()) return;
int type = typePanel.getType();
if (type == Habit.YES_NO_HABIT && !frequencyPanel.validate()) return;
if (type == Habit.NUMBER_HABIT && !targetPanel.validate()) return;
@ -204,16 +204,24 @@ public class EditHabitDialog extends AppCompatDialogFragment
private void populateForm()
{
Habit habit = modelFactory.buildHabit();
habit.setFrequency(Frequency.DAILY);
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 (habit.isNumerical()) frequencyPanel.setVisibility(GONE);
else targetPanel.setVisibility(GONE);
if (habit.isNumerical())
{
frequencyPanel.setVisibility(GONE);
}
else
{
targetPanel.setVisibility(GONE);
}
namePanel.populateFrom(habit);
typePanel.setType(habit.getType());
typePanel.setEnabled(originalHabit == null);
frequencyPanel.setFrequency(habit.getFrequency());
targetPanel.setTargetValue(habit.getTargetValue());
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()
{
reminderPanel.setController(new ReminderPanel.Controller()

@ -47,6 +47,11 @@ public class TypePanel extends FrameLayout
@BindView(R.id.spinner)
Spinner spinner;
private Integer type;
@NonNull
private Controller controller;
public TypePanel(@NonNull Context context,
@Nullable AttributeSet attrs)
{
@ -55,19 +60,20 @@ public class TypePanel extends FrameLayout
View view = inflate(context, R.layout.edit_habit_type, null);
ButterKnife.bind(this, view);
addView(view);
setType(Habit.YES_NO_HABIT);
controller = new Controller() {};
}
@NonNull
public Integer getType()
{
Integer type = spinner.getSelectedItemPosition();
if (type.equals(0)) return Habit.YES_NO_HABIT;
if (type.equals(0)) return Habit.NUMBER_HABIT;
return -1;
return type;
}
public void setType(@NonNull Integer type)
{
this.type = type;
int position = getQuickSelectPosition(type);
spinner.setSelection(position);
}
@ -76,7 +82,28 @@ public class TypePanel extends FrameLayout
public void onTypeSelected(int position)
{
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)

Loading…
Cancel
Save