package com.openfarmanager.android.dialogs; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.util.TypedValue; import android.view.View; import android.view.Window; import android.widget.SeekBar; import android.widget.TextView; import com.openfarmanager.android.App; import com.openfarmanager.android.R; /** * @author Vlad Namashko */ public class FontSetupDialog extends Dialog { protected final static int MIN_VALUE = 6; protected final static int MAX_VALUE = 26 - MIN_VALUE; protected int mNewFontSize; protected View mDialogView; private SaveAction mSaveAction; public FontSetupDialog(Context context, SaveAction runnable) { super(context, R.style.Action_Dialog); mSaveAction = runnable; } @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); mDialogView = View.inflate(App.sInstance.getApplicationContext(), R.layout.font_setup_dialog, null); int fontSize = mSaveAction.getDefaultValue(); final TextView fontSizeSample = (TextView) mDialogView.findViewById(R.id.font_size_sample); setInitFontSize(fontSize, fontSizeSample); mNewFontSize = fontSize - getMinValue(); SeekBar seekbar = (SeekBar) mDialogView.findViewById(R.id.slider_preference_seekbar); seekbar.setMax(getMaxValue()); seekbar.setProgress(mNewFontSize); seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { onValueChanged(progress, fontSizeSample); } } }); mDialogView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dismiss(); } }); setContentView(mDialogView); } protected void setInitFontSize(int fontSize, TextView fontSizeSample) { fontSizeSample.setTextSize(TypedValue.COMPLEX_UNIT_SP, fontSize); } protected void onValueChanged(int progress, TextView fontSizeSample) { mNewFontSize = getMinValue() + progress; fontSizeSample.setTextSize(TypedValue.COMPLEX_UNIT_SP, mNewFontSize); } protected int getMinValue() { return MIN_VALUE; } protected int getMaxValue() { return MAX_VALUE; } @Override public void dismiss() { super.dismiss(); if (mSaveAction != null) { mSaveAction.execute(mNewFontSize); } } public static interface SaveAction { void execute(int newValue); int getDefaultValue(); } }