package ch.halcyon.squareprogressbar.example.dialogs; import ch.halcyon.squareprogressbar.example.PreviewView; import ch.halcyon.squareprogressbar.utils.PercentStyle; import ch.halcyon.squareprogressbar.example.R; import android.app.Dialog; import android.content.Context; import android.graphics.Paint.Align; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.Spinner; import android.widget.TextView; /** * THe dialog to set some example values for the percent text. * * @author ysigner * @since 1.3.0 */ public class PercentDialog extends Dialog { private final Spinner spinner; private final CheckBox box; private final Button saveButton; private final SeekBar bar; private int size; private final PreviewView previewView; /** * The {@link PercentDialog} to set custom settings for the style of the * percent text. * * @param context * the context. */ public PercentDialog(final Context context) { super(context); requestWindowFeature(Window.FEATURE_NO_TITLE); this.setContentView(R.layout.percentdialog); this.setCancelable(false); spinner = (Spinner) this.findViewById(R.id.spinner1); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( context, R.array.alignstyle, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); previewView = (PreviewView) findViewById(R.id.previewView1); spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { redrawPreview(); } @Override public void onNothingSelected(AdapterView<?> arg0) { // nothing to do =) } }); Button closeButton = (Button) this.findViewById(R.id.returnDialog); closeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); saveButton = (Button) this.findViewById(R.id.shareDialog); final TextView progress = (TextView) findViewById(R.id.textView3); bar = (SeekBar) findViewById(R.id.textSize); bar.setMax(400); bar.setProgress(125); bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar arg0) { // nothing to do =) } @Override public void onStartTrackingTouch(SeekBar arg0) { // nothing to do =) } @Override public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { size = arg1; progress.setText(arg1 + " dp"); redrawPreview(); } }); box = (CheckBox) this.findViewById(R.id.checkBox1); box.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { redrawPreview(); } }); } /** * Returns the {@link PercentStyle} of the current settings. * * @return a new {@link PercentStyle}. */ public PercentStyle getSettings() { return new PercentStyle(Align.valueOf((String) spinner .getSelectedItem()), Float.valueOf(bar.getProgress()), box.isChecked()); } /** * Returns the save button of the dialog. * * @return the save {@link Button}. */ public Button getSaveButton() { return saveButton; } /** * Returns the {@link Align} according to the position in the dropdown. * * @param position * the position in the dropdown. * @return the according {@link Align}. */ private Align returnAlign(int position) { switch (position) { case 0: return Align.CENTER; case 1: return Align.RIGHT; case 2: return Align.LEFT; default: return Align.CENTER; } } /** * Redraws the preview canvas. */ private void redrawPreview() { previewView .drawText(size, returnAlign(spinner.getSelectedItemPosition()), box.isChecked()); } /** * Sets the {@link PercentStyle} to the settings in the dialog. * * @param settings * The {@link PercentStyle}, this is most likely the default * settings. */ public void setPercentStyle(PercentStyle settings) { switch (settings.getAlign()) { case CENTER: spinner.setSelection(0); break; case RIGHT: spinner.setSelection(1); break; case LEFT: spinner.setSelection(2); break; default: spinner.setSelection(0); break; } bar.setProgress(Math.round(settings.getTextSize())); box.setChecked(settings.isPercentSign()); } }