Fix up the unit preferences correctly. The preferences now show the current setting and when they are changed, the overview and simulations lists are updated.
This commit is contained in:
parent
9e05cfeb29
commit
616dd8c1a7
@ -1,29 +1,52 @@
|
||||
package net.sf.openrocket.android;
|
||||
|
||||
import net.sf.openrocket.R;
|
||||
import net.sf.openrocket.android.util.AndroidLogWrapper;
|
||||
import net.sf.openrocket.unit.UnitGroup;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
public class PreferencesActivity extends android.preference.PreferenceActivity
|
||||
implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
{
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate( Bundle savedInstanceState ) {
|
||||
super.onCreate( savedInstanceState );
|
||||
addPreferencesFromResource(R.xml.preferences);
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
prefs.registerOnSharedPreferenceChangeListener(this);
|
||||
|
||||
PreferenceManager prefManager = getPreferenceManager();
|
||||
{
|
||||
String key = getApplication().getResources().getString(R.string.PreferenceUnitLengthOption);
|
||||
Preference pref = prefManager.findPreference(key);
|
||||
new UnitPreferenceListener(pref, UnitGroup.UNITS_LENGTH, "Current value ");
|
||||
|
||||
}
|
||||
{
|
||||
String key = getApplication().getResources().getString(R.string.PreferenceUnitMassOption);
|
||||
Preference pref = prefManager.findPreference(key);
|
||||
new UnitPreferenceListener(pref, UnitGroup.UNITS_MASS, "Current value ");
|
||||
|
||||
}
|
||||
{
|
||||
String key = getApplication().getResources().getString(R.string.PreferenceUnitVelocityOption);
|
||||
Preference pref = prefManager.findPreference(key);
|
||||
new UnitPreferenceListener(pref, UnitGroup.UNITS_VELOCITY, "Current value ");
|
||||
|
||||
}
|
||||
{
|
||||
String key = getApplication().getResources().getString(R.string.PreferenceUnitDistanceOption);
|
||||
Preference pref = prefManager.findPreference(key);
|
||||
new UnitPreferenceListener(pref, UnitGroup.UNITS_DISTANCE, "Current value ");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
|
||||
initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -39,6 +62,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
String len = sharedPreferences.getString(unitLength, "cm");
|
||||
UnitGroup.UNITS_LENGTH.setDefaultUnit( len );
|
||||
|
||||
AndroidLogWrapper.d(PreferencesActivity.class, "Chaning mass");
|
||||
String unitMass = app.getResources().getString(R.string.PreferenceUnitMassOption);
|
||||
String mass = sharedPreferences.getString(unitMass, "g");
|
||||
UnitGroup.UNITS_MASS.setDefaultUnit( mass );
|
||||
@ -53,12 +77,28 @@ implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));
|
||||
super.onStop();
|
||||
private class UnitPreferenceListener implements Preference.OnPreferenceChangeListener {
|
||||
|
||||
private UnitGroup matchedGroup;
|
||||
private String message;
|
||||
private Preference pref;
|
||||
|
||||
private UnitPreferenceListener( Preference pref, UnitGroup unit, String message) {
|
||||
this.pref = pref;
|
||||
this.matchedGroup = unit;
|
||||
this.message = message;
|
||||
pref.setSummary(message + unit.getDefaultUnit().getUnit());
|
||||
// todo figure out how to setSummary - need to get initial value.
|
||||
pref.setOnPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
matchedGroup.setDefaultUnit((String)newValue);
|
||||
preference.setSummary(message + newValue);
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -13,9 +13,7 @@ import net.sf.openrocket.document.OpenRocketDocument;
|
||||
import net.sf.openrocket.document.Simulation;
|
||||
import net.sf.openrocket.rocketcomponent.Configuration;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
@ -27,8 +25,7 @@ import android.view.View;
|
||||
import android.widget.TabHost;
|
||||
|
||||
public class OpenRocketViewer extends FragmentActivity
|
||||
implements SharedPreferences.OnSharedPreferenceChangeListener,
|
||||
Simulations.OnSimulationSelectedListener
|
||||
implements Simulations.OnSimulationSelectedListener
|
||||
{
|
||||
|
||||
OpenRocketDocument rocketDocument;
|
||||
@ -48,9 +45,6 @@ Simulations.OnSimulationSelectedListener
|
||||
|
||||
setContentView(R.layout.openrocketviewer);
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
prefs.registerOnSharedPreferenceChangeListener(this);
|
||||
|
||||
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
|
||||
mTabHost.setup();
|
||||
|
||||
@ -76,15 +70,6 @@ Simulations.OnSimulationSelectedListener
|
||||
outState.putString("tab", mTabHost.getCurrentTabTag());
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
// just in case the user changed the units, we redraw.
|
||||
// TODO = updateContents(); redraw all children..
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
|
@ -17,7 +17,9 @@ import net.sf.openrocket.rocketcomponent.RocketUtils;
|
||||
import net.sf.openrocket.unit.Unit;
|
||||
import net.sf.openrocket.unit.UnitGroup;
|
||||
import net.sf.openrocket.util.Coordinate;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@ -27,7 +29,9 @@ import android.widget.ArrayAdapter;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class Overview extends Fragment {
|
||||
public class Overview extends Fragment
|
||||
implements SharedPreferences.OnSharedPreferenceChangeListener
|
||||
{
|
||||
|
||||
/* Calculation of CP and CG */
|
||||
private AerodynamicCalculator aerodynamicCalculator = new BarrowmanCalculator();
|
||||
@ -46,11 +50,33 @@ public class Overview extends Fragment {
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
prefs.registerOnSharedPreferenceChangeListener(this);
|
||||
|
||||
setup();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
prefs.unregisterOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
|
||||
if ( this.isVisible() ) {
|
||||
setup();
|
||||
}
|
||||
}
|
||||
|
||||
private void setup() {
|
||||
final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();
|
||||
final Configuration rocketConfiguration = rocketDocument.getDefaultConfiguration();
|
||||
Rocket rocket = rocketDocument.getRocket();
|
||||
@ -63,7 +89,7 @@ public class Overview extends Fragment {
|
||||
|
||||
AndroidLogWrapper.d(Overview.class, "spinnerAdapter = " + spinnerAdapter);
|
||||
AndroidLogWrapper.d(Overview.class, "configurationSpinner = " + configurationSpinner);
|
||||
|
||||
|
||||
configurationSpinner.setAdapter(spinnerAdapter);
|
||||
configurationSpinner.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() {
|
||||
|
||||
@ -108,16 +134,13 @@ public class Overview extends Fragment {
|
||||
|
||||
Unit lengthUnit = UnitGroup.UNITS_LENGTH.getDefaultUnit();
|
||||
Unit massUnit = UnitGroup.UNITS_MASS.getDefaultUnit();
|
||||
|
||||
|
||||
Coordinate cg = RocketUtils.getCG(rocket, MassCalcType.NO_MOTORS);
|
||||
double length = RocketUtils.getLength(rocket);
|
||||
((TextView)getActivity().findViewById(R.id.openrocketviewerDesigner)).setText(rocket.getDesigner());
|
||||
((TextView)getActivity().findViewById(R.id.openrocketviewerLength)).setText(lengthUnit.toStringUnit(length));
|
||||
((TextView)getActivity().findViewById(R.id.openrocketviewerMass)).setText(massUnit.toStringUnit(cg.weight));
|
||||
((TextView)getActivity().findViewById(R.id.openrocketviewerStageCount)).setText(String.valueOf(rocket.getStageCount()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -8,7 +8,9 @@ import net.sf.openrocket.document.Simulation;
|
||||
import net.sf.openrocket.unit.Unit;
|
||||
import net.sf.openrocket.unit.UnitGroup;
|
||||
import android.app.Activity;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@ -19,12 +21,14 @@ import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class Simulations extends Fragment {
|
||||
public class Simulations extends Fragment
|
||||
implements SharedPreferences.OnSharedPreferenceChangeListener
|
||||
{
|
||||
|
||||
public interface OnSimulationSelectedListener {
|
||||
public void onSimulationSelected( int simulationId );
|
||||
}
|
||||
|
||||
|
||||
private ListView simulationList;
|
||||
private OnSimulationSelectedListener listener;
|
||||
|
||||
@ -54,6 +58,30 @@ public class Simulations extends Fragment {
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
prefs.registerOnSharedPreferenceChangeListener(this);
|
||||
|
||||
setup();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
prefs.unregisterOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
|
||||
if ( this.isVisible() ) {
|
||||
setup();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void setup() {
|
||||
final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();
|
||||
AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user