package pt.chambino.p.pulse.dialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.SeekBar;
import android.widget.Switch;
import pt.chambino.p.pulse.App;
import pt.chambino.p.pulse.Pulse;
import pt.chambino.p.pulse.R;
public class ConfigDialog extends DialogFragment {
private Switch faceDetectionSwitch;
private Switch magnificationSwitch;
private SeekBar magnificationSeekBar;
private Switch fpsSwitch;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.config);
builder.setNeutralButton(R.string.done, null);
View dialogView = getActivity().getLayoutInflater().inflate(R.layout.config, null);
builder.setView(dialogView);
faceDetectionSwitch = ((Switch)dialogView.findViewById(R.id.face_detection));
faceDetectionSwitch.setOnCheckedChangeListener(new FaceDetectionSwitchConfig());
magnificationSwitch = ((Switch)dialogView.findViewById(R.id.magnification));
magnificationSwitch.setOnCheckedChangeListener(new MagnificationSwitchConfig());
magnificationSeekBar = ((SeekBar)dialogView.findViewById(R.id.magnificationFactor));
magnificationSeekBar.setOnSeekBarChangeListener(new MagnificationSeekBarConfig());
fpsSwitch = ((Switch)dialogView.findViewById(R.id.fps));
fpsSwitch.setOnCheckedChangeListener(new FpsSwitchConfig());
Pulse pulse = getApp().getPulse();
// on configuration change Pulse may not have loaded yet
if (pulse != null) {
faceDetectionSwitch.setChecked(pulse.hasFaceDetection());
magnificationSwitch.setChecked(pulse.hasMagnification());
magnificationSeekBar.setEnabled(pulse.hasMagnification());
magnificationSeekBar.setProgress(pulse.getMagnificationFactor());
}
fpsSwitch.setChecked(getApp().getCamera().isFpsMeterEnabled());
return builder.create();
}
private App getApp() {
return (App)getActivity();
}
private class FaceDetectionSwitchConfig implements CompoundButton.OnCheckedChangeListener {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (getApp().getPulse() != null) getApp().getPulse().setFaceDetection(isChecked);
}
}
private class MagnificationSwitchConfig implements CompoundButton.OnCheckedChangeListener {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
magnificationSeekBar.setEnabled(isChecked);
if (getApp().getPulse() != null) getApp().getPulse().setMagnification(isChecked);
}
}
private class MagnificationSeekBarConfig implements SeekBar.OnSeekBarChangeListener {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (getApp().getPulse() != null) getApp().getPulse().setMagnificationFactor(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
}
private class FpsSwitchConfig implements CompoundButton.OnCheckedChangeListener {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
getApp().getCamera().setFpsMeter(isChecked);
}
}
}