Ensuring the rest of the app can deal with preferences being restored from the backup

This commit is contained in:
Rodrigo Damazio
2010-08-24 21:17:55 -03:00
parent 68a9f1bc46
commit d014f422d2
3 changed files with 76 additions and 56 deletions
@@ -866,28 +866,36 @@ public class MyTracksMap extends MapActivity
} }
@Override @Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, public void onSharedPreferenceChanged(
String key) { final SharedPreferences sharedPreferences,
final String key) {
if (key != null) { if (key != null) {
if (key.equals(getString(R.string.min_required_accuracy_key))) { uiHandler.post(new Runnable() {
minRequiredAccuracy = sharedPreferences.getInt( @Override
getString(R.string.min_required_accuracy_key), public void run() {
MyTracksSettings.DEFAULT_MIN_REQUIRED_ACCURACY); if (key.equals(getString(R.string.min_required_accuracy_key))) {
} else if (key.equals(getString(R.string.selected_track_key))) { minRequiredAccuracy = sharedPreferences.getInt(
long selectedTrackId = getString(R.string.min_required_accuracy_key),
sharedPreferences.getLong(getString(R.string.selected_track_key), MyTracksSettings.DEFAULT_MIN_REQUIRED_ACCURACY);
-1); } else if (key.equals(getString(R.string.selected_track_key))) {
setSelectedTrack(selectedTrackId); long selectedTrackId =
} else if (key.equals(getString(R.string.recording_track_key))) { sharedPreferences.getLong(
recordingTrackId = getString(R.string.selected_track_key),
sharedPreferences.getLong(getString(R.string.recording_track_key), -1);
-1); setSelectedTrack(selectedTrackId);
if (selectedTrack != null) { } else if (key.equals(getString(R.string.recording_track_key))) {
mapOverlay.setShowEndMarker( recordingTrackId =
selectedTrack.getId() != recordingTrackId); sharedPreferences.getLong(
mapView.postInvalidate(); getString(R.string.recording_track_key),
-1);
if (selectedTrack != null) {
mapOverlay.setShowEndMarker(
selectedTrack.getId() != recordingTrackId);
mapView.postInvalidate();
}
}
} }
} });
} }
} }
@@ -216,43 +216,51 @@ public class StatsActivity extends Activity
@Override @Override
public void onSharedPreferenceChanged( public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) { final SharedPreferences sharedPreferences, final String key) {
Log.d(MyTracksConstants.TAG, Log.d(MyTracksConstants.TAG,
"StatsActivity: onSharedPreferences changed " + key); "StatsActivity: onSharedPreferences changed " + key);
if (key != null) { if (key != null) {
if (key.equals(getString(R.string.selected_track_key))) { runOnUiThread(new Runnable() {
selectedTrackId = @Override
sharedPreferences.getLong(getString(R.string.selected_track_key), public void run() {
-1); if (key.equals(getString(R.string.selected_track_key))) {
checkLiveTrack(); selectedTrackId =
restoreStats(); sharedPreferences.getLong(
updateLocation(null); getString(R.string.selected_track_key),
} else if (key.equals(getString(R.string.recording_track_key))) { -1);
recordingTrackId = checkLiveTrack();
sharedPreferences.getLong(getString(R.string.recording_track_key), restoreStats();
-1); updateLocation(null);
checkLiveTrack(); } else if (key.equals(getString(R.string.recording_track_key))) {
restoreStats(); recordingTrackId =
updateLocation(null); sharedPreferences.getLong(
} else if (key.equals(getString(R.string.metric_units_key))) { getString(R.string.recording_track_key),
metricUnits = -1);
sharedPreferences.getBoolean( checkLiveTrack();
getString(R.string.metric_units_key), true); restoreStats();
utils.setMetricUnits(metricUnits); updateLocation(null);
utils.updateUnits(); } else if (key.equals(getString(R.string.metric_units_key))) {
restoreStats(); metricUnits =
} else if (key.equals(getString(R.string.report_speed_key))) { sharedPreferences.getBoolean(
displaySpeed = getString(R.string.metric_units_key), true);
sharedPreferences.getBoolean(getString(R.string.report_speed_key), utils.setMetricUnits(metricUnits);
true); utils.updateUnits();
utils.setReportSpeed(displaySpeed); restoreStats();
utils.updateUnits(); } else if (key.equals(getString(R.string.report_speed_key))) {
utils.setSpeedLabel( displaySpeed =
R.id.speed_label, R.string.speed, R.string.pace_label); sharedPreferences.getBoolean(
Log.w(MyTracksConstants.TAG, "Setting speed labels"); getString(R.string.report_speed_key),
utils.setSpeedLabels(); true);
restoreStats(); utils.setReportSpeed(displaySpeed);
} utils.updateUnits();
utils.setSpeedLabel(
R.id.speed_label, R.string.speed, R.string.pace_label);
Log.w(MyTracksConstants.TAG, "Setting speed labels");
utils.setSpeedLabels();
restoreStats();
}
}
});
} }
} }
@@ -353,8 +361,13 @@ public class StatsActivity extends Activity
} }
track = providerUtils.getTrack(selectedTrackId); track = providerUtils.getTrack(selectedTrackId);
if (track == null || track.getStatistics() == null) {
utils.setAllToUnknown();
return;
}
startTime = track.getStatistics().getStartTime(); startTime = track.getStatistics().getStartTime();
if(!selectedTrackIsRecording()) { if (!selectedTrackIsRecording()) {
utils.setTime(R.id.total_time_register, utils.setTime(R.id.total_time_register,
track.getStatistics().getTotalTime()); track.getStatistics().getTotalTime());
} }
@@ -36,7 +36,6 @@ import android.app.Service;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor; import android.database.Cursor;
import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteException;
import android.location.Location; import android.location.Location;