From 94662038441d31faf142fdd7a8b2e498a269fdeb Mon Sep 17 00:00:00 2001 From: eehouse Date: Sun, 21 Mar 2010 03:11:49 +0000 Subject: [PATCH] use sliders instead of text fields for editing of colors, and store them as ints. This will probably cause older versions to crash. Need either to change the names of keys or warn with next release. --- .../android/XWords4/res/layout/color_edit.xml | 41 ++++++++++------- .../android/XWords4/res/values/strings.xml | 4 ++ .../android/xw4/EditColorPreference.java | 44 ++++++++++--------- .../eehouse/android/xw4/jni/CommonPrefs.java | 7 +-- 4 files changed, 53 insertions(+), 43 deletions(-) diff --git a/xwords4/android/XWords4/res/layout/color_edit.xml b/xwords4/android/XWords4/res/layout/color_edit.xml index 5da43ba6b..55f567df8 100644 --- a/xwords4/android/XWords4/res/layout/color_edit.xml +++ b/xwords4/android/XWords4/res/layout/color_edit.xml @@ -8,28 +8,35 @@ android:paddingRight="8dp" > - - - + - - + + diff --git a/xwords4/android/XWords4/res/values/strings.xml b/xwords4/android/XWords4/res/values/strings.xml index 3207495ec..cd328265a 100644 --- a/xwords4/android/XWords4/res/values/strings.xml +++ b/xwords4/android/XWords4/res/values/strings.xml @@ -270,6 +270,10 @@ not found. Password for \"%s\": + + Red + Green + Blue key_color_tiles diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/EditColorPreference.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/EditColorPreference.java index 98e2c5f61..9ad10a7dd 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/EditColorPreference.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/EditColorPreference.java @@ -5,11 +5,12 @@ package org.eehouse.android.xw4; import android.preference.DialogPreference; import android.content.Context; import android.content.DialogInterface; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.View; -import android.widget.EditText; +import android.widget.SeekBar; import android.app.Dialog; -// import android.app.AlertDialog; +import android.content.SharedPreferences; import junit.framework.Assert; @@ -27,6 +28,18 @@ public class EditColorPreference extends DialogPreference { setWidgetLayoutResource( R.layout.color_display ); setDialogLayoutResource( R.layout.color_edit ); } + + @Override + protected Object onGetDefaultValue(TypedArray a, int index) { + return a.getInteger(index, 0); + } + + @Override + protected void onSetInitialValue(boolean restoreValue, Object defaultValue) { + if ( !restoreValue ) { + persistInt( (Integer)defaultValue ); + } + } @Override protected void onBindView( View parent ) @@ -53,40 +66,31 @@ public class EditColorPreference extends DialogPreference { int color = (getOneByte( dialog, R.id.edit_red ) << 16) | (getOneByte( dialog, R.id.edit_green ) << 8) | getOneByte( dialog, R.id.edit_blue ); - color |= 0xFF000000; - // Need to restore the preference, not set the background color - persistString( String.format( "%d", color) ); + persistInt( color ); + m_sample.setBackgroundColor( getPersistedColor() ); } private void setOneByte( View parent, int id, int byt ) { byt &= 0xFF; - EditText et = (EditText)parent.findViewById( id ); - if ( null != et ) { - et.setText( String.format("%d", byt ) ); + SeekBar seekbar = (SeekBar)parent.findViewById( id ); + if ( null != seekbar ) { + seekbar.setProgress( byt ); } } private int getOneByte( DialogInterface parent, int id ) { int val = 0; Dialog dialog = (Dialog)parent; - EditText et = (EditText)dialog.findViewById( id ); - if ( null != et ) { - String str = et.getText().toString(); - val = Integer.decode( str ); + SeekBar seekbar = (SeekBar)dialog.findViewById( id ); + if ( null != seekbar ) { + val = seekbar.getProgress(); } return val; } private int getPersistedColor() { - String val = getPersistedString(""); - int color; - try { - color = 0xFF000000 | Integer.decode( val ); - } catch ( java.lang.NumberFormatException nfe ) { - color = 0xFF7F7F7F; - } - return color; + return 0xFF000000 | getPersistedInt(0); } } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/CommonPrefs.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/CommonPrefs.java index 8169fb364..43f89d572 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/CommonPrefs.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/jni/CommonPrefs.java @@ -90,12 +90,7 @@ public class CommonPrefs { private int prefToColor( SharedPreferences sp, int id ) { String key = s_context.getString( id ); - String val = sp.getString( key, "" ); - try { - return 0xFF000000 | Integer.decode( val ); - } catch ( java.lang.NumberFormatException nfe ) { - return 0xFF7F7F7F; - } + return 0xFF000000 | sp.getInt( key, 0 ); } /*