package org.schtief.partybolle.event;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import org.schtief.partybolle.PartyBolle;
import org.schtief.partybolle.R;
import org.schtief.util.json.JSONException;
import org.schtief.util.json.JSONObject;
import android.graphics.drawable.Drawable;
import android.util.Log;
import com.google.android.maps.ItemizedOverlay;
/**
Copyright by Stefan Lischke a.k.a Mister Schtief
started in 2010 in Berlin Germany
This file is part of PartyBolle.
PartyBolle 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.
PartyBolle 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 PartyBolle. If not, see <http://www.gnu.org/licenses/>.
*/
public class EventOverlay extends ItemizedOverlay<EventOverlayItem>
{
public static Drawable drawableParty,drawableConcert,drawableTheater,drawableBar;
private Set<String> ids = new HashSet<String>();
private ArrayList<EventOverlayItem> mOverlays = new ArrayList<EventOverlayItem>();
private PartyBolle app;
public EventOverlay(PartyBolle ap)
{
super(boundCenterBottom(ap.getResources().getDrawable(R.drawable.icon_barweiss35_40)));
this.app = ap;
drawableParty = boundCenterBottom(app.getResources().getDrawable(R.drawable.icon_partieweiss35_40));
drawableConcert= boundCenterBottom(app.getResources().getDrawable(R.drawable.icon_konzertweiss35_40));
drawableTheater= boundCenterBottom(app.getResources().getDrawable(R.drawable.icon_theaterweiss35_40));
populate();
}
public Drawable bound(Drawable d)
{
return boundCenterBottom(d);
}
@Override
public int size()
{
return mOverlays.size();
}
public void addEvent(JSONObject location) throws JSONException {
//check if already there
if(ids.contains(location.getString("l")))
return;
mOverlays.add(new EventOverlayItem(app,location));
setLastFocusedIndex(-1);
populate();
}
@Override
protected EventOverlayItem createItem(int i) {
if(i>=mOverlays.size())
return null;
return mOverlays.get(i);
}
public void cleanup(){
mOverlays.clear();
app.getMapView().removeAllViews();
setLastFocusedIndex(-1);
populate();
}
@Override
protected boolean onTap(int index)
{
if(index>=mOverlays.size())
return false;
EventOverlayItem item = mOverlays.get(index);
if(null==item)
return false;
Log.i("EventOverlay", "tapped on "+item.getTitle());
setFocus(item);
return true;
}
@Override
public void setFocus(EventOverlayItem item) {
super.setFocus(item);
Log.i("EventOverlay", "setFocus on "+item.getTitle());
app.showEvent(item);
}
public void prev() {
if(mOverlays.size()==0)
return;
EventOverlayItem prev = nextFocus(false);
if(null==prev){
//try last
prev=mOverlays.get(mOverlays.size()-1);
if(null==prev)
return;
}
Log.i("EventOverlay", "prev "+prev.getTitle());
setFocus(prev);
}
public void next() {
if(mOverlays.size()==0)
return;
EventOverlayItem next = nextFocus(true);
if(null==next){
//try first
next=mOverlays.get(0);
if(null==next)
return;
}
Log.i("EventOverlay", "next "+next.getTitle());
setFocus(next);
}
/* public void removeEvents(String type) {
Log.i("EventOverlay", "remove "+type);
for (Iterator<EventOverlayItem> iterator = mOverlays.iterator(); iterator.hasNext();) {
EventOverlayItem eventOverlay = iterator.next();
try {
Log.i("EventOverlay", "try remove "+eventOverlay.getEvent().getString("typ"));
if(eventOverlay.getEvent().getString("typ").contains(type))
{
Log.i("EventOverlay", "removed "+eventOverlay.getEvent().getString("title"));
ids.remove(eventOverlay.getEvent().getString("link"));
iterator.remove();
}
} catch (JSONException e) {
Log.e("EventOverlay", "could not remove ",e);
}
}
setLastFocusedIndex(-1);
populate();
}
*/
}