diff --git a/android/res/layout/bookmark_item.xml b/android/res/layout/list_item_bookmark.xml
similarity index 74%
rename from android/res/layout/bookmark_item.xml
rename to android/res/layout/list_item_bookmark.xml
index a58071fec6..d1d0d9a6a7 100644
--- a/android/res/layout/bookmark_item.xml
+++ b/android/res/layout/list_item_bookmark.xml
@@ -1,19 +1,10 @@
-
-
-
-
+
+
\ No newline at end of file
diff --git a/android/res/layout/list_item_track.xml b/android/res/layout/list_item_track.xml
new file mode 100644
index 0000000000..a58f61e4d0
--- /dev/null
+++ b/android/res/layout/list_item_track.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarkListActivity.java b/android/src/com/mapswithme/maps/bookmarks/BookmarkListActivity.java
index 1eff320ec1..7417e1e50b 100644
--- a/android/src/com/mapswithme/maps/bookmarks/BookmarkListActivity.java
+++ b/android/src/com/mapswithme/maps/bookmarks/BookmarkListActivity.java
@@ -60,10 +60,19 @@ public class BookmarkListActivity extends AbstractBookmarkListActivity
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id)
{
- final Intent i = new Intent(BookmarkListActivity.this, MWMActivity.class);
- i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- mManager.showBookmarkOnMap(setIndex, position);
- startActivity(i);
+ final int type = mPinAdapter.getItemViewType(position);
+ if (type == BookmarkListAdapter.TYPE_BMK)
+ {
+ final Intent i = new Intent(BookmarkListActivity.this, MWMActivity.class);
+ i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ mManager.showBookmarkOnMap(setIndex, position - 3); // TODO: this is not true
+ startActivity(i);
+ }
+ else
+ {
+ Utils.toastShortcut(BookmarkListActivity.this, mEditedSet.getTrack(position).getName() + position);
+ // TODO show map
+ }
}
});
registerForContextMenu(getListView());
diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarkListAdapter.java b/android/src/com/mapswithme/maps/bookmarks/BookmarkListAdapter.java
index fa70693c8e..bab419776d 100644
--- a/android/src/com/mapswithme/maps/bookmarks/BookmarkListAdapter.java
+++ b/android/src/com/mapswithme/maps/bookmarks/BookmarkListAdapter.java
@@ -1,6 +1,8 @@
package com.mapswithme.maps.bookmarks;
import android.app.Activity;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
import android.location.Location;
import android.view.LayoutInflater;
import android.view.View;
@@ -9,12 +11,13 @@ import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
-import com.mapswithme.maps.ArrowImage;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.Bookmark;
import com.mapswithme.maps.bookmarks.data.BookmarkCategory;
import com.mapswithme.maps.bookmarks.data.DistanceAndAzimut;
+import com.mapswithme.maps.bookmarks.data.Track;
import com.mapswithme.maps.location.LocationService;
+import com.mapswithme.util.UiUtils;
public class BookmarkListAdapter extends BaseAdapter implements LocationService.Listener
@@ -42,39 +45,37 @@ public class BookmarkListAdapter extends BaseAdapter implements LocationService.
mLocation.stopUpdate(this);
}
+ @Override
+ public int getViewTypeCount()
+ {
+ return 2; // bookmark + track
+ }
+ final static int TYPE_TRACK = 0;
+ final static int TYPE_BMK = 1;
+
+ @Override
+ public int getItemViewType(int position)
+ {
+ return position < mCategory.getTracksCount() ? TYPE_TRACK : TYPE_BMK;
+ }
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
+ final int type = getItemViewType(position);
if (convertView == null)
{
- convertView = LayoutInflater.from(mContext).inflate(R.layout.bookmark_item, null);
+ final int lId = type == TYPE_BMK ? R.layout.list_item_bookmark : R.layout.list_item_track;
+ convertView = LayoutInflater.from(mContext).inflate(lId, null);
convertView.setTag(new PinHolder(convertView));
}
-
- final Bookmark item = mCategory.getBookmark(position);
final PinHolder holder = (PinHolder) convertView.getTag();
- holder.name.setText(item.getName());
- holder.icon.setImageBitmap(item.getIcon().getIcon());
- final Location loc = mLocation.getLastKnown();
- if (loc != null)
- {
- final DistanceAndAzimut daa = item.getDistanceAndAzimut(loc.getLatitude(), loc.getLongitude(), mNorth);
- holder.distance.setText(daa.getDistance());
-
- if (daa.getAthimuth() >= 0.0)
- holder.arrow.setAzimut(daa.getAthimuth());
- else
- holder.arrow.clear();
- }
+ if (type == TYPE_BMK)
+ holder.set(mCategory.getBookmark(position));
else
- {
- holder.distance.setText("");
- holder.arrow.clear();
- }
+ holder.set(mCategory.getTrack(position));
- //Log.d("lat lot", item.getLat() + " " + item.getLon());
return convertView;
}
@@ -124,19 +125,70 @@ public class BookmarkListAdapter extends BaseAdapter implements LocationService.
{
}
- private static class PinHolder
+ private class PinHolder
{
- ArrowImage arrow;
ImageView icon;
TextView name;
TextView distance;
public PinHolder(View convertView)
{
- arrow = (ArrowImage) convertView.findViewById(R.id.pi_arrow);
icon = (ImageView) convertView.findViewById(R.id.pi_pin_color);
name = (TextView) convertView.findViewById(R.id.pi_name);
distance = (TextView) convertView.findViewById(R.id.pi_distance);
}
+
+ void setName(Bookmark bmk)
+ {
+ name.setText(bmk.getName());
+ }
+
+ void setName(Track trk)
+ {
+ name.setText(trk.getName());
+ }
+
+ void setDistance(Bookmark bmk)
+ {
+ final Location loc = mLocation.getLastKnown();
+ if (loc != null)
+ {
+ final DistanceAndAzimut daa = bmk.getDistanceAndAzimut(loc.getLatitude(), loc.getLongitude(), mNorth);
+ distance.setText(daa.getDistance());
+ }
+ else
+ distance.setText(null);
+ }
+
+ void setDistance(Track trk)
+ {
+ distance.setText(trk.getLengthString());
+ }
+
+ void setIcon(Bookmark bmk)
+ {
+ icon.setImageBitmap(bmk.getIcon().getIcon());
+ }
+
+ void setIcon(Track trk)
+ {
+ final Resources res = mContext.getResources();
+ final Drawable circle = UiUtils.drawCircle(trk.getColor(), (int) (res.getDimension(R.dimen.icon_size)), res);
+ icon.setImageDrawable(circle);
+ }
+
+ void set(Bookmark bmk)
+ {
+ setName(bmk);
+ setDistance(bmk);
+ setIcon(bmk);
+ }
+
+ void set(Track track)
+ {
+ setName(track);
+ setDistance(track);
+ setIcon(track);
+ }
}
}
diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkCategory.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkCategory.java
index ce8d6eb004..321235ad92 100644
--- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkCategory.java
+++ b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkCategory.java
@@ -5,9 +5,9 @@ import android.content.Context;
public class BookmarkCategory
{
- private int mId;
+ private final int mId;
private String mName;
- private Context mContext;
+ private final Context mContext;
BookmarkCategory(Context c, int id)
{
mContext = c;
@@ -49,12 +49,27 @@ public class BookmarkCategory
}
public int getSize()
+ {
+ return getBookmarksCount() + getTracksCount();
+ }
+
+ public int getBookmarksCount()
{
return getSize(mId);
}
+ public int getTracksCount()
+ {
+ return 3; //TODO add native
+ }
+
public Bookmark getBookmark(int b)
{
- return new Bookmark(mContext, mId, b);
+ return new Bookmark(mContext, mId, b - 3); //TODO remove - 3
+ }
+
+ public Track getTrack(int index)
+ {
+ return new Track(); // TODO: add native
}
}
diff --git a/android/src/com/mapswithme/maps/bookmarks/data/Track.java b/android/src/com/mapswithme/maps/bookmarks/data/Track.java
new file mode 100644
index 0000000000..f93717fc6e
--- /dev/null
+++ b/android/src/com/mapswithme/maps/bookmarks/data/Track.java
@@ -0,0 +1,13 @@
+package com.mapswithme.maps.bookmarks.data;
+
+import android.graphics.Color;
+
+public class Track
+{
+ private final int mNativeHandle = -1;
+
+ public String getName() { return "Name"; }
+ public String getLengthString() { return "Far Away: 99999999";}
+ public int getColor() { return Color.GREEN; }
+
+}