From b464526d5e827e365de671151637a67a910bf305 Mon Sep 17 00:00:00 2001 From: FNelson Date: Wed, 4 Aug 2010 11:58:43 +0100 Subject: [PATCH] Aggregated stats in first working state. --- .../mytracks/AggregatedStatsActivity.java | 23 +++++++++++-------- .../mytracks/MyTracksWaypointDetails.java | 13 +++++------ .../android/apps/mytracks/StatsUtilities.java | 16 +++++++------ .../content/MyTracksProviderUtils.java | 5 ++-- .../content/MyTracksProviderUtilsImpl.java | 8 +++---- 5 files changed, 34 insertions(+), 31 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/AggregatedStatsActivity.java b/MyTracks/src/com/google/android/apps/mytracks/AggregatedStatsActivity.java index 68bb8d945..19b6eb7d6 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/AggregatedStatsActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/AggregatedStatsActivity.java @@ -1,24 +1,22 @@ package com.google.android.apps.mytracks; -import java.util.Collection; 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.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; -import android.os.Handler; import android.util.DisplayMetrics; import android.util.Log; import android.view.Window; import android.widget.ScrollView; 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. * @@ -50,6 +48,7 @@ public class AggregatedStatsActivity extends Activity MyTracksSettings.METRIC_UNITS, true); utils.setMetricUnits(metricUnits); utils.updateUnits(); + loadAggregatedStats(); } } } @@ -60,7 +59,6 @@ public class AggregatedStatsActivity extends Activity // We don't need a window title bar: requestWindowFeature(Window.FEATURE_NO_TITLE); - //TODO - change to custom layout - without dynamic fields setContentView(R.layout.stats); ScrollView sv = ((ScrollView) findViewById(R.id.scrolly)); @@ -83,8 +81,14 @@ public class AggregatedStatsActivity extends Activity if (metrics.heightPixels > 600) { ((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() { List tracks = retrieveTracks(); TripStatistics rollingStats = null; @@ -98,14 +102,13 @@ public class AggregatedStatsActivity extends Activity updateView(rollingStats); } - private List retrieveTracks() { return tracksProvider.retrieveAllTracks(); } private void updateView(TripStatistics aggStats) { if (aggStats != null) { - + utils.setAllStats(aggStats); } } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracksWaypointDetails.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracksWaypointDetails.java index 33b911762..44ade200e 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MyTracksWaypointDetails.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracksWaypointDetails.java @@ -15,12 +15,6 @@ */ 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.content.ContentValues; import android.content.SharedPreferences; @@ -34,6 +28,12 @@ import android.widget.Button; import android.widget.EditText; 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. * @@ -135,7 +135,6 @@ public class MyTracksWaypointDetails extends Activity iconId = R.drawable.ylw_pushpin; TripStatistics waypointStats = waypoint.getStatistics(); utils.setAllStats(waypointStats); - utils.setTime(R.id.total_time_register, waypointStats.getTotalTime()); utils.setAltitude( R.id.elevation_register, waypoint.getLocation().getAltitude()); break; diff --git a/MyTracks/src/com/google/android/apps/mytracks/StatsUtilities.java b/MyTracks/src/com/google/android/apps/mytracks/StatsUtilities.java index b0c3c8b14..912e2294a 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/StatsUtilities.java +++ b/MyTracks/src/com/google/android/apps/mytracks/StatsUtilities.java @@ -15,17 +15,17 @@ */ package com.google.android.apps.mytracks; -import com.google.android.apps.mytracks.stats.TripStatistics; -import com.google.android.apps.mytracks.util.StringUtils; -import com.google.android.apps.mytracks.util.UnitConversions; -import com.google.android.maps.mytracks.R; +import java.text.DecimalFormat; +import java.text.NumberFormat; import android.app.Activity; import android.util.Log; import android.widget.TextView; -import java.text.DecimalFormat; -import java.text.NumberFormat; +import com.google.android.apps.mytracks.stats.TripStatistics; +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. @@ -218,7 +218,7 @@ public class StatsUtilities { 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()); setDistance(R.id.total_distance_register, stats.getTotalDistance() / 1000); 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()); setGrade(R.id.min_grade_register, stats.getMinGrade()); 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) { diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtils.java b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtils.java index 1f90b6b21..34943c636 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtils.java @@ -15,7 +15,6 @@ */ package com.google.android.apps.mytracks.content; -import java.util.Collection; import java.util.List; import android.content.Context; @@ -189,10 +188,10 @@ public interface MyTracksProviderUtils { /** * 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. * - * @return a collection of all the recorded tracks + * @return a list of all the recorded tracks */ List retrieveAllTracks(); diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java index e6cd92758..525d0e018 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java @@ -15,12 +15,9 @@ */ package com.google.android.apps.mytracks.content; -import java.util.Collection; import java.util.LinkedList; import java.util.List; -import com.google.android.apps.mytracks.stats.TripStatistics; - import android.content.ContentValues; import android.content.Context; import android.database.Cursor; @@ -28,6 +25,8 @@ import android.location.Location; import android.net.Uri; import android.util.Log; +import com.google.android.apps.mytracks.stats.TripStatistics; + /** * Helper class providing easy access to locations and tracks in the * MyTracksProvider. All static members. @@ -807,10 +806,11 @@ public class MyTracksProviderUtilsImpl implements MyTracksProviderUtils { return findTrackBy(select); } + @Override public List retrieveAllTracks() { List tracks = new LinkedList(); Cursor cursor = getTracksCursor(null); - if (cursor != null) { + if (cursor != null && cursor.moveToFirst()) { do { tracks.add(createTrack(cursor)); } while(cursor.moveToNext());