From 01e2e2d4e5795e46037a99a2dfecd13f49616b15 Mon Sep 17 00:00:00 2001 From: Dmitry Kunin Date: Tue, 29 Oct 2013 14:12:37 +0300 Subject: [PATCH] [AND] Base code for UI track support. --- ...okmark_item.xml => list_item_bookmark.xml} | 31 +++--- android/res/layout/list_item_track.xml | 40 +++++++ .../maps/bookmarks/BookmarkListActivity.java | 17 ++- .../maps/bookmarks/BookmarkListAdapter.java | 102 +++++++++++++----- .../maps/bookmarks/data/BookmarkCategory.java | 21 +++- .../mapswithme/maps/bookmarks/data/Track.java | 13 +++ 6 files changed, 173 insertions(+), 51 deletions(-) rename android/res/layout/{bookmark_item.xml => list_item_bookmark.xml} (74%) create mode 100644 android/res/layout/list_item_track.xml create mode 100644 android/src/com/mapswithme/maps/bookmarks/data/Track.java 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; } + +}