Use RingtonePickerDialogController

This commit is contained in:
Phillip Hsu 2016-09-20 22:01:50 -07:00
parent 3192322811
commit 9c143045b4
2 changed files with 23 additions and 27 deletions

View File

@ -55,8 +55,6 @@ public abstract class BaseAlarmViewHolder extends BaseViewHolder<Alarm> {
private final Drawable mDismissNowDrawable; private final Drawable mDismissNowDrawable;
private final Drawable mCancelSnoozeDrawable; private final Drawable mCancelSnoozeDrawable;
// TODO: THis is still here for ExpandedVH's RingtonePickerDialog. If we ever write a
// Controller for it, finally delete this.
final FragmentManager mFragmentManager; final FragmentManager mFragmentManager;
@Bind(R.id.time) TextView mTime; @Bind(R.id.time) TextView mTime;
@ -79,7 +77,6 @@ public abstract class BaseAlarmViewHolder extends BaseViewHolder<Alarm> {
AppCompatActivity act = (AppCompatActivity) getContext(); AppCompatActivity act = (AppCompatActivity) getContext();
mFragmentManager = act.getSupportFragmentManager(); mFragmentManager = act.getSupportFragmentManager();
mAddLabelDialogController = new AddLabelDialogController(mFragmentManager, mAddLabelDialogController = new AddLabelDialogController(mFragmentManager,
// TODO: Why can't we implement the interface and pass `this` instead?
new AddLabelDialog.OnLabelSetListener() { new AddLabelDialog.OnLabelSetListener() {
@Override @Override
public void onLabelSet(String label) { public void onLabelSet(String label) {
@ -93,7 +90,6 @@ public abstract class BaseAlarmViewHolder extends BaseViewHolder<Alarm> {
} }
); );
mTimePickerDialogController = new TimePickerDialogController(mFragmentManager, getContext(), mTimePickerDialogController = new TimePickerDialogController(mFragmentManager, getContext(),
// TODO: Why can't we implement the interface and pass `this` instead?
new OnTimeSetListener() { new OnTimeSetListener() {
@Override @Override
public void onTimeSet(ViewGroup viewGroup, int hourOfDay, int minute) { public void onTimeSet(ViewGroup viewGroup, int hourOfDay, int minute) {

View File

@ -4,6 +4,7 @@ import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.media.RingtoneManager; import android.media.RingtoneManager;
import android.net.Uri; import android.net.Uri;
import android.support.annotation.IdRes;
import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v4.graphics.drawable.DrawableCompat;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@ -18,7 +19,9 @@ import com.philliphsu.clock2.OnListItemInteractionListener;
import com.philliphsu.clock2.R; import com.philliphsu.clock2.R;
import com.philliphsu.clock2.RingtonePickerDialog; import com.philliphsu.clock2.RingtonePickerDialog;
import com.philliphsu.clock2.aospdatetimepicker.Utils; import com.philliphsu.clock2.aospdatetimepicker.Utils;
import com.philliphsu.clock2.settings.RingtonePickerDialogController;
import com.philliphsu.clock2.util.AlarmController; import com.philliphsu.clock2.util.AlarmController;
import com.philliphsu.clock2.util.FragmentTagUtils;
import butterknife.Bind; import butterknife.Bind;
import butterknife.OnClick; import butterknife.OnClick;
@ -28,7 +31,6 @@ import butterknife.OnClick;
*/ */
public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder { public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder {
private static final String TAG = "ExpandedAlarmViewHolder"; private static final String TAG = "ExpandedAlarmViewHolder";
private static final String TAG_RINGTONE_PICKER = "ringtone_picker";
@Bind(R.id.ok) Button mOk; @Bind(R.id.ok) Button mOk;
@Bind(R.id.delete) Button mDelete; @Bind(R.id.delete) Button mDelete;
@ -38,6 +40,7 @@ public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder {
ToggleButton[] mDays; ToggleButton[] mDays;
private final ColorStateList mDayToggleColors; private final ColorStateList mDayToggleColors;
private final RingtonePickerDialogController mRingtonePickerController;
public ExpandedAlarmViewHolder(ViewGroup parent, final OnListItemInteractionListener<Alarm> listener, public ExpandedAlarmViewHolder(ViewGroup parent, final OnListItemInteractionListener<Alarm> listener,
AlarmController controller) { AlarmController controller) {
@ -86,17 +89,26 @@ public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder {
}; };
mDayToggleColors = new ColorStateList(states, colors); mDayToggleColors = new ColorStateList(states, colors);
RingtonePickerDialog picker = (RingtonePickerDialog) mRingtonePickerController = new RingtonePickerDialogController(mFragmentManager,
mFragmentManager.findFragmentByTag(TAG_RINGTONE_PICKER); new RingtonePickerDialog.OnRingtoneSelectedListener() {
if (picker != null) { @Override
Log.i(TAG, "Restoring ringtone picker callback"); public void onRingtoneSelected(Uri ringtoneUri) {
picker.setOnRingtoneSelectedListener(newOnRingtoneSelectedListener()); Log.d(TAG, "Selected ringtone: " + ringtoneUri.toString());
} final Alarm oldAlarm = getAlarm();
Alarm newAlarm = oldAlarm.toBuilder()
.ringtone(ringtoneUri.toString())
.build();
oldAlarm.copyMutableFieldsTo(newAlarm);
persistUpdatedAlarm(newAlarm, false);
}
}
);
} }
@Override @Override
public void onBind(Alarm alarm) { public void onBind(Alarm alarm) {
super.onBind(alarm); super.onBind(alarm);
mRingtonePickerController.tryRestoreCallback(makeTag(R.id.ringtone));
bindDays(alarm); bindDays(alarm);
bindRingtone(); bindRingtone();
bindVibrate(alarm.vibrates()); bindVibrate(alarm.vibrates());
@ -131,9 +143,8 @@ public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder {
// // TODO: This is VERY BAD. Use a Controller/Presenter instead. // // TODO: This is VERY BAD. Use a Controller/Presenter instead.
// // The result will be delivered to MainActivity, and then delegated to AlarmsFragment. // // The result will be delivered to MainActivity, and then delegated to AlarmsFragment.
// ((Activity) getContext()).startActivityForResult(intent, AlarmsFragment.REQUEST_PICK_RINGTONE); // ((Activity) getContext()).startActivityForResult(intent, AlarmsFragment.REQUEST_PICK_RINGTONE);
RingtonePickerDialog dialog = RingtonePickerDialog.newInstance(
newOnRingtoneSelectedListener(), getSelectedRingtoneUri()); mRingtonePickerController.show(getSelectedRingtoneUri(), makeTag(R.id.ringtone));
dialog.show(mFragmentManager, TAG_RINGTONE_PICKER);
} }
@OnClick(R.id.vibrate) @OnClick(R.id.vibrate)
@ -207,18 +218,7 @@ public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder {
: Uri.parse(ringtone); : Uri.parse(ringtone);
} }
private RingtonePickerDialog.OnRingtoneSelectedListener newOnRingtoneSelectedListener() { private String makeTag(@IdRes int viewId) {
return new RingtonePickerDialog.OnRingtoneSelectedListener() { return FragmentTagUtils.makeTag(ExpandedAlarmViewHolder.class, viewId, getItemId());
@Override
public void onRingtoneSelected(Uri ringtoneUri) {
Log.d(TAG, "Selected ringtone: " + ringtoneUri.toString());
final Alarm oldAlarm = getAlarm();
Alarm newAlarm = oldAlarm.toBuilder()
.ringtone(ringtoneUri.toString())
.build();
oldAlarm.copyMutableFieldsTo(newAlarm);
persistUpdatedAlarm(newAlarm, false);
}
};
} }
} }