Aggregated stats in first working state.

This commit is contained in:
FNelson
2010-08-04 11:58:43 +01:00
parent 0ccd05e605
commit b464526d5e
5 changed files with 34 additions and 31 deletions
@@ -1,24 +1,22 @@
package com.google.android.apps.mytracks; package com.google.android.apps.mytracks;
import java.util.Collection;
import java.util.List; import java.util.List;
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
import com.google.android.apps.mytracks.content.Track;
import com.google.android.apps.mytracks.stats.TripStatistics;
import com.google.android.maps.mytracks.R;
import android.app.Activity; import android.app.Activity;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import android.view.Window; import android.view.Window;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
import com.google.android.apps.mytracks.content.Track;
import com.google.android.apps.mytracks.stats.TripStatistics;
import com.google.android.maps.mytracks.R;
/** /**
* Activity for viewing the combined statistics for all the recorded tracks. * Activity for viewing the combined statistics for all the recorded tracks.
* *
@@ -50,6 +48,7 @@ public class AggregatedStatsActivity extends Activity
MyTracksSettings.METRIC_UNITS, true); MyTracksSettings.METRIC_UNITS, true);
utils.setMetricUnits(metricUnits); utils.setMetricUnits(metricUnits);
utils.updateUnits(); utils.updateUnits();
loadAggregatedStats();
} }
} }
} }
@@ -60,7 +59,6 @@ public class AggregatedStatsActivity extends Activity
// We don't need a window title bar: // We don't need a window title bar:
requestWindowFeature(Window.FEATURE_NO_TITLE); requestWindowFeature(Window.FEATURE_NO_TITLE);
//TODO - change to custom layout - without dynamic fields
setContentView(R.layout.stats); setContentView(R.layout.stats);
ScrollView sv = ((ScrollView) findViewById(R.id.scrolly)); ScrollView sv = ((ScrollView) findViewById(R.id.scrolly));
@@ -83,8 +81,14 @@ public class AggregatedStatsActivity extends Activity
if (metrics.heightPixels > 600) { if (metrics.heightPixels > 600) {
((TextView) findViewById(R.id.speed_register)).setTextSize(80.0f); ((TextView) findViewById(R.id.speed_register)).setTextSize(80.0f);
} }
loadAggregatedStats();
} }
/**
* 1. Reads tracks from the db
* 2. Merges the trip stats from the tracks
* 3. Updates the view
*/
private void loadAggregatedStats() { private void loadAggregatedStats() {
List<Track> tracks = retrieveTracks(); List<Track> tracks = retrieveTracks();
TripStatistics rollingStats = null; TripStatistics rollingStats = null;
@@ -98,14 +102,13 @@ public class AggregatedStatsActivity extends Activity
updateView(rollingStats); updateView(rollingStats);
} }
private List<Track> retrieveTracks() { private List<Track> retrieveTracks() {
return tracksProvider.retrieveAllTracks(); return tracksProvider.retrieveAllTracks();
} }
private void updateView(TripStatistics aggStats) { private void updateView(TripStatistics aggStats) {
if (aggStats != null) { if (aggStats != null) {
utils.setAllStats(aggStats);
} }
} }
} }
@@ -15,12 +15,6 @@
*/ */
package com.google.android.apps.mytracks; package com.google.android.apps.mytracks;
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
import com.google.android.apps.mytracks.content.Waypoint;
import com.google.android.apps.mytracks.content.WaypointsColumns;
import com.google.android.apps.mytracks.stats.TripStatistics;
import com.google.android.maps.mytracks.R;
import android.app.Activity; import android.app.Activity;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@@ -34,6 +28,12 @@ import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
import com.google.android.apps.mytracks.content.Waypoint;
import com.google.android.apps.mytracks.content.WaypointsColumns;
import com.google.android.apps.mytracks.stats.TripStatistics;
import com.google.android.maps.mytracks.R;
/** /**
* Screen in which the user enters details about a waypoint. * Screen in which the user enters details about a waypoint.
* *
@@ -135,7 +135,6 @@ public class MyTracksWaypointDetails extends Activity
iconId = R.drawable.ylw_pushpin; iconId = R.drawable.ylw_pushpin;
TripStatistics waypointStats = waypoint.getStatistics(); TripStatistics waypointStats = waypoint.getStatistics();
utils.setAllStats(waypointStats); utils.setAllStats(waypointStats);
utils.setTime(R.id.total_time_register, waypointStats.getTotalTime());
utils.setAltitude( utils.setAltitude(
R.id.elevation_register, waypoint.getLocation().getAltitude()); R.id.elevation_register, waypoint.getLocation().getAltitude());
break; break;
@@ -15,17 +15,17 @@
*/ */
package com.google.android.apps.mytracks; package com.google.android.apps.mytracks;
import com.google.android.apps.mytracks.stats.TripStatistics; import java.text.DecimalFormat;
import com.google.android.apps.mytracks.util.StringUtils; import java.text.NumberFormat;
import com.google.android.apps.mytracks.util.UnitConversions;
import com.google.android.maps.mytracks.R;
import android.app.Activity; import android.app.Activity;
import android.util.Log; import android.util.Log;
import android.widget.TextView; import android.widget.TextView;
import java.text.DecimalFormat; import com.google.android.apps.mytracks.stats.TripStatistics;
import java.text.NumberFormat; import com.google.android.apps.mytracks.util.StringUtils;
import com.google.android.apps.mytracks.util.UnitConversions;
import com.google.android.maps.mytracks.R;
/** /**
* Various utility functions for views that display statistics information. * Various utility functions for views that display statistics information.
@@ -218,7 +218,7 @@ public class StatsUtilities {
setGrade(R.id.max_grade_register, maxGrade); setGrade(R.id.max_grade_register, maxGrade);
} }
public void setAllStats(TripStatistics stats) { public void setAllStats(TripStatistics stats) {
setTime(R.id.moving_time_register, stats.getMovingTime()); setTime(R.id.moving_time_register, stats.getMovingTime());
setDistance(R.id.total_distance_register, stats.getTotalDistance() / 1000); setDistance(R.id.total_distance_register, stats.getTotalDistance() / 1000);
setSpeed(R.id.average_speed_register, stats.getAverageSpeed() * 3.6); setSpeed(R.id.average_speed_register, stats.getAverageSpeed() * 3.6);
@@ -230,6 +230,8 @@ public class StatsUtilities {
setAltitude(R.id.elevation_gain_register, stats.getTotalElevationGain()); setAltitude(R.id.elevation_gain_register, stats.getTotalElevationGain());
setGrade(R.id.min_grade_register, stats.getMinGrade()); setGrade(R.id.min_grade_register, stats.getMinGrade());
setGrade(R.id.max_grade_register, stats.getMaxGrade()); setGrade(R.id.max_grade_register, stats.getMaxGrade());
setTime(R.id.total_time_register, stats.getTotalTime());
} }
public void setSpeedLabel(int id, int speedString, int paceString) { public void setSpeedLabel(int id, int speedString, int paceString) {
@@ -15,7 +15,6 @@
*/ */
package com.google.android.apps.mytracks.content; package com.google.android.apps.mytracks.content;
import java.util.Collection;
import java.util.List; import java.util.List;
import android.content.Context; import android.content.Context;
@@ -189,10 +188,10 @@ public interface MyTracksProviderUtils {
/** /**
* Retrieves all tracks without track points. If no tracks exist an empty * Retrieves all tracks without track points. If no tracks exist an empty
* collection will be returns. Use {@link #getTrackPoints(Track, int)} to load * list will be returned. Use {@link #getTrackPoints(Track, int)} to load
* the track points. * the track points.
* *
* @return a collection of all the recorded tracks * @return a list of all the recorded tracks
*/ */
List<Track> retrieveAllTracks(); List<Track> retrieveAllTracks();
@@ -15,12 +15,9 @@
*/ */
package com.google.android.apps.mytracks.content; package com.google.android.apps.mytracks.content;
import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import com.google.android.apps.mytracks.stats.TripStatistics;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
@@ -28,6 +25,8 @@ import android.location.Location;
import android.net.Uri; import android.net.Uri;
import android.util.Log; import android.util.Log;
import com.google.android.apps.mytracks.stats.TripStatistics;
/** /**
* Helper class providing easy access to locations and tracks in the * Helper class providing easy access to locations and tracks in the
* MyTracksProvider. All static members. * MyTracksProvider. All static members.
@@ -807,10 +806,11 @@ public class MyTracksProviderUtilsImpl implements MyTracksProviderUtils {
return findTrackBy(select); return findTrackBy(select);
} }
@Override
public List<Track> retrieveAllTracks() { public List<Track> retrieveAllTracks() {
List<Track> tracks = new LinkedList<Track>(); List<Track> tracks = new LinkedList<Track>();
Cursor cursor = getTracksCursor(null); Cursor cursor = getTracksCursor(null);
if (cursor != null) { if (cursor != null && cursor.moveToFirst()) {
do { do {
tracks.add(createTrack(cursor)); tracks.add(createTrack(cursor));
} while(cursor.moveToNext()); } while(cursor.moveToNext());