package net.everythingandroid.smspopup.preferences; import net.everythingandroid.smspopup.R; import net.everythingandroid.smspopup.provider.SmsPopupContract.ContactNotifications; import net.everythingandroid.smspopup.util.ManageNotification; import net.everythingandroid.smspopup.util.ManagePreferences; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.preference.ListPreference; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class CustomLEDPatternListPreference extends ListPreference { private Context context; private ManagePreferences mPrefs = null; private long mRowId = 0; private String flashLedPattern; private String flashLedPatternCustom; private int[] led_pattern; public CustomLEDPatternListPreference(Context c) { super(c); context = c; } public CustomLEDPatternListPreference(Context c, AttributeSet attrs) { super(c, attrs); context = c; } public void setRowId(long rowId) { mRowId = rowId; } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); if (positiveResult) { getPrefs(); if (context.getString(R.string.pref_custom_val).equals(flashLedPattern)) { showDialog(); } } } private void getPrefs() { if (mPrefs == null) { mPrefs = new ManagePreferences(context, mRowId); } if (mRowId == 0) { // Default notifications flashLedPattern = mPrefs.getString( R.string.pref_flashled_pattern_key, R.string.pref_flashled_pattern_default); flashLedPatternCustom = mPrefs.getString( R.string.pref_flashled_pattern_custom_key, R.string.pref_flashled_pattern_default); } else { // Contact specific notifications flashLedPattern = mPrefs.getString( R.string.c_pref_flashled_pattern_key, R.string.pref_flashled_pattern_default, ContactNotifications.LED_PATTERN); flashLedPatternCustom = mPrefs.getString( R.string.c_pref_flashled_pattern_custom_key, R.string.pref_flashled_pattern_default, ContactNotifications.LED_PATTERN_CUSTOM); } led_pattern = null; if (context.getString(R.string.pref_custom_val).equals(flashLedPattern)) { led_pattern = ManageNotification.parseLEDPattern(flashLedPatternCustom); } else { led_pattern = ManageNotification.parseLEDPattern(flashLedPattern); } if (led_pattern == null) { led_pattern = ManageNotification.parseLEDPattern( mPrefs.getString( R.string.pref_flashled_pattern_default, R.string.pref_flashled_pattern_default)); } if (mPrefs != null) { mPrefs.close(); mPrefs = null; } } private void showDialog() { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflater.inflate(R.layout.ledpatterndialog, null); final EditText onEditText = (EditText) v.findViewById(R.id.LEDOnEditText); final EditText offEditText = (EditText) v.findViewById(R.id.LEDOffEditText); onEditText.setText(String.valueOf(led_pattern[0])); offEditText.setText(String.valueOf(led_pattern[1])); new AlertDialog.Builder(context) .setIcon(android.R.drawable.ic_dialog_info) .setTitle(R.string.pref_flashled_pattern_title) .setView(v) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String stringPattern = onEditText.getText() + "," + offEditText.getText(); if (mPrefs == null) { mPrefs = new ManagePreferences(context, mRowId); } if (ManageNotification.parseLEDPattern(stringPattern) != null) { if (mRowId == 0) { // Default notifications mPrefs.putString( R.string.pref_flashled_pattern_custom_key, stringPattern, ContactNotifications.LED_PATTERN_CUSTOM); } else { // Contact specific notifications mPrefs.putString( R.string.c_pref_flashled_pattern_custom_key, stringPattern, ContactNotifications.LED_PATTERN_CUSTOM); } Toast.makeText(context, context.getString(R.string.pref_flashled_pattern_ok), Toast.LENGTH_LONG).show(); } else { /* * No need to store anything if the led pattern is invalid (just leave * it as the last good value). */ /* * if (contactId == null) { // Default notifications mPrefs.putString( * R.string.pref_flashled_pattern_custom_key, * context.getString(R.string.pref_flashled_pattern_default), * SmsPopupDbAdapter.KEY_LED_PATTERN_CUSTOM); } else { // Contact * specific notifications mPrefs.putString( * R.string.c_pref_flashled_pattern_custom_key, * context.getString(R.string.pref_flashled_pattern_default), * SmsPopupDbAdapter.KEY_LED_PATTERN_CUSTOM); } */ Toast.makeText(context, context.getString(R.string.pref_flashled_pattern_bad), Toast.LENGTH_LONG).show(); } if (mPrefs != null) { mPrefs.close(); mPrefs = null; } } }).show(); } }