package com.nutomic.syncthingandroid.fragments.dialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AlertDialog; import android.util.Log; import android.widget.FrameLayout.LayoutParams; import android.widget.NumberPicker; import com.nutomic.syncthingandroid.R; import static android.view.Gravity.CENTER; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; public class KeepVersionsDialogFragment extends DialogFragment { private static String KEEP_VERSION_VALUE = "KEEP_VERSION_KEY"; private OnValueChangeListener mOnValueChangeListener; private NumberPicker mNumberPickerView; private int mValue; private final DialogInterface.OnClickListener mDialogButtonListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: mValue = mNumberPickerView.getValue(); if (mOnValueChangeListener != null) mOnValueChangeListener.onValueChange(mValue); break; } } }; @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { if (savedInstanceState != null) { setValue(savedInstanceState.getInt(KEEP_VERSION_VALUE)); } mNumberPickerView = createNumberPicker(); return new AlertDialog.Builder(getActivity()) .setTitle(R.string.keep_versions) .setView(mNumberPickerView) .setPositiveButton(android.R.string.ok, mDialogButtonListener) .setNegativeButton(android.R.string.cancel, null) .create(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(KEEP_VERSION_VALUE, mNumberPickerView.getValue()); } public void setOnValueChangeListener(OnValueChangeListener onValueChangeListener) { mOnValueChangeListener = onValueChangeListener; } public void setValue(int value) { this.mValue = value; if (mNumberPickerView != null) { mNumberPickerView.setValue(value); } } private NumberPicker createNumberPicker() { NumberPicker picker = new NumberPicker(getActivity()); picker.setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT, CENTER)); picker.setMinValue(0); picker.setMaxValue(5); picker.setValue(mValue); picker.setWrapSelectorWheel(false); return picker; } public interface OnValueChangeListener { void onValueChange(int value); } }