/** * Copyright (C) 2013 Romain Guefveneu. * * This file is part of naonedbus. * * Naonedbus is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Naonedbus is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package net.naonedbus.activity.map.layerloader.impl; import java.io.IOException; import java.util.List; import net.naonedbus.R; import net.naonedbus.activity.impl.BiclooDetailActivity; import net.naonedbus.activity.map.layerloader.EquipementSelectedInfo; import net.naonedbus.activity.map.layerloader.ItemSelectedInfo; import net.naonedbus.activity.map.layerloader.MapLayer; import net.naonedbus.activity.map.overlay.BasicItemizedOverlay; import net.naonedbus.activity.map.overlay.BiclooItemizedOverlay; import net.naonedbus.activity.map.overlay.TypeOverlayItem; import net.naonedbus.activity.map.overlay.item.BasicOverlayItem; import net.naonedbus.bean.Bicloo; import net.naonedbus.bean.Equipement; import net.naonedbus.intent.ParamIntent; import net.naonedbus.manager.impl.BiclooManager; import net.naonedbus.manager.impl.EquipementManager; import net.naonedbus.utils.GeoPointUtils; import org.json.JSONException; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationManager; import android.util.SparseArray; import android.view.View; import android.view.ViewGroup; import com.bugsense.trace.BugSenseHandler; import com.google.android.maps.GeoPoint; public class BiclooMapLayer implements MapLayer { private final BiclooManager mBiclooManager; private final SparseArray<Bicloo> mBicloos = new SparseArray<Bicloo>(); public BiclooMapLayer() { mBiclooManager = BiclooManager.getInstance(); } @Override public ItemSelectedInfo getItemInfo(final Context context, final BasicOverlayItem item) { return new EquipementSelectedInfo() { @Override public String getTitle() { return item.getTitle(); } @Override public List<View> getSubview(final ViewGroup root) { return null; } @Override public Integer getResourceDrawable() { return R.drawable.map_layer_bicloo; } @Override public Integer getResourceColor() { return R.color.map_pin_bicloo; } @Override public Integer getResourceAction() { return null; } @Override public String getDescription(final Context context) { final Bicloo bicloo = mBicloos.get(item.getId()); final int availableBikes = bicloo.getAvailableBike(); final int availableStands = bicloo.getAvailableBikeStands(); final String bikes = context.getResources().getQuantityString(R.plurals.bicloo_velos_disponibles, availableBikes, availableBikes); final String stands = context.getResources().getQuantityString(R.plurals.bicloo_places_disponibles, availableStands, availableStands); final String description = context.getResources().getQuantityString(R.plurals.bicloo, availableBikes + availableStands, bikes, stands); return description; } @Override public Intent getIntent(final Context context) { final Bicloo bicloo = mBicloos.get(item.getId()); final ParamIntent intent = new ParamIntent(context, BiclooDetailActivity.class); intent.putExtra(BiclooDetailActivity.PARAM_BICLOO, bicloo); return intent; } @Override public GeoPoint getGeoPoint() { return item.getPoint(); } }; } @Override public BasicItemizedOverlay getOverlay(final Context context, final Location location) { List<Bicloo> bicloos = null; try { bicloos = mBiclooManager.getAll(context); } catch (final IOException e) { BugSenseHandler.sendException(e); } catch (final JSONException e) { BugSenseHandler.sendException(e); } final BasicItemizedOverlay newItemizedOverlay = new BiclooItemizedOverlay(context.getResources()); BasicOverlayItem overlayItem; if (bicloos != null) { for (final Bicloo bicloo : bicloos) { overlayItem = new BasicOverlayItem(GeoPointUtils.getGeoPoint(bicloo.getLocation()), bicloo.getName(), TypeOverlayItem.TYPE_BICLOO); overlayItem.setId(bicloo.getId()); newItemizedOverlay.addOverlay(overlayItem); mBicloos.put(bicloo.getId(), bicloo); } } return newItemizedOverlay; } @Override public BasicItemizedOverlay getOverlay(final Context context, final int defaultItemId) { final BasicItemizedOverlay newItemizedOverlay; final EquipementManager equipementManager = EquipementManager.getInstance(); final Equipement item = equipementManager.getSingle(context.getContentResolver(), Equipement.Type.TYPE_BICLOO, defaultItemId); if (item != null) { final Location location = new Location(LocationManager.GPS_PROVIDER); location.setLatitude(item.getLatitude()); location.setLongitude(item.getLongitude()); newItemizedOverlay = getOverlay(context, location); } else { newItemizedOverlay = new BiclooItemizedOverlay(context.getResources()); } return newItemizedOverlay; } @Override public boolean isMoveable() { return false; } }