package fr.tvbarthel.apps.simplethermometer.dialogfragments;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceManager;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.SeekBar;
import fr.tvbarthel.apps.simplethermometer.R;
import fr.tvbarthel.apps.simplethermometer.utils.ColorUtils;
import fr.tvbarthel.apps.simplethermometer.utils.PreferenceUtils;
public class OpacityDialogFragment extends DialogFragment {
private static final String ARG_PREFERENCE_ID = "OpacityDialogFragment.Args.PreferenceId";
public static OpacityDialogFragment newInstance(PreferenceUtils.PreferenceId preferenceId) {
final OpacityDialogFragment fragment = new OpacityDialogFragment();
final Bundle arguments = new Bundle();
arguments.putSerializable(ARG_PREFERENCE_ID, preferenceId);
fragment.setArguments(arguments);
return fragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final PreferenceUtils.PreferenceId preferenceId = (PreferenceUtils.PreferenceId) getArguments().getSerializable(ARG_PREFERENCE_ID);
final LayoutInflater inflater = getActivity().getLayoutInflater();
final View opacityChooser = inflater.inflate(R.layout.dialog_opacity, null);
final int prefColor = PreferenceUtils.getPreferedColor(getActivity(), preferenceId);
final int prefAlpha = PreferenceUtils.getPreferedAlpha(getActivity(), preferenceId);
final GradientDrawable previewBackground = (GradientDrawable) opacityChooser.findViewById(R.id.dialog_opacity_preview).getBackground();
final SeekBar seekBar = (SeekBar) opacityChooser.findViewById(R.id.dialog_opacity_seek_bar);
// initialize the seekbar and the preview
previewBackground.setColor(ColorUtils.addAlphaToColor(prefColor, prefAlpha));
seekBar.setProgress(prefAlpha);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
previewBackground.setColor(ColorUtils.addAlphaToColor(prefColor, progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.opacity_picker_title));
builder.setView(opacityChooser);
builder.setCancelable(true);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
PreferenceUtils.storePreferedAlpha(getActivity(), preferenceId, seekBar.getProgress());
}
});
builder.setNegativeButton(android.R.string.cancel, null);
builder.setInverseBackgroundForced(true);
return builder.create();
}
}