package fr.neamar.kiss.preference; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.preference.SwitchPreference; import android.util.AttributeSet; import fr.neamar.kiss.KissApplication; import fr.neamar.kiss.R; public class RootModeSwitch extends SwitchPreference { public RootModeSwitch(Context context) { this(context, null); } public RootModeSwitch(Context context, AttributeSet attrs) { this(context, attrs, android.R.attr.switchPreferenceStyle); } public RootModeSwitch(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onClick() { if (!isChecked() && !KissApplication.getRootHandler(getContext()).isRootAvailable()) { //show error dialog new AlertDialog.Builder(getContext()).setMessage(R.string.root_mode_error) .setPositiveButton(android.R.string.ok, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // does nothing } }).show(); } else { super.onClick(); } try { KissApplication.resetRootHandler(getContext()); } catch (NullPointerException e) { // uninitialized roothandler. } } }