package net.sf.openrocket.android;\r
\r
import net.sf.openrocket.R;\r
+import net.sf.openrocket.android.util.AndroidLogWrapper;\r
import net.sf.openrocket.unit.UnitGroup;\r
import android.content.SharedPreferences;\r
import android.os.Bundle;\r
+import android.preference.Preference;\r
import android.preference.PreferenceManager;\r
\r
public class PreferencesActivity extends android.preference.PreferenceActivity \r
-implements SharedPreferences.OnSharedPreferenceChangeListener {\r
+{\r
\r
+ \r
@Override\r
protected void onCreate( Bundle savedInstanceState ) {\r
super.onCreate( savedInstanceState );\r
addPreferencesFromResource(R.xml.preferences);\r
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);\r
- prefs.registerOnSharedPreferenceChangeListener(this);\r
+ \r
+ PreferenceManager prefManager = getPreferenceManager();\r
+ {\r
+ String key = getApplication().getResources().getString(R.string.PreferenceUnitLengthOption);\r
+ Preference pref = prefManager.findPreference(key);\r
+ new UnitPreferenceListener(pref, UnitGroup.UNITS_LENGTH, "Current value ");\r
+ \r
+ }\r
+ {\r
+ String key = getApplication().getResources().getString(R.string.PreferenceUnitMassOption);\r
+ Preference pref = prefManager.findPreference(key);\r
+ new UnitPreferenceListener(pref, UnitGroup.UNITS_MASS, "Current value ");\r
+ \r
+ }\r
+ {\r
+ String key = getApplication().getResources().getString(R.string.PreferenceUnitVelocityOption);\r
+ Preference pref = prefManager.findPreference(key);\r
+ new UnitPreferenceListener(pref, UnitGroup.UNITS_VELOCITY, "Current value ");\r
+ \r
+ }\r
+ {\r
+ String key = getApplication().getResources().getString(R.string.PreferenceUnitDistanceOption);\r
+ Preference pref = prefManager.findPreference(key);\r
+ new UnitPreferenceListener(pref, UnitGroup.UNITS_DISTANCE, "Current value ");\r
+ \r
+ }\r
}\r
\r
- /* (non-Javadoc)\r
- * @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String)\r
- */\r
@Override\r
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {\r
-\r
- initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));\r
+ protected void onDestroy() {\r
+ super.onDestroy();\r
}\r
\r
/**\r
String len = sharedPreferences.getString(unitLength, "cm");\r
UnitGroup.UNITS_LENGTH.setDefaultUnit( len );\r
\r
+ AndroidLogWrapper.d(PreferencesActivity.class, "Chaning mass");\r
String unitMass = app.getResources().getString(R.string.PreferenceUnitMassOption);\r
String mass = sharedPreferences.getString(unitMass, "g");\r
UnitGroup.UNITS_MASS.setDefaultUnit( mass );\r
\r
}\r
\r
- @Override\r
- protected void onStop() {\r
- initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));\r
- super.onStop();\r
+ private class UnitPreferenceListener implements Preference.OnPreferenceChangeListener {\r
+\r
+ private UnitGroup matchedGroup;\r
+ private String message;\r
+ private Preference pref;\r
+ \r
+ private UnitPreferenceListener( Preference pref, UnitGroup unit, String message) {\r
+ this.pref = pref;\r
+ this.matchedGroup = unit;\r
+ this.message = message;\r
+ pref.setSummary(message + unit.getDefaultUnit().getUnit());\r
+ // todo figure out how to setSummary - need to get initial value.\r
+ pref.setOnPreferenceChangeListener(this);\r
+ }\r
+ \r
+ @Override\r
+ public boolean onPreferenceChange(Preference preference, Object newValue) {\r
+ matchedGroup.setDefaultUnit((String)newValue);\r
+ preference.setSummary(message + newValue);\r
+ return true;\r
+ }\r
+ \r
}\r
\r
- \r
- \r
}\r
import net.sf.openrocket.document.Simulation;\r
import net.sf.openrocket.rocketcomponent.Configuration;\r
import android.content.Intent;\r
-import android.content.SharedPreferences;\r
import android.os.Bundle;\r
-import android.preference.PreferenceManager;\r
import android.support.v4.app.Fragment;\r
import android.support.v4.app.FragmentActivity;\r
import android.support.v4.app.FragmentTransaction;\r
import android.widget.TabHost;\r
\r
public class OpenRocketViewer extends FragmentActivity\r
-implements SharedPreferences.OnSharedPreferenceChangeListener,\r
-Simulations.OnSimulationSelectedListener\r
+implements Simulations.OnSimulationSelectedListener\r
{\r
\r
OpenRocketDocument rocketDocument;\r
\r
setContentView(R.layout.openrocketviewer);\r
\r
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);\r
- prefs.registerOnSharedPreferenceChangeListener(this);\r
-\r
mTabHost = (TabHost)findViewById(android.R.id.tabhost);\r
mTabHost.setup();\r
\r
outState.putString("tab", mTabHost.getCurrentTabTag());\r
}\r
\r
- /* (non-Javadoc)\r
- * @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String)\r
- */\r
- @Override\r
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {\r
- // just in case the user changed the units, we redraw.\r
- // TODO = updateContents(); redraw all children..\r
- }\r
-\r
@Override\r
public boolean onCreateOptionsMenu(Menu menu) {\r
MenuInflater inflater = getMenuInflater();\r
import net.sf.openrocket.unit.Unit;\r
import net.sf.openrocket.unit.UnitGroup;\r
import net.sf.openrocket.util.Coordinate;\r
+import android.content.SharedPreferences;\r
import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
import android.support.v4.app.Fragment;\r
import android.view.LayoutInflater;\r
import android.view.View;\r
import android.widget.Spinner;\r
import android.widget.TextView;\r
\r
-public class Overview extends Fragment {\r
+public class Overview extends Fragment\r
+implements SharedPreferences.OnSharedPreferenceChangeListener\r
+{\r
\r
/* Calculation of CP and CG */\r
private AerodynamicCalculator aerodynamicCalculator = new BarrowmanCalculator();\r
return v;\r
}\r
\r
- \r
@Override\r
public void onActivityCreated(Bundle savedInstanceState) {\r
super.onActivityCreated(savedInstanceState);\r
+ \r
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+ prefs.registerOnSharedPreferenceChangeListener(this);\r
+\r
+ setup();\r
+\r
+ }\r
\r
+ @Override\r
+ public void onDestroy() {\r
+ super.onDestroy();\r
+\r
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+ prefs.unregisterOnSharedPreferenceChangeListener(this);\r
+}\r
+\r
+ @Override\r
+ public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
+ if ( this.isVisible() ) {\r
+ setup();\r
+ }\r
+ }\r
+ \r
+ private void setup() {\r
final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
final Configuration rocketConfiguration = rocketDocument.getDefaultConfiguration();\r
Rocket rocket = rocketDocument.getRocket();\r
\r
AndroidLogWrapper.d(Overview.class, "spinnerAdapter = " + spinnerAdapter);\r
AndroidLogWrapper.d(Overview.class, "configurationSpinner = " + configurationSpinner);\r
- \r
+\r
configurationSpinner.setAdapter(spinnerAdapter);\r
configurationSpinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() {\r
\r
\r
Unit lengthUnit = UnitGroup.UNITS_LENGTH.getDefaultUnit();\r
Unit massUnit = UnitGroup.UNITS_MASS.getDefaultUnit();\r
-\r
+ \r
Coordinate cg = RocketUtils.getCG(rocket, MassCalcType.NO_MOTORS);\r
double length = RocketUtils.getLength(rocket);\r
((TextView)getActivity().findViewById(R.id.openrocketviewerDesigner)).setText(rocket.getDesigner());\r
((TextView)getActivity().findViewById(R.id.openrocketviewerLength)).setText(lengthUnit.toStringUnit(length));\r
((TextView)getActivity().findViewById(R.id.openrocketviewerMass)).setText(massUnit.toStringUnit(cg.weight));\r
((TextView)getActivity().findViewById(R.id.openrocketviewerStageCount)).setText(String.valueOf(rocket.getStageCount()));\r
-\r
-\r
}\r
\r
-\r
}\r
import net.sf.openrocket.unit.Unit;\r
import net.sf.openrocket.unit.UnitGroup;\r
import android.app.Activity;\r
+import android.content.SharedPreferences;\r
import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
import android.support.v4.app.Fragment;\r
import android.view.LayoutInflater;\r
import android.view.View;\r
import android.widget.ListView;\r
import android.widget.TextView;\r
\r
-public class Simulations extends Fragment {\r
+public class Simulations extends Fragment\r
+implements SharedPreferences.OnSharedPreferenceChangeListener\r
+{\r
\r
public interface OnSimulationSelectedListener {\r
public void onSimulationSelected( int simulationId );\r
}\r
- \r
+\r
private ListView simulationList;\r
private OnSimulationSelectedListener listener;\r
\r
public void onActivityCreated(Bundle savedInstanceState) {\r
super.onActivityCreated(savedInstanceState);\r
\r
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+ prefs.registerOnSharedPreferenceChangeListener(this);\r
+\r
+ setup();\r
+\r
+ }\r
+\r
+ @Override\r
+ public void onDestroy() {\r
+ super.onDestroy();\r
+\r
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+ prefs.unregisterOnSharedPreferenceChangeListener(this);\r
+ }\r
+\r
+ @Override\r
+ public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
+ if ( this.isVisible() ) {\r
+ setup();\r
+ }\r
+ }\r
+\r
+\r
+ private void setup() {\r
final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());\r
\r