package com.wigwamlabs.veckify; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.SeekBar; import com.wigwamlabs.veckify.db.AlarmEntry; @SuppressWarnings("WeakerAccess") public class VolumePickerFragment extends DialogFragment { private static final String ARG_ALARM_ID = "alarmid"; private static final String ARG_ALARM_ENTRY = "alarmentry"; private SeekBar mSeekbar; static VolumePickerFragment create(long alarmId, AlarmEntry entry) { final VolumePickerFragment fragment = new VolumePickerFragment(); final Bundle bundle = new Bundle(); bundle.putLong(ARG_ALARM_ID, alarmId); bundle.putParcelable(ARG_ALARM_ENTRY, entry); fragment.setArguments(bundle); return fragment; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Bundle bundle = getArguments(); final AlarmEntry entry = bundle.getParcelable(ARG_ALARM_ENTRY); final Activity activity = getActivity(); final View view = LayoutInflater.from(activity).inflate(R.layout.dialog_volume, null, false); mSeekbar = (SeekBar) view.findViewById(R.id.seekbar); final ImageView icon = (ImageView) view.findViewById(R.id.icon); mSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { icon.setImageResource(AlarmUtils.getVolumeDrawable(progress)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); final Integer volume = entry.getVolume(); if (volume != null) { mSeekbar.setProgress(volume.intValue()); } else { mSeekbar.setProgress(100); } return new AlertDialog.Builder(activity) .setView(view) .create(); } @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); final MainActivity activity = (MainActivity) getActivity(); if (activity == null) { // happens if fragment is destroyed, e.g. at screen rotation return; } final Bundle bundle = getArguments(); final long alarmId = bundle.getLong(ARG_ALARM_ID); final AlarmEntry entry = bundle.getParcelable(ARG_ALARM_ENTRY); entry.setVolume(mSeekbar.getProgress()); activity.onAlarmEntryChanged(alarmId, entry, true); } }