package tw.kenshinn.keyboardTerm; import java.util.ArrayList; import com.adwhirl.AdWhirlLayout; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceGroup; import android.preference.PreferenceManager; import android.preference.Preference.OnPreferenceChangeListener; import android.util.Log; public class GestureSettingsActivity extends PreferenceActivity { private static final String TAG = "GestureSettings"; private ArrayList<String> mKeyDefinesList = new ArrayList<String>(); private ArrayList<String> mKeyValuesList = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { String[] definedArray = getResources().getStringArray(R.array.gestures_desc); for(int i = 0; i < definedArray.length; i++) mKeyDefinesList.add(definedArray[i]); String[] valueArray = getResources().getStringArray(R.array.gestures_defs); for(int i = 0; i < definedArray.length; i++) mKeyValuesList.add(valueArray[i]); super.onCreate(savedInstanceState); try { addPreferencesFromResource(R.xml.gestures); } catch (ClassCastException e) { Log.e(TAG, "reset default values"); PreferenceManager.setDefaultValues(this, R.xml.gestures, true); addPreferencesFromResource(R.xml.gestures); } updateGesturesState(getPreferenceScreen()); String keyAdWhirl = "c7bce28b019a4e8dbcf33091bce6b542"; //this.getListView().addFooterView(new com.admob.android.ads.AdView(this)); this.getListView().addFooterView(new AdWhirlLayout(this, keyAdWhirl)); } private void updateGesturesState(final PreferenceGroup group) { SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); for(int i = 0; i < group.getPreferenceCount(); i++) { Preference item = group.getPreference(i); String key = item.getKey(); String keyValue = pref.getString(key, "NONE"); item.setTitle(getArrowString(key.replace("settings_gestures_", "").replace('_', ','))); if(mKeyValuesList.contains(keyValue)) { int index = mKeyValuesList.indexOf(keyValue); //Log.v("KeyboardsSettingsActivity", "set button " + i + " : " + mKeyDefinesList.get(index) + ", keyValue: " + keyValue + ", key: " + item.getKey()); item.setSummary(mKeyDefinesList.get(index)); } item.setOnPreferenceChangeListener(mButtonChangeListener); } } private OnPreferenceChangeListener mButtonChangeListener = new OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { if(mKeyValuesList.contains(newValue)) { int index = mKeyValuesList.indexOf(newValue); preference.setSummary(mKeyDefinesList.get(index)); } return true; } }; private String getArrowString(String src) { String result = ""; if(src != null) { result = src.replace('U', '↑').replace('D', '↓').replace('L', '←').replace('R', '→'); } return result; } }