diff --git a/MyTracks/res/drawable/btn_arrow_left_default.png b/MyTracks/res/drawable/btn_arrow_left_default.png
deleted file mode 100644
index a9709aaba..000000000
Binary files a/MyTracks/res/drawable/btn_arrow_left_default.png and /dev/null differ
diff --git a/MyTracks/res/drawable/btn_arrow_left_press.png b/MyTracks/res/drawable/btn_arrow_left_press.png
deleted file mode 100644
index 262c928c6..000000000
Binary files a/MyTracks/res/drawable/btn_arrow_left_press.png and /dev/null differ
diff --git a/MyTracks/res/drawable/btn_arrow_right_default.png b/MyTracks/res/drawable/btn_arrow_right_default.png
deleted file mode 100644
index a4f78dc0d..000000000
Binary files a/MyTracks/res/drawable/btn_arrow_right_default.png and /dev/null differ
diff --git a/MyTracks/res/drawable/btn_arrow_right_press.png b/MyTracks/res/drawable/btn_arrow_right_press.png
deleted file mode 100644
index 4b37b0df2..000000000
Binary files a/MyTracks/res/drawable/btn_arrow_right_press.png and /dev/null differ
diff --git a/MyTracks/res/drawable/left_arrow_chart.png b/MyTracks/res/drawable/left_arrow_chart.png
new file mode 100644
index 000000000..1dca36914
Binary files /dev/null and b/MyTracks/res/drawable/left_arrow_chart.png differ
diff --git a/MyTracks/res/drawable/left_arrow_chart_press.png b/MyTracks/res/drawable/left_arrow_chart_press.png
new file mode 100644
index 000000000..58810b417
Binary files /dev/null and b/MyTracks/res/drawable/left_arrow_chart_press.png differ
diff --git a/MyTracks/res/drawable/left_arrow_chart_stateful.xml b/MyTracks/res/drawable/left_arrow_chart_stateful.xml
new file mode 100644
index 000000000..1574fcd9c
--- /dev/null
+++ b/MyTracks/res/drawable/left_arrow_chart_stateful.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/MyTracks/res/drawable/left_arrow_stats.png b/MyTracks/res/drawable/left_arrow_stats.png
new file mode 100644
index 000000000..841377b58
Binary files /dev/null and b/MyTracks/res/drawable/left_arrow_stats.png differ
diff --git a/MyTracks/res/drawable/left_arrow_stats_press.png b/MyTracks/res/drawable/left_arrow_stats_press.png
new file mode 100644
index 000000000..517293a7a
Binary files /dev/null and b/MyTracks/res/drawable/left_arrow_stats_press.png differ
diff --git a/MyTracks/res/drawable/btn_arrow_left.xml b/MyTracks/res/drawable/left_arrow_stats_stateful.xml
similarity index 80%
rename from MyTracks/res/drawable/btn_arrow_left.xml
rename to MyTracks/res/drawable/left_arrow_stats_stateful.xml
index 042c8bd06..5b3169af4 100644
--- a/MyTracks/res/drawable/btn_arrow_left.xml
+++ b/MyTracks/res/drawable/left_arrow_stats_stateful.xml
@@ -17,11 +17,11 @@ limitations under the License.
+ android:drawable="@drawable/left_arrow_stats" />
+ android:drawable="@drawable/left_arrow_stats_press" />
-
+
diff --git a/MyTracks/res/drawable/left_arrow_track.png b/MyTracks/res/drawable/left_arrow_track.png
new file mode 100644
index 000000000..415e5dbf2
Binary files /dev/null and b/MyTracks/res/drawable/left_arrow_track.png differ
diff --git a/MyTracks/res/drawable/left_arrow_track_press.png b/MyTracks/res/drawable/left_arrow_track_press.png
new file mode 100644
index 000000000..acf9fb36d
Binary files /dev/null and b/MyTracks/res/drawable/left_arrow_track_press.png differ
diff --git a/MyTracks/res/drawable/btn_arrow_right.xml b/MyTracks/res/drawable/left_arrow_track_stateful.xml
similarity index 80%
rename from MyTracks/res/drawable/btn_arrow_right.xml
rename to MyTracks/res/drawable/left_arrow_track_stateful.xml
index 762436c9c..3ae27009c 100644
--- a/MyTracks/res/drawable/btn_arrow_right.xml
+++ b/MyTracks/res/drawable/left_arrow_track_stateful.xml
@@ -17,11 +17,11 @@ limitations under the License.
+ android:drawable="@drawable/left_arrow_track" />
+ android:drawable="@drawable/left_arrow_track_press" />
-
+
diff --git a/MyTracks/res/drawable/right_arrow_chart.png b/MyTracks/res/drawable/right_arrow_chart.png
new file mode 100644
index 000000000..43e3d57b8
Binary files /dev/null and b/MyTracks/res/drawable/right_arrow_chart.png differ
diff --git a/MyTracks/res/drawable/right_arrow_chart_press.png b/MyTracks/res/drawable/right_arrow_chart_press.png
new file mode 100644
index 000000000..c2c8ad37f
Binary files /dev/null and b/MyTracks/res/drawable/right_arrow_chart_press.png differ
diff --git a/MyTracks/res/drawable/right_arrow_chart_stateful.xml b/MyTracks/res/drawable/right_arrow_chart_stateful.xml
new file mode 100644
index 000000000..eeb6b33f8
--- /dev/null
+++ b/MyTracks/res/drawable/right_arrow_chart_stateful.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MyTracks/res/drawable/right_arrow_stats.png b/MyTracks/res/drawable/right_arrow_stats.png
new file mode 100644
index 000000000..57094ed4d
Binary files /dev/null and b/MyTracks/res/drawable/right_arrow_stats.png differ
diff --git a/MyTracks/res/drawable/right_arrow_stats_press.png b/MyTracks/res/drawable/right_arrow_stats_press.png
new file mode 100644
index 000000000..e57fc81fc
Binary files /dev/null and b/MyTracks/res/drawable/right_arrow_stats_press.png differ
diff --git a/MyTracks/res/drawable/right_arrow_stats_stateful.xml b/MyTracks/res/drawable/right_arrow_stats_stateful.xml
new file mode 100644
index 000000000..3ade4f429
--- /dev/null
+++ b/MyTracks/res/drawable/right_arrow_stats_stateful.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MyTracks/res/drawable/right_arrow_track.png b/MyTracks/res/drawable/right_arrow_track.png
new file mode 100644
index 000000000..5accdf690
Binary files /dev/null and b/MyTracks/res/drawable/right_arrow_track.png differ
diff --git a/MyTracks/res/drawable/right_arrow_track_press.png b/MyTracks/res/drawable/right_arrow_track_press.png
new file mode 100644
index 000000000..feba85b1c
Binary files /dev/null and b/MyTracks/res/drawable/right_arrow_track_press.png differ
diff --git a/MyTracks/res/drawable/right_arrow_track_stateful.xml b/MyTracks/res/drawable/right_arrow_track_stateful.xml
new file mode 100644
index 000000000..9e5c364fd
--- /dev/null
+++ b/MyTracks/res/drawable/right_arrow_track_stateful.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MyTracks/src/com/google/android/apps/mytracks/ChartActivity.java b/MyTracks/src/com/google/android/apps/mytracks/ChartActivity.java
index 6fc01a45d..ff43a2647 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/ChartActivity.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/ChartActivity.java
@@ -177,15 +177,15 @@ public class ChartActivity extends Activity implements
cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
ArrayList data = new ArrayList();
// Need two locations so we can keep track of the last location.
- Location[] locations = { new Location(""), new Location("")};
- int i = 0;
+ Location location = new Location("");
do {
lastSeenLocationId = cursor.getLong(idColumnIdx);
- providerUtils.fillLocation(cursor, locations[i]);
- if (MyTracksUtils.isValidLocation(locations[i])) {
- data.add(getDataPoint(locations[i], track));
+ providerUtils.fillLocation(cursor, location);
+ if (MyTracksUtils.isValidLocation(location)) {
+ double[] point = new double[3];
+ location = getDataPoint(location, track, point);
+ data.add(point);
}
- i = (i + 1) % 2;
} while (cursor.moveToPrevious());
cv.addDataPoints(data);
}
@@ -465,11 +465,14 @@ public class ChartActivity extends Activity implements
* data[1] = the elevation
* data[2] = the speed
*
- * @param location a location
- * @return the data point
+ * This must be called in order for each point.
+ *
+ * @param location the location to get data for (this method takes ownership of that location)
+ * @param track the track to get data from
+ * @param result the resulting point to fill out
+ * @return the previous location, now available for reuse
*/
- public double[] getDataPoint(Location location, Track track) {
- double[] result = new double[3];
+ private Location getDataPoint(Location location, Track track, double[] result) {
switch (mode) {
case BY_DISTANCE:
result[0] = profileLength;
@@ -516,8 +519,16 @@ public class ChartActivity extends Activity implements
// Format as hours per unit
result[2] = (60.0 / result[2]);
}
+
+ Location oldLastLocation = lastLocation;
lastLocation = location;
- return result;
+
+ if (oldLastLocation == null) {
+ // No previous location, but return a blank one for reuse
+ return new Location("");
+ }
+
+ return oldLastLocation;
}
/**
@@ -561,8 +572,7 @@ public class ChartActivity extends Activity implements
final ArrayList theData = new ArrayList();
int points = 0;
// Need two locations so we can keep track of the last location.
- Location[] locations = { new Location(""), new Location("")};
- int i = 0;
+ Location location = new Location("");
while (lastLocationRead < track.getStopId()) {
cursor = providerUtils.getLocationsCursor(
selectedTrackId, lastLocationRead, bufferSize, false);
@@ -574,16 +584,16 @@ public class ChartActivity extends Activity implements
cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
while (cursor.moveToNext()) {
points++;
- providerUtils.fillLocation(cursor, locations[i]);
- if (MyTracksUtils.isValidLocation(locations[i])) {
+ providerUtils.fillLocation(cursor, location);
+ if (MyTracksUtils.isValidLocation(location)) {
lastLocationRead = lastSeenLocationId =
cursor.getLong(idColumnIdx);
- double[] point = getDataPoint(locations[i], track);
+ double[] point = new double[3];
+ location = getDataPoint(location, track, point);
if (points % chartSamplingFrequency == 0) {
theData.add(point);
}
}
- i = (i + 1) % 2;
}
} else {
lastLocationRead += bufferSize;
diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java
index 19fcd9d16..6276bc7d8 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java
@@ -76,7 +76,6 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
-import java.util.Random;
import javax.xml.parsers.ParserConfigurationException;
@@ -213,40 +212,25 @@ public class MyTracks extends TabActivity implements OnTouchListener,
* Tabs/View navigation:
*/
- private static final int NUM_TABS = 3;
- private int currentTab = 0;
-
private NavControls navControls;
- private final int icons[] =
- { R.drawable.arrow_grey, R.drawable.menu_by_time,
- R.drawable.menu_elevation };
+ /** Icons shown on the left for each tab. */
+ private final int leftIcons[] =
+ { R.drawable.left_arrow_chart_stateful,
+ R.drawable.left_arrow_track_stateful,
+ R.drawable.left_arrow_stats_stateful };
+ /** Icons shown on the right for each tab. */
+ private final int rightIcons[] =
+ { R.drawable.right_arrow_stats_stateful,
+ R.drawable.right_arrow_chart_stateful,
+ R.drawable.right_arrow_track_stateful };
- private final Runnable nextActivity = new Runnable() {
+ private final Runnable changeTab = new Runnable() {
public void run() {
- currentTab = (currentTab + 1) % NUM_TABS;
- navControls.setLeftIcon(icons[(currentTab + NUM_TABS - 1) % NUM_TABS]);
- navControls.setRightIcon(icons[(currentTab + NUM_TABS + 1) % NUM_TABS]);
- getTabHost().setCurrentTab(currentTab);
- navControls.show();
+ getTabHost().setCurrentTab(navControls.getCurrentIcons());
}
};
- private final Runnable prevActivity = new Runnable() {
- public void run() {
- currentTab--;
- if (currentTab < 0) {
- currentTab = NUM_TABS - 1;
- }
- navControls.setLeftIcon(icons[(currentTab + NUM_TABS - 1) % NUM_TABS]);
- navControls.setRightIcon(icons[(currentTab + NUM_TABS + 1) % NUM_TABS]);
- getTabHost().setCurrentTab(currentTab);
- navControls.show();
- }
- };
-
- private final Random random = new Random();
-
public static MyTracks getInstance() {
return instance;
}
@@ -307,9 +291,7 @@ public class MyTracks extends TabActivity implements OnTouchListener,
LayoutParams params =
new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
layout.setLayoutParams(params);
- navControls = new NavControls(this, layout, prevActivity, nextActivity);
- navControls.setLeftIcon(icons[NUM_TABS - 1]);
- navControls.setRightIcon(icons[1]);
+ navControls = new NavControls(this, layout, leftIcons, rightIcons, changeTab);
navControls.show();
tabHost.addView(layout);
layout.setOnTouchListener(this);
@@ -368,8 +350,6 @@ public class MyTracks extends TabActivity implements OnTouchListener,
Log.d(MyTracksConstants.TAG, "MyTracks.onResume");
super.onResume();
tryBindTrackRecordingService();
- navControls.setLeftIcon(icons[(currentTab + NUM_TABS - 1) % NUM_TABS]);
- navControls.setRightIcon(icons[(currentTab + NUM_TABS + 1) % NUM_TABS]);
}
@Override
diff --git a/MyTracks/src/com/google/android/apps/mytracks/NavControls.java b/MyTracks/src/com/google/android/apps/mytracks/NavControls.java
index 9a5682d8c..0622efab7 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/NavControls.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/NavControls.java
@@ -15,13 +15,9 @@
*/
package com.google.android.apps.mytracks;
-import com.google.android.maps.mytracks.R;
-
-import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Handler;
-import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
@@ -30,7 +26,6 @@ import android.view.animation.Animation;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
-import android.widget.TextView;
/**
* Creates previous and next arrows for a given activity.
@@ -53,31 +48,22 @@ public class NavControls {
/**
* A touchable image view.
+ * When touched it changes the navigation control icons accordingly.
*/
- public class TouchLayout extends RelativeLayout {
- private final ImageView arrow;
+ private class TouchLayout extends RelativeLayout implements Runnable {
+ private final boolean isLeft;
private final ImageView icon;
- public TouchLayout(Activity activity, boolean isLeft) {
- super(activity);
- arrow = new ImageView(activity);
- arrow.setImageDrawable(activity.getResources().getDrawable(
- isLeft ? R.drawable.btn_arrow_left : R.drawable.btn_arrow_right));
- icon = new ImageView(activity);
+ public TouchLayout(Context context, boolean isLeft) {
+ super(context);
+ this.isLeft = isLeft;
+ this.icon = new ImageView(context);
icon.setVisibility(View.GONE);
- addView(arrow);
addView(icon);
- DisplayMetrics metrics = new DisplayMetrics();
- activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
- // TODO: This should be a smooth function not a step function.
- if (metrics.heightPixels > 600) {
- icon.setPadding((isLeft ? 25 : 15), 39, 15, 0);
- } else {
- icon.setPadding((isLeft ? 15 : 10), 27, 15, 0);
- }
}
- public void setIcon(Drawable drawable) {
+ public void setIcon(int iconId) {
+ Drawable drawable = getContext().getResources().getDrawable(iconId);
icon.setImageDrawable(drawable);
icon.setVisibility(View.VISIBLE);
}
@@ -87,18 +73,11 @@ public class NavControls {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
setPressed(true);
- hide();
- if (this == prevImage) {
- if (prevRunnable != null) {
- handler.post(prevRunnable);
- return true;
- }
- } else if (this == nextImage) {
- if (nextRunnable != null) {
- handler.post(nextRunnable);
- return true;
- }
- }
+ shiftIcons(isLeft);
+
+ // Call the user back
+ handler.post(this);
+
break;
case MotionEvent.ACTION_UP:
setPressed(false);
@@ -106,55 +85,69 @@ public class NavControls {
}
return super.onTouchEvent(event);
}
+
+ @Override
+ public void run() {
+ touchRunnable.run();
+ setPressed(false);
+ }
}
- private final Context context;
- private final Runnable prevRunnable;
- private final Runnable nextRunnable;
private final Handler handler = new Handler();
private final Runnable dismissControls = new Runnable() {
public void run() {
hide();
}
};
+
private final TouchLayout prevImage;
private final TouchLayout nextImage;
+ private final int[] leftIcons;
+ private final int[] rightIcons;
+ private final Runnable touchRunnable;
private boolean isVisible = false;
- private boolean hasNext = true;
- private boolean hasPrev = true;
+ private int currentIcons;
+
+ public NavControls(Context context, ViewGroup container,
+ int[] leftIcons, int[] rightIcons,
+ Runnable touchRunnable) {
+ this.leftIcons = leftIcons;
+ this.rightIcons = rightIcons;
+ this.touchRunnable = touchRunnable;
+
+ if (leftIcons.length != rightIcons.length || leftIcons.length < 1) {
+ throw new IllegalArgumentException("Invalid icons specified");
+ }
+ if (touchRunnable == null) {
+ throw new NullPointerException("Runnable cannot be null");
+ }
- public NavControls(Activity activity, ViewGroup container,
- Runnable prevRunnable, Runnable nextRunnable) {
- this.context = activity;
- this.prevRunnable = prevRunnable;
- this.nextRunnable = nextRunnable;
LayoutParams prevParams = new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
- prevParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
- prevParams.addRule(RelativeLayout.CENTER_VERTICAL);
- prevImage = new TouchLayout(activity, true);
- prevImage.setLayoutParams(prevParams);
- prevImage.setVisibility(View.INVISIBLE);
- container.addView(prevImage);
LayoutParams nextParams = new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
+
+ prevParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
nextParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
+ prevParams.addRule(RelativeLayout.CENTER_VERTICAL);
nextParams.addRule(RelativeLayout.CENTER_VERTICAL);
- nextImage = new TouchLayout(activity, false);
+
+ nextImage = new TouchLayout(context, false);
+ prevImage = new TouchLayout(context, true);
nextImage.setLayoutParams(nextParams);
+ prevImage.setLayoutParams(prevParams);
nextImage.setVisibility(View.INVISIBLE);
+ prevImage.setVisibility(View.INVISIBLE);
+
+ container.addView(prevImage);
container.addView(nextImage);
- }
- public void setHasNext(boolean hasNext) {
- this.hasNext = hasNext;
- }
-
- public void setHasPrev(boolean hasPrev) {
- this.hasPrev = hasPrev;
+ prevImage.setIcon(leftIcons[0]);
+ nextImage.setIcon(rightIcons[0]);
+ this.currentIcons = 0;
}
private void keepVisible() {
@@ -166,20 +159,18 @@ public class NavControls {
public void show() {
if (!isVisible) {
- if (prevRunnable != null && hasPrev) {
- SHOW_PREV_ANIMATION.setDuration(500);
- SHOW_PREV_ANIMATION.startNow();
- prevImage.setPressed(false);
- prevImage.setAnimation(SHOW_PREV_ANIMATION);
- prevImage.setVisibility(View.VISIBLE);
- }
- if (nextRunnable != null && hasNext) {
- SHOW_NEXT_ANIMATION.setDuration(500);
- SHOW_NEXT_ANIMATION.startNow();
- nextImage.setPressed(false);
- nextImage.setAnimation(SHOW_NEXT_ANIMATION);
- nextImage.setVisibility(View.VISIBLE);
- }
+ SHOW_PREV_ANIMATION.setDuration(500);
+ SHOW_PREV_ANIMATION.startNow();
+ prevImage.setPressed(false);
+ prevImage.setAnimation(SHOW_PREV_ANIMATION);
+ prevImage.setVisibility(View.VISIBLE);
+
+ SHOW_NEXT_ANIMATION.setDuration(500);
+ SHOW_NEXT_ANIMATION.startNow();
+ nextImage.setPressed(false);
+ nextImage.setAnimation(SHOW_NEXT_ANIMATION);
+ nextImage.setVisibility(View.VISIBLE);
+
isVisible = true;
keepVisible();
} else {
@@ -198,33 +189,25 @@ public class NavControls {
public void hide() {
isVisible = false;
- if (prevRunnable != null) {
- if (hasPrev) {
- prevImage.setAnimation(HIDE_PREV_ANIMATION);
- HIDE_PREV_ANIMATION.setDuration(500);
- HIDE_PREV_ANIMATION.startNow();
- } else {
- prevImage.clearAnimation();
- }
- prevImage.setVisibility(View.INVISIBLE);
- }
- if (nextRunnable != null) {
- if (hasNext) {
- nextImage.setAnimation(HIDE_NEXT_ANIMATION);
- HIDE_NEXT_ANIMATION.setDuration(500);
- HIDE_NEXT_ANIMATION.startNow();
- } else {
- nextImage.clearAnimation();
- }
- nextImage.setVisibility(View.INVISIBLE);
- }
+ prevImage.setAnimation(HIDE_PREV_ANIMATION);
+ HIDE_PREV_ANIMATION.setDuration(500);
+ HIDE_PREV_ANIMATION.startNow();
+ prevImage.setVisibility(View.INVISIBLE);
+
+ nextImage.setAnimation(HIDE_NEXT_ANIMATION);
+ HIDE_NEXT_ANIMATION.setDuration(500);
+ HIDE_NEXT_ANIMATION.startNow();
+ nextImage.setVisibility(View.INVISIBLE);
}
- public void setLeftIcon(int resourceId) {
- prevImage.setIcon(context.getResources().getDrawable(resourceId));
+ public int getCurrentIcons() {
+ return currentIcons;
}
- public void setRightIcon(int resourceId) {
- nextImage.setIcon(context.getResources().getDrawable(resourceId));
+ private void shiftIcons(boolean isLeft) {
+ // Increment or decrement by one, with wrap around
+ currentIcons = (currentIcons + leftIcons.length + (isLeft ? -1 : 1)) % leftIcons.length;
+ prevImage.setIcon(leftIcons[currentIcons]);
+ nextImage.setIcon(rightIcons[currentIcons]);
}
}
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 ff5b1e8e7..0065b0781 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtils.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtils.java
@@ -203,7 +203,9 @@ public interface MyTracksProviderUtils {
*
* @param track to load locations for
* @param buffer an array of locations to fill
+ * @deprecated use {@link #fillTrackPoints} instead
*/
+ @Deprecated
void getTrackPoints(Track track, TrackBuffer buffer);
/**
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 19b4ca9be..5b06ffc4c 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProviderUtilsImpl.java
@@ -175,6 +175,8 @@ public class MyTracksProviderUtilsImpl implements MyTracksProviderUtils {
@Override
public void fillLocation(Cursor cursor, Location location) {
+ location.reset();
+
int idxLatitude = cursor.getColumnIndexOrThrow(TrackPointsColumns.LATITUDE);
int idxLongitude =
cursor.getColumnIndexOrThrow(TrackPointsColumns.LONGITUDE);
@@ -865,7 +867,7 @@ public class MyTracksProviderUtilsImpl implements MyTracksProviderUtils {
cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
do {
if (reuseLocations) {
- fillLocation(cursor, buffer.location(cursor.getLong(idColumnIdx)));
+ fillLocation(cursor, buffer.add(cursor.getLong(idColumnIdx)));
} else {
Location location = createLocation(cursor);
if (location == null) {
@@ -874,7 +876,7 @@ public class MyTracksProviderUtilsImpl implements MyTracksProviderUtils {
buffer.add(location, cursor.getLong(idColumnIdx));
}
} while (cursor.moveToNext());
-
+
if (buffer.getLocationsLoaded() == 0) {
Log.w(MyTracksProvider.TAG, "No locations read.");
buffer.resetAt(startingPoint + buffer.getSize());
diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/TrackBuffer.java b/MyTracks/src/com/google/android/apps/mytracks/content/TrackBuffer.java
index f80b3c8f4..9cc5fdead 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/content/TrackBuffer.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/content/TrackBuffer.java
@@ -98,11 +98,11 @@ public class TrackBuffer {
/**
* Get a location from the end of the buffer.
* This may reuse Location objects already allocated to the buffer.
- * @param id The of the location to be added.
+ * @param locationId The of the location to be added.
* @return The location object associated with the give id.
*/
- public Location location(long id) {
- lastLocationRead = Math.max(lastLocationRead, id);
+ public Location add(long locationId) {
+ lastLocationRead = Math.max(lastLocationRead, locationId);
if (buffer[locationsLoaded] == null) {
buffer[locationsLoaded] = new Location("");
} else {