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;
|
package net.sf.openrocket.android;
|
||||||
|
|
||||||
import net.sf.openrocket.R;
|
import net.sf.openrocket.R;
|
||||||
|
import net.sf.openrocket.android.util.AndroidLogWrapper;
|
||||||
import net.sf.openrocket.unit.UnitGroup;
|
import net.sf.openrocket.unit.UnitGroup;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
|
||||||
public class PreferencesActivity extends android.preference.PreferenceActivity
|
public class PreferencesActivity extends android.preference.PreferenceActivity
|
||||||
implements SharedPreferences.OnSharedPreferenceChangeListener {
|
{
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate( Bundle savedInstanceState ) {
|
protected void onCreate( Bundle savedInstanceState ) {
|
||||||
super.onCreate( savedInstanceState );
|
super.onCreate( savedInstanceState );
|
||||||
addPreferencesFromResource(R.xml.preferences);
|
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
|
@Override
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,6 +62,7 @@ implements SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
String len = sharedPreferences.getString(unitLength, "cm");
|
String len = sharedPreferences.getString(unitLength, "cm");
|
||||||
UnitGroup.UNITS_LENGTH.setDefaultUnit( len );
|
UnitGroup.UNITS_LENGTH.setDefaultUnit( len );
|
||||||
|
|
||||||
|
AndroidLogWrapper.d(PreferencesActivity.class, "Chaning mass");
|
||||||
String unitMass = app.getResources().getString(R.string.PreferenceUnitMassOption);
|
String unitMass = app.getResources().getString(R.string.PreferenceUnitMassOption);
|
||||||
String mass = sharedPreferences.getString(unitMass, "g");
|
String mass = sharedPreferences.getString(unitMass, "g");
|
||||||
UnitGroup.UNITS_MASS.setDefaultUnit( mass );
|
UnitGroup.UNITS_MASS.setDefaultUnit( mass );
|
||||||
@ -53,12 +77,28 @@ implements SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private class UnitPreferenceListener implements Preference.OnPreferenceChangeListener {
|
||||||
protected void onStop() {
|
|
||||||
initializePreferences(getApplication(), PreferenceManager.getDefaultSharedPreferences(this));
|
private UnitGroup matchedGroup;
|
||||||
super.onStop();
|
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.document.Simulation;
|
||||||
import net.sf.openrocket.rocketcomponent.Configuration;
|
import net.sf.openrocket.rocketcomponent.Configuration;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.app.FragmentActivity;
|
import android.support.v4.app.FragmentActivity;
|
||||||
import android.support.v4.app.FragmentTransaction;
|
import android.support.v4.app.FragmentTransaction;
|
||||||
@ -27,8 +25,7 @@ import android.view.View;
|
|||||||
import android.widget.TabHost;
|
import android.widget.TabHost;
|
||||||
|
|
||||||
public class OpenRocketViewer extends FragmentActivity
|
public class OpenRocketViewer extends FragmentActivity
|
||||||
implements SharedPreferences.OnSharedPreferenceChangeListener,
|
implements Simulations.OnSimulationSelectedListener
|
||||||
Simulations.OnSimulationSelectedListener
|
|
||||||
{
|
{
|
||||||
|
|
||||||
OpenRocketDocument rocketDocument;
|
OpenRocketDocument rocketDocument;
|
||||||
@ -48,9 +45,6 @@ Simulations.OnSimulationSelectedListener
|
|||||||
|
|
||||||
setContentView(R.layout.openrocketviewer);
|
setContentView(R.layout.openrocketviewer);
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
|
||||||
prefs.registerOnSharedPreferenceChangeListener(this);
|
|
||||||
|
|
||||||
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
|
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
|
||||||
mTabHost.setup();
|
mTabHost.setup();
|
||||||
|
|
||||||
@ -76,15 +70,6 @@ Simulations.OnSimulationSelectedListener
|
|||||||
outState.putString("tab", mTabHost.getCurrentTabTag());
|
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
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getMenuInflater();
|
||||||
|
@ -17,7 +17,9 @@ import net.sf.openrocket.rocketcomponent.RocketUtils;
|
|||||||
import net.sf.openrocket.unit.Unit;
|
import net.sf.openrocket.unit.Unit;
|
||||||
import net.sf.openrocket.unit.UnitGroup;
|
import net.sf.openrocket.unit.UnitGroup;
|
||||||
import net.sf.openrocket.util.Coordinate;
|
import net.sf.openrocket.util.Coordinate;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -27,7 +29,9 @@ import android.widget.ArrayAdapter;
|
|||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
public class Overview extends Fragment {
|
public class Overview extends Fragment
|
||||||
|
implements SharedPreferences.OnSharedPreferenceChangeListener
|
||||||
|
{
|
||||||
|
|
||||||
/* Calculation of CP and CG */
|
/* Calculation of CP and CG */
|
||||||
private AerodynamicCalculator aerodynamicCalculator = new BarrowmanCalculator();
|
private AerodynamicCalculator aerodynamicCalculator = new BarrowmanCalculator();
|
||||||
@ -46,11 +50,33 @@ public class Overview extends Fragment {
|
|||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(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 OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();
|
||||||
final Configuration rocketConfiguration = rocketDocument.getDefaultConfiguration();
|
final Configuration rocketConfiguration = rocketDocument.getDefaultConfiguration();
|
||||||
Rocket rocket = rocketDocument.getRocket();
|
Rocket rocket = rocketDocument.getRocket();
|
||||||
@ -115,9 +141,6 @@ public class Overview extends Fragment {
|
|||||||
((TextView)getActivity().findViewById(R.id.openrocketviewerLength)).setText(lengthUnit.toStringUnit(length));
|
((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.openrocketviewerMass)).setText(massUnit.toStringUnit(cg.weight));
|
||||||
((TextView)getActivity().findViewById(R.id.openrocketviewerStageCount)).setText(String.valueOf(rocket.getStageCount()));
|
((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.Unit;
|
||||||
import net.sf.openrocket.unit.UnitGroup;
|
import net.sf.openrocket.unit.UnitGroup;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -19,7 +21,9 @@ import android.widget.ArrayAdapter;
|
|||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
public class Simulations extends Fragment {
|
public class Simulations extends Fragment
|
||||||
|
implements SharedPreferences.OnSharedPreferenceChangeListener
|
||||||
|
{
|
||||||
|
|
||||||
public interface OnSimulationSelectedListener {
|
public interface OnSimulationSelectedListener {
|
||||||
public void onSimulationSelected( int simulationId );
|
public void onSimulationSelected( int simulationId );
|
||||||
@ -54,6 +58,30 @@ public class Simulations extends Fragment {
|
|||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(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 OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();
|
||||||
AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());
|
AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user