/TheElements/src/sand/falling/opengl/preferences/PreferencesFromCode.java

http://thelements.googlecode.com/ · Java · 206 lines · 169 code · 28 blank · 9 comment · 29 complexity · 89f6b67f40b0e2af6eb36b89456b76a7 MD5 · raw file

  1. package sand.falling.opengl.preferences;
  2. import sand.falling.opengl.MainActivity;
  3. import sand.falling.opengl.R;
  4. import android.content.Context;
  5. import android.content.SharedPreferences;
  6. import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
  7. import android.os.Bundle;
  8. import android.preference.CheckBoxPreference;
  9. import android.preference.ListPreference;
  10. import android.preference.PreferenceActivity;
  11. import android.preference.PreferenceCategory;
  12. import android.preference.PreferenceManager;
  13. import android.preference.PreferenceScreen;
  14. import android.util.Log;
  15. import android.widget.Toast;
  16. public class PreferencesFromCode extends PreferenceActivity implements OnSharedPreferenceChangeListener
  17. {
  18. @Override
  19. protected void onCreate(Bundle savedInstanceState)
  20. {
  21. super.onCreate(savedInstanceState);
  22. setPreferenceScreen(createPreferenceHierarchy());
  23. getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
  24. }
  25. private PreferenceScreen createPreferenceHierarchy()
  26. {
  27. // Root
  28. PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
  29. // Inline preferences
  30. PreferenceCategory inlinePrefCat = new PreferenceCategory(this);
  31. inlinePrefCat.setTitle("Look and Feel");
  32. root.addPreference(inlinePrefCat);
  33. // List preference
  34. ListPreference listPref = new ListPreference(this);
  35. listPref.setEntries(R.array.entries_list_preference);
  36. listPref.setEntryValues(R.array.entryvalues_list_preference);
  37. listPref.setDialogTitle("Background");
  38. listPref.setKey("background_color");
  39. listPref.setTitle("Background Color");
  40. listPref.setSummary("Sets the color of the background");
  41. root.addPreference(listPref);
  42. PreferenceCategory launchPrefCat = new PreferenceCategory(this);
  43. launchPrefCat.setTitle("Other");
  44. root.addPreference(launchPrefCat);
  45. CheckBoxPreference togglePref = new CheckBoxPreference(this);
  46. togglePref.setKey("flip_settings");
  47. togglePref.setTitle("Flip Screen");
  48. togglePref.setSummary("Flip Screen (Use only if nothing draws on screen)");
  49. root.addPreference(togglePref);
  50. CheckBoxPreference sleep_on_off = new CheckBoxPreference(this);
  51. sleep_on_off.setKey("sleep");
  52. sleep_on_off.setTitle("Sleep On/Off");
  53. sleep_on_off.setSummary("Allow the screen to sleep during play or not");
  54. root.addPreference(sleep_on_off);
  55. CheckBoxPreference ui_on_off = new CheckBoxPreference(this);
  56. ui_on_off.setKey("ui");
  57. ui_on_off.setTitle("UI On/Off");
  58. ui_on_off.setSummary("Turn the UI on or off");
  59. root.addPreference(ui_on_off);
  60. PreferenceCategory game = new PreferenceCategory(this);
  61. game.setTitle("Game");
  62. root.addPreference(game);
  63. CheckBoxPreference acceler = new CheckBoxPreference(this);
  64. acceler.setKey("accel_control");
  65. acceler.setTitle("Accelerometer Control");
  66. acceler.setSummary("Turn accelerometer control of gravity on/off ");
  67. root.addPreference(acceler);
  68. final SharedPreferences sharedPrefs =
  69. PreferenceManager.getDefaultSharedPreferences(this);
  70. if (!sharedPrefs.contains("background_color"))
  71. {
  72. listPref.setValue("black");
  73. }
  74. if (!sharedPrefs.contains("flip_settings"))
  75. {
  76. togglePref.setChecked(false);
  77. }
  78. if (!sharedPrefs.contains("ui"))
  79. {
  80. ui_on_off.setChecked(true);
  81. }
  82. if (!sharedPrefs.contains("sleep"))
  83. {
  84. sleep_on_off.setChecked(true);
  85. }
  86. if (!sharedPrefs.contains("accel_control"))
  87. {
  88. acceler.setChecked(false);
  89. }
  90. return root;
  91. }
  92. //When something is clicked, this finds it and calls a JNI function to change it in the c code
  93. public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
  94. {
  95. // Let's do something when my counter preference value changes
  96. //Log.v("DemoActivity", "onpref called");
  97. if (key == "background_color")
  98. {
  99. //Log.v("DemoActivity", "onpref color: " + sharedPreferences.getString(key, "black"));
  100. if (sharedPreferences.getString( key, "black").equals("black"))
  101. {
  102. MainActivity.setBackgroundColor(0);
  103. }
  104. else
  105. {
  106. MainActivity.setBackgroundColor(1);
  107. }
  108. }
  109. else if (key == "flip_settings")
  110. {
  111. Log.v("DemoActivity", "onpref flip");
  112. if ( sharedPreferences.getBoolean(key, false) == true)
  113. {
  114. MainActivity.setFlip(1);
  115. }
  116. else
  117. {
  118. MainActivity.setFlip(0);
  119. }
  120. }
  121. else if (key == "ui")
  122. {
  123. MainActivity.ui = sharedPreferences.getBoolean(key, true);
  124. Toast.makeText(this, "UI changed: please restart for effect", Toast.LENGTH_LONG).show();
  125. }
  126. else if (key == "sleep")
  127. {
  128. MainActivity.sand_view.setKeepScreenOn(sharedPreferences.getBoolean(key,true));
  129. }
  130. else if (key == "accel_control")
  131. {
  132. if ( sharedPreferences.getBoolean(key,false) == true){
  133. MainActivity.setAccelOnOff(1);
  134. }
  135. else{
  136. MainActivity.setAccelOnOff(0);
  137. }
  138. }
  139. }
  140. //used to set stuff up when the app opens and retrieve the settings
  141. public static void setpreferences(Context context)
  142. {
  143. final SharedPreferences sharedPreferences =
  144. PreferenceManager.getDefaultSharedPreferences(context);
  145. if (sharedPreferences.getString("background_color", "black").equals("black"))
  146. {
  147. MainActivity.setBackgroundColor(0);
  148. }
  149. else
  150. {
  151. MainActivity.setBackgroundColor(1);
  152. }
  153. if (sharedPreferences.getBoolean("flip_settings", false) == true) //flip screen stuff
  154. {
  155. MainActivity.setFlip(1);
  156. }
  157. else
  158. {
  159. MainActivity.setFlip(0);
  160. }
  161. if (sharedPreferences.getBoolean("accel_control", false) == true) //flip screen stuff
  162. {
  163. MainActivity.setAccelOnOff(1);
  164. }
  165. else
  166. {
  167. MainActivity.setAccelOnOff(0);
  168. }
  169. //Set the bool variable ui in the Activity
  170. MainActivity.ui = sharedPreferences.getBoolean("ui", true);
  171. }
  172. public static void setScreenOnOff(Context context) //set screen on or off, needs to be seperate because sand_view is created after setPrefs is called
  173. {
  174. final SharedPreferences sharedPreferences =
  175. PreferenceManager.getDefaultSharedPreferences(context);
  176. MainActivity.sand_view.setKeepScreenOn(sharedPreferences.getBoolean("screen",true)); //keep screen on or not
  177. }
  178. }