/* * #%L * Wheelmap - App * %% * Copyright (C) 2011 - 2012 Michal Harakal - Michael Kroez - Sozialhelden e.V. * %% * Wheelmap App based on the Wheelmap Service by Sozialhelden e.V. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS-IS" BASIS * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ package org.wheelmap.android.overlays; import org.mapsforge.android.maps.GeoPoint; import org.mapsforge.android.maps.overlay.ItemizedOverlay; import org.mapsforge.android.maps.overlay.OverlayItem; import org.wheelmap.android.app.WheelmapApp; import org.wheelmap.android.manager.SupportManager; import org.wheelmap.android.model.POIHelper; import org.wheelmap.android.model.WheelchairFilterState; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.DatabaseUtils; import android.graphics.drawable.Drawable; import android.os.Handler; import android.text.TextUtils; import android.widget.Toast; import de.akquinet.android.androlog.Log; @Deprecated public class POIsCursorMapsforgeOverlay extends ItemizedOverlay<OverlayItem> { private final static String TAG = POIsCursorMapsforgeOverlay.class .getSimpleName(); private final static String THREAD_NAME = "MapsforgeOverlay"; private Context mContext; private Cursor mCursor; private Handler mHandler; private OnTapListener mListener; public POIsCursorMapsforgeOverlay(Context context, OnTapListener listener) { super(null); mContext = context; mHandler = new Handler(); mListener = listener; } public synchronized void setCursor(Cursor cursor) { if (cursor == mCursor) { return; } mCursor = cursor; if (mCursor == null) { return; } populate(); } @Override public synchronized int size() { if (mCursor == null) { return 0; } return mCursor.getCount(); } @Override protected synchronized OverlayItem createItem(int i) { if (mCursor == null || mCursor.isClosed()) { return null; } int count = mCursor.getCount(); if (count == 0 || i >= count) { return null; } mCursor.moveToPosition(i); String name = POIHelper.getName(mCursor); SupportManager manager = WheelmapApp.getSupportManager(); WheelchairFilterState state = POIHelper.getWheelchair(mCursor); double lat = POIHelper.getLatitude(mCursor); double lng = POIHelper.getLongitude(mCursor); int nodeTypeId = POIHelper.getNodeTypeId(mCursor); Drawable marker = null; if (nodeTypeId != 0) { marker = manager.lookupNodeType(nodeTypeId).getStateDrawable(state); } OverlayItem item = new OverlayItem(); item.setTitle(name); item.setSnippet(name); item.setPoint(new GeoPoint(lat, lng)); item.setMarker(marker); return item; } @Override protected String getThreadName() { return THREAD_NAME; } @Override protected synchronized boolean onTap(int index) { if (mCursor == null) { return false; } int count = mCursor.getCount(); if (count == 0 || index >= count) { return false; } mCursor.moveToPosition(index); long poiId = POIHelper.getId(mCursor); Log.d(TAG, "onTap index = " + index + " id = " + poiId); ContentValues values = new ContentValues(); DatabaseUtils.cursorRowToContentValues(mCursor, values); if (mListener != null) { mListener.onTap(createItem(index), values); } return true; } @Override protected synchronized boolean onLongPress(int index) { if (mCursor == null) { return false; } int count = mCursor.getCount(); if (count == 0 || index >= count) { return false; } mCursor.moveToPosition(index); long poiId = POIHelper.getId(mCursor); String name = POIHelper.getName(mCursor); int nodeTypeId = POIHelper.getNodeTypeId(mCursor); String nodeTypeName = WheelmapApp.getSupportManager().lookupNodeType( nodeTypeId).localizedName; String address = POIHelper.getAddress(mCursor); StringBuilder builder = new StringBuilder(); if (!TextUtils.isEmpty(name)) { builder.append(name); } else { builder.append(nodeTypeName); } if (!TextUtils.isEmpty(address)) { builder.append(", "); builder.append(address); } final String outputText = builder.toString(); Log.d(TAG, Long.toString(poiId) + " " + outputText); mHandler.post(new Runnable() { @Override public void run() { Toast.makeText(mContext, outputText, Toast.LENGTH_SHORT).show(); } }); return true; } }