You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
7.7 KiB
Java
216 lines
7.7 KiB
Java
package com.langerhans.one.utils;
|
|
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.content.SharedPreferences;
|
|
import android.os.Bundle;
|
|
import android.util.AttributeSet;
|
|
import android.view.Gravity;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.view.View.OnClickListener;
|
|
import android.view.ViewGroup.LayoutParams;
|
|
import android.widget.Button;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.TextView;
|
|
import android.widget.Toast;
|
|
|
|
import com.htc.preference.HtcDialogPreference;
|
|
import com.htc.widget.HtcAlertDialog;
|
|
import com.htc.widget.HtcCheckBox;
|
|
import com.htc.widget.HtcCompoundButton;
|
|
import com.htc.widget.HtcNumberPicker;
|
|
import com.htc.widget.HtcCompoundButton.OnCheckedChangeListener;
|
|
import com.langerhans.one.R;
|
|
|
|
public class TimeoutPicker extends HtcDialogPreference implements HtcNumberPicker.OnScrollIdleStateListener {
|
|
private Context mContext;
|
|
private float density = 3;
|
|
private SharedPreferences prefs = null;
|
|
private HtcNumberPicker timeoutPick1;
|
|
private HtcNumberPicker timeoutPick2;
|
|
private HtcNumberPicker timeoutPick3;
|
|
private LinearLayout checkBoxContainer;
|
|
private HtcCheckBox prefSwitch;
|
|
private TextView prefSwitchText;
|
|
private LinearLayout layout;
|
|
private TextView desc;
|
|
private int curVal1 = 7;
|
|
private int curVal2 = 6;
|
|
private int curVal3 = 4;
|
|
String[] timeouts = new String[]{ "1 hr", "30min", "10min", "2min", "1min", "45sec", "30sec", "15sec" };
|
|
|
|
public TimeoutPicker(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
mContext = context;
|
|
density = mContext.getResources().getDisplayMetrics().density;
|
|
this.setDialogTitle(Helpers.l10n(context, this.getTitleRes()));
|
|
}
|
|
|
|
private int densify(int dimension) {
|
|
return Math.round(density * dimension);
|
|
}
|
|
|
|
@Override
|
|
protected View onCreateDialogView() {
|
|
prefs = getPreferenceManager().getSharedPreferences();
|
|
|
|
LinearLayout layout_main = new LinearLayout(mContext);
|
|
layout_main.setOrientation(LinearLayout.VERTICAL);
|
|
|
|
layout = new LinearLayout(mContext);
|
|
layout.setOrientation(LinearLayout.HORIZONTAL);
|
|
layout.setPadding(densify(5), densify(5), 0, densify(10));
|
|
|
|
checkBoxContainer = new LinearLayout(mContext);
|
|
checkBoxContainer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
|
|
checkBoxContainer.setGravity(Gravity.CENTER_HORIZONTAL);
|
|
checkBoxContainer.setPadding(0, densify(4), 0, densify(4));
|
|
|
|
prefSwitch = new HtcCheckBox(mContext);
|
|
prefSwitch.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
|
boolean isEnabled = getSharedPreferences().getBoolean("pref_key_sysui_timeoutqs", false);
|
|
prefSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
|
@Override
|
|
public void onCheckedChanged(HtcCompoundButton btn, boolean state) {
|
|
if (layout != null && desc != null)
|
|
if (state) {
|
|
desc.setVisibility(View.VISIBLE);
|
|
layout.setVisibility(View.VISIBLE);
|
|
} else {
|
|
desc.setVisibility(View.GONE);
|
|
layout.setVisibility(View.GONE);
|
|
}
|
|
reapplyStates();
|
|
}
|
|
});
|
|
|
|
prefSwitchText = new TextView(mContext);
|
|
prefSwitchText.setText(Helpers.l10n(mContext, R.string.timeoutpicker_switch));
|
|
prefSwitchText.setPadding(densify(5), 0, 0, densify(2));
|
|
prefSwitchText.setTextSize(20f);
|
|
prefSwitchText.setOnClickListener(new OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
prefSwitch.toggle();
|
|
}
|
|
});
|
|
|
|
checkBoxContainer.addView(prefSwitch);
|
|
checkBoxContainer.addView(prefSwitchText);
|
|
layout_main.addView(checkBoxContainer);
|
|
|
|
desc = new TextView(mContext);
|
|
desc.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
|
|
desc.setText(Helpers.l10n(mContext, R.string.timeoutpicker_desc));
|
|
desc.setGravity(Gravity.CENTER);
|
|
desc.setTextSize(20f);
|
|
desc.setPadding(0, 0, 0, densify(10));
|
|
layout_main.addView(desc);
|
|
|
|
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
|
|
lp.weight = 1.0f;
|
|
lp.rightMargin = densify(5);
|
|
|
|
curVal1 = prefs.getInt("pref_key_sysui_timeoutqs_value1", 7);
|
|
curVal2 = prefs.getInt("pref_key_sysui_timeoutqs_value2", 6);
|
|
curVal3 = prefs.getInt("pref_key_sysui_timeoutqs_value3", 4);
|
|
|
|
timeoutPick1 = new HtcNumberPicker(mContext);
|
|
timeoutPick1.setLayoutParams(lp);
|
|
timeoutPick1.setTextStyle(R.style.numberPickerText);
|
|
timeoutPick1.setRange(0, 7, timeouts);
|
|
timeoutPick1.setCenterView(curVal1);
|
|
timeoutPick1.setOnScrollIdleStateListener(this);
|
|
layout.addView(timeoutPick1);
|
|
|
|
timeoutPick2 = new HtcNumberPicker(mContext);
|
|
timeoutPick2.setLayoutParams(lp);
|
|
timeoutPick2.setTextStyle(R.style.numberPickerText);
|
|
timeoutPick2.setRange(curVal1, 7, timeouts);
|
|
timeoutPick2.setCenterView(curVal2);
|
|
timeoutPick2.setOnScrollIdleStateListener(this);
|
|
layout.addView(timeoutPick2);
|
|
|
|
timeoutPick3 = new HtcNumberPicker(mContext);
|
|
timeoutPick3.setLayoutParams(lp);
|
|
timeoutPick3.setTextStyle(R.style.numberPickerText);
|
|
timeoutPick3.setRange(curVal2, 7, timeouts);
|
|
timeoutPick3.setCenterView(curVal3);
|
|
timeoutPick3.setOnScrollIdleStateListener(this);
|
|
layout.addView(timeoutPick3);
|
|
|
|
layout_main.addView(layout);
|
|
prefSwitch.setChecked(isEnabled);
|
|
|
|
return layout_main;
|
|
}
|
|
|
|
private void getStates() {
|
|
if (timeoutPick1 != null) curVal1 = timeoutPick1.getCenterView();
|
|
if (timeoutPick2 != null) curVal2 = timeoutPick2.getCenterView();
|
|
if (timeoutPick3 != null) curVal3 = timeoutPick3.getCenterView();
|
|
}
|
|
|
|
private void reapplyStates() {
|
|
if (timeoutPick1 != null) timeoutPick1.setCenterView(curVal1);
|
|
if (timeoutPick2 != null) timeoutPick2.setCenterView(curVal2);
|
|
if (timeoutPick3 != null) timeoutPick3.setCenterView(curVal3);
|
|
}
|
|
|
|
private void changeLimits(HtcNumberPicker numberPicker, int newVal) {
|
|
HtcNumberPicker nextPicker = null;
|
|
if (numberPicker.equals(timeoutPick1)) nextPicker = timeoutPick2;
|
|
else if (numberPicker.equals(timeoutPick2)) nextPicker = timeoutPick3;
|
|
|
|
if (nextPicker != null) {
|
|
int curVal = nextPicker.getCenterView();
|
|
nextPicker.setRange(newVal, 7, timeouts);
|
|
if (curVal < newVal) {
|
|
nextPicker.setCenterView(newVal);
|
|
changeLimits(nextPicker, newVal);
|
|
} else {
|
|
nextPicker.setCenterView(curVal);
|
|
changeLimits(nextPicker, curVal);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onDataSet(HtcNumberPicker numberPicker, int newVal) {
|
|
changeLimits(numberPicker, newVal);
|
|
}
|
|
|
|
@Override
|
|
protected void showDialog(Bundle bundle) {
|
|
super.showDialog(bundle);
|
|
final HtcAlertDialog dlg = (HtcAlertDialog)this.getDialog();
|
|
Button pos = dlg.getButton(DialogInterface.BUTTON_POSITIVE);
|
|
pos.setOnClickListener(new OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
getStates();
|
|
if (curVal1 == curVal2 || curVal2 == curVal3) {
|
|
Toast.makeText(mContext, Helpers.l10n(mContext, R.string.timeoutpicker_warn_text), Toast.LENGTH_LONG).show();
|
|
} else {
|
|
prefs.edit().putBoolean("pref_key_sysui_timeoutqs", prefSwitch.isChecked()).commit();
|
|
prefs.edit().putInt("pref_key_sysui_timeoutqs_value1", curVal1).commit();
|
|
prefs.edit().putInt("pref_key_sysui_timeoutqs_value2", curVal2).commit();
|
|
prefs.edit().putInt("pref_key_sysui_timeoutqs_value3", curVal3).commit();
|
|
dlg.dismiss();
|
|
}
|
|
}
|
|
});
|
|
|
|
if (prefSwitch.isChecked()) {
|
|
desc.setVisibility(View.VISIBLE);
|
|
layout.setVisibility(View.VISIBLE);
|
|
} else {
|
|
desc.setVisibility(View.GONE);
|
|
layout.setVisibility(View.GONE);
|
|
}
|
|
|
|
reapplyStates();
|
|
}
|
|
}
|