Persist recurring day change as it is made

This commit is contained in:
Phillip Hsu 2016-09-03 17:57:19 -07:00
parent 554dd49f0a
commit c0c7d521df
2 changed files with 20 additions and 17 deletions

View File

@ -54,10 +54,6 @@ public abstract class BaseAlarmViewHolder extends BaseViewHolder<Alarm> {
private final Drawable mCancelSnoozeDrawable; private final Drawable mCancelSnoozeDrawable;
private final FragmentManager mFragmentManager; private final FragmentManager mFragmentManager;
// So far, Alarms are the only VH type that requires saving a reference to the listener,
// so that they may do extra stuff with it.
private final OnListItemInteractionListener<Alarm> mInteractionListener;
// These should only be changed from the OnTimeSet callback. // These should only be changed from the OnTimeSet callback.
// If we had initialized these in onBind(), they would be reset to their original values // If we had initialized these in onBind(), they would be reset to their original values
// from the Alarm each time the ViewHolder binds. // from the Alarm each time the ViewHolder binds.
@ -85,8 +81,6 @@ public abstract class BaseAlarmViewHolder extends BaseViewHolder<Alarm> {
AppCompatActivity act = (AppCompatActivity) getContext(); AppCompatActivity act = (AppCompatActivity) getContext();
mFragmentManager = act.getSupportFragmentManager(); mFragmentManager = act.getSupportFragmentManager();
mInteractionListener = listener;
// Are we recreating this because of a rotation? // Are we recreating this because of a rotation?
// If so, try finding any dialog that was last shown in our backstack, // If so, try finding any dialog that was last shown in our backstack,
// and restore the callback. // and restore the callback.
@ -308,9 +302,4 @@ public abstract class BaseAlarmViewHolder extends BaseViewHolder<Alarm> {
} }
}; };
} }
@Deprecated
protected final OnListItemInteractionListener<Alarm> getInteractionListener() {
return mInteractionListener;
}
} }

View File

@ -12,6 +12,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ToggleButton; import android.widget.ToggleButton;
import com.philliphsu.clock2.Alarm; import com.philliphsu.clock2.Alarm;
@ -60,7 +61,12 @@ public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder {
mOk.setOnClickListener(new View.OnClickListener() { mOk.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
createNewAlarmAndWriteToDb(); // Since changes are persisted as soon as they are made, there's really
// nothing we have to persist here. This just lets the listener know
// we should collapse this VH.
// TODO: Verify that the VH is collapsed.
// Alternatively, I think we can just performClick() on the itemView.
listener.onListItemUpdate(getAlarm(), getAdapterPosition());
} }
}); });
@ -139,9 +145,19 @@ public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder {
} }
@OnCheckedChanged({ R.id.day0, R.id.day1, R.id.day2, R.id.day3, R.id.day4, R.id.day5, R.id.day6 }) @OnCheckedChanged({ R.id.day0, R.id.day1, R.id.day2, R.id.day3, R.id.day4, R.id.day5, R.id.day6 })
void onDayToggled() { void onDayToggled(CompoundButton buttonView, boolean isChecked) {
// TODO final Alarm oldAlarm = getAlarm();
Log.d("yooo", "Hello!"); Alarm newAlarm = oldAlarm.toBuilder().build();
oldAlarm.copyMutableFieldsTo(newAlarm);
// ---------------------------------------------------------------------------------
// TOneverDO: precede copyMutableFieldsTo()
int position = ((ViewGroup) buttonView.getParent()).indexOfChild(buttonView);
int weekDayAtPosition = DaysOfWeek.getInstance(getContext()).weekDayAt(position);
Log.d(TAG, "Day toggle #" + position + " checked changed. This is weekday #"
+ weekDayAtPosition + " relative to a week starting on Sunday");
newAlarm.setRecurring(weekDayAtPosition, isChecked);
// ---------------------------------------------------------------------------------
mAlarmController.save(newAlarm);
} }
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
@ -203,7 +219,6 @@ public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder {
.hour(oldAlarm.hour()/*TODO*/) .hour(oldAlarm.hour()/*TODO*/)
.minutes(oldAlarm.minutes()/*TODO*/) .minutes(oldAlarm.minutes()/*TODO*/)
.ringtone(""/*TODO*/) .ringtone(""/*TODO*/)
.vibrates(mVibrate.isChecked())
.build(); .build();
oldAlarm.copyMutableFieldsTo(newAlarm); oldAlarm.copyMutableFieldsTo(newAlarm);
// ---------------------------------------------- // ----------------------------------------------
@ -213,6 +228,5 @@ public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder {
newAlarm.setRecurring(i, isRecurringDay(i)); newAlarm.setRecurring(i, isRecurringDay(i));
} }
// ---------------------------------------------- // ----------------------------------------------
getInteractionListener().onListItemUpdate(newAlarm, getAdapterPosition());
} }
} }