/* 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/>.
*/
package org.schtief.partybolle;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.List;
import org.schtief.partybolle.event.EventManager;
import org.schtief.partybolle.event.EventOverlay;
import org.schtief.partybolle.event.EventOverlayItem;
import org.schtief.partybolle.foursquare.AutoCheckinActivity;
import org.schtief.partybolle.foursquare.AutoCheckinService;
import org.schtief.partybolle.foursquare.FoursquareManager;
import org.schtief.partybolle.foursquare.FoursquareOverlay;
import org.schtief.partybolle.foursquare.FoursquareOverlayItem;
import org.schtief.partybolle.providers.VenueQuerySuggestionsProvider;
import org.schtief.partybolle.twitter.TweetDialog;
import org.schtief.partybolle.twitter.TwitterManager;
import org.schtief.partybolle.twitter.TwitterOverlay;
import org.schtief.partybolle.twitter.TwitterOverlayItem;
import org.schtief.partybolle.uffjaben.PartyBolleUffjaben;
import org.schtief.twitter.Twitter;
import org.schtief.twitter.Twitter.Status;
import org.schtief.util.json.JSONArray;
import org.schtief.util.json.JSONObject;
import android.app.AlertDialog;
import android.app.SearchManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Bitmap.CompressFormat;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.provider.SearchRecentSuggestions;
import android.provider.MediaStore.Images.Media;
import android.util.Log;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;
import com.github.droidfu.imageloader.ImageLoader;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import com.joelapenna.foursquare.types.Group;
import com.joelapenna.foursquare.types.Venue;
public class PartyBolle extends MapActivity implements LocationListener {
public static final String LOG_TAG = "PartyBolle";
public static float DISPLAY_SCALE = 1;
private Handler handler = new Handler();
EventManager eventManager = null;
public FoursquareManager foursquareManager = null;
public TwitterManager twitterManager = null;
public FavoriteManager favoriteManager = null;
private LocationManager locationManager = null;
private static final int MENU_MY_LOCATION = Menu.FIRST + 1;
// private static final int MENU_REFRESH = Menu.FIRST + 2;
// private static final int MENU_ADD_EVENT = Menu.FIRST + 3;
private static final int MENU_PREFERENCES = Menu.FIRST + 4;
private static final int MENU_SEARCH = Menu.FIRST + 5;
private static final int MENU_TWITTER_LIVE = Menu.FIRST + 6;
private static final int MENU_CHALLENGE = Menu.FIRST + 7;
private static final int MENU_TWITTER = Menu.FIRST + 8;
private static final int MENU_SCREENSHOT = Menu.FIRST + 9;
private static final int MENU_AUTOCHECKIN = Menu.FIRST + 10;
private static final int REQUEST_CODE_PREFERENCES = 1;
/** Called when the activity is first created. */
LinearLayout controlLayout;
public MapView mapView;
List<Overlay> mapOverlays;
EventOverlay eventOverlay;
FoursquareOverlay foursquareOverlay;
TwitterOverlay twitterOverlay;
InfoOverlay infoOverlay;
FavoriteOverlay favoriteOverlay;
ImageButton bolleImageButton;
ImageButton favoriteImageButton;
ImageButton eventImageButton;
ImageButton twitterImageButton;
ImageButton foursquareImageButton;
SharedPreferences preferences;
GeoPoint location;
private OverlayItem lastestOverlay = null;
public Location actualLocation;
public static PartyBolle instance;
private boolean showFavorites = false;
private CheckBox help1;
private CheckBox help2;
public void onCreate(Bundle savedInstanceState) {
Log.i(LOG_TAG, "onCreate savedInstanceState "+savedInstanceState);
if(null!=getIntent()){
Log.i(LOG_TAG, "got Intent "+getIntent().getAction()+ " " +getIntent().getStringExtra(SearchManager.QUERY));
}
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
//breite des screens hole fuer skalierung
WindowManager w = getWindowManager();
Display d = w.getDefaultDisplay();
DISPLAY_SCALE = (float)(d.getWidth()/320.0);
Log.i(LOG_TAG, "Resolution :"+d.getWidth()+" scale: "+DISPLAY_SCALE);
this.instance=this;
if(null==mapView){
Log.i(LOG_TAG, "get new MapView");
mapView = (MapView) findViewById(R.id.mapview);
}
preferences = PreferenceManager.getDefaultSharedPreferences(this);
bolleImageButton = (ImageButton) findViewById(R.id.BolleImageButton);
favoriteImageButton = (ImageButton) findViewById(R.id.FavoriteImageButton);
eventImageButton = (ImageButton) findViewById(R.id.EventImageButton);
twitterImageButton = (ImageButton) findViewById(R.id.TwitterImageButton);
foursquareImageButton = (ImageButton) findViewById(R.id.FoursquareImageButton);
// manuell mapcontrols
controlLayout = (LinearLayout) findViewById(R.id.controlLayout);
addControls(controlLayout);
mapView.setEnabled(true);
mapView.setClickable(true);
mapView.getController().setZoom(14);
//get latest position from preferences
int latestLat = preferences.getInt("my_location_lat",-1);
int latestLon = preferences.getInt("my_location_lon",-1);
if(latestLat!=-1 && latestLon!=-1 && null == location){
mapView.getController().setCenter(new GeoPoint(latestLat, latestLon));
Log.i(LOG_TAG,"set Latest Location from Preferences");
}else if(null!=savedInstanceState && savedInstanceState.getInt("lat")>0){
mapView.getController().setCenter(new GeoPoint(savedInstanceState.getInt("lat"), savedInstanceState.getInt("lon")));
Log.i(LOG_TAG,"set Latest Location savedInstanceState");
}else{
mapView.getController().setCenter(new GeoPoint(52496700, 13454400));
Log.i(LOG_TAG,"set Latest Location to schtieF");
}
mapOverlays = mapView.getOverlays();
foursquareOverlay= new FoursquareOverlay(this);
mapOverlays.add(foursquareOverlay);
twitterOverlay = new TwitterOverlay(this);
mapOverlays.add(twitterOverlay);
eventOverlay = new EventOverlay(this);
mapOverlays.add(eventOverlay);
favoriteOverlay = new FavoriteOverlay(this);
mapOverlays.add(favoriteOverlay);
infoOverlay = new InfoOverlay(this);
mapOverlays.add(infoOverlay);
//managers
if(null==eventManager)
eventManager = new EventManager(this,mapView,handler);
if(null==foursquareManager)
foursquareManager = new FoursquareManager(this,preferences,mapView,handler);
if(null==twitterManager)
twitterManager = new TwitterManager(this,preferences,mapView,handler);
if(null==favoriteManager)
favoriteManager = new FavoriteManager(this,preferences,favoriteOverlay,handler);
ImageLoader.initialize(this);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
setUpLocationManager();
help();
favoriteManager.loadFavorites();
addActionControls();
//update bug
if(null!=preferences.getString("twitter_name_verified",null)&&null==preferences.getString("twitter_avatar_verified",null)){
twitterManager.verifyLogin();
}
}
private void help() {
if(!preferences.getBoolean("license", false)){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("PartyBolle ist programmiert von Mister Schtief unter Verwendung von ihm angepasster Open Source. \n\n"
+ " Danke an Winterwell Associates 2008/2009 and ThinkTank Mathematics Ltd f�r den LGPL Twitter Code http://www.winterwell.com \n\n"
+ " Danke an Joe LaPenna f�r den Foursquare Apache License 2.0 Code http://code.google.com/p/foursquared \n\n"
+ " Danke an Matthias K�ppler f�r seine Droid-Fu Library unter Apache License 2.0 http://github.com/kaeppler/droid-fu\n\n"
+ " Und Danke an den Berliner Android Stammtisch sowie Rose fuer ihre Geduld :-)" )
.setTitle("Lizenz Infos")
.setCancelable(false)
.setPositiveButton("OpenSource is dufte", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("license", true);
editor.commit();
dialog.cancel();
}
}).setNegativeButton("n� keen Bock", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
PartyBolle.this.finish();
}
});
AlertDialog alert = builder.create();
alert.show();
}
if(!preferences.getBoolean("help1", false)){
help1 =((CheckBox) findViewById(R.id.HelpCheckBox01));
help1.setVisibility(View.VISIBLE);
help1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("help1", true);
editor.commit();
help1.setVisibility(View.GONE);
help1.invalidate();
}
});
}
if(!preferences.getBoolean("help2", false)){
help2 =((CheckBox) findViewById(R.id.HelpCheckBox02));
help2.setVisibility(View.VISIBLE);
help2.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("help2", true);
editor.commit();
help2.setVisibility(View.GONE);
help2.invalidate();
}
});
}
}
/************** ACTIVITY STATE *****************/
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
Log.i(LOG_TAG, "onRestoreInstanceState "+savedInstanceState );
super.onRestoreInstanceState(savedInstanceState);
}
protected void onSaveInstanceState(Bundle outState)
{
Log.i(LOG_TAG, "onSaveInstanceState "+outState);
super.onSaveInstanceState(outState);
}
protected void onDestroy()
{
Log.i(LOG_TAG, "onDestroy");
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("my_location_lat", mapView.getMapCenter().getLatitudeE6());
editor.putInt("my_location_lon", mapView.getMapCenter().getLongitudeE6());
editor.commit();
//jedes mal wenn was dazukommt
// favoriteManager.saveFavorites();
super.onDestroy();
}
public void onNewIntent(Intent intent)
{
Log.i(LOG_TAG, "onNewIntent "+intent);
String action = intent.getAction();
String query = intent.getStringExtra(SearchManager.QUERY);
if (intent == null) {
// if (DEBUG) Log.d(TAG, "No intent to search, querying default.");
// executeSearchTask(query);
} else if (Intent.ACTION_SEARCH.equals(action) && query != null) {
Log.i(LOG_TAG, "onNewIntent received search intent and saving.");
SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,
VenueQuerySuggestionsProvider.AUTHORITY, VenueQuerySuggestionsProvider.MODE);
suggestions.saveRecentQuery(query, null);
executeSearchTask(query);
} else {
// onSearchRequested();
}
}
private void executeSearchTask(String query)
{
this.foursquareManager.searchVenues(query);
}
protected void onPause()
{
Log.i(LOG_TAG, "onPause");
super.onPause();
}
protected void onResume()
{
Log.i(LOG_TAG, "onResume");
super.onResume();
}
public void finish()
{
Log.i(LOG_TAG, "finish");
super.finish();
}
public void onLowMemory()
{
Log.i(LOG_TAG, "onLowMemory");
super.onLowMemory();
}
protected void onPostResume()
{
Log.i(LOG_TAG, "onPostResume");
super.onPostResume();
}
protected void onRestart()
{
Log.i(LOG_TAG, "onRestart");
super.onRestart();
}
//
// public Object on
// {
// Log.i(LOG_TAG, "onRetainNonConfigurationInstance");
// super.onRetainNonConfigurationInstance();
// }
protected void onStart()
{
Log.i(LOG_TAG, "onStart");
super.onStart();
}
public void onConfigurationChanged(Configuration newConfig)
{
Log.i(LOG_TAG, "onConfigurationChanged");
super.onConfigurationChanged(newConfig);
}
/************** ACTIVITY STATE *****************/
private void setUpLocationManager() {
final long MINIMUM_DISTANCECHANGE_FOR_UPDATE = 100; // in Meters
final long MINIMUM_TIME_BETWEEN_UPDATE = 60; // in Milliseconds???
// Get the first provider available
// List<String> providers = this.locationManager.getAllProviders();
// String strProvider = providers.get(0);//TODO warum den 1ten
this.locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
MINIMUM_TIME_BETWEEN_UPDATE, MINIMUM_DISTANCECHANGE_FOR_UPDATE,
this);
}
private void addActionControls() {
//Bolles uffjaben
bolleImageButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
if(null==preferences.getString("twitter_name_verified", null)) {
AlertDialog.Builder builder = new AlertDialog.Builder(PartyBolle.this);
builder.setMessage("Alder wennde meene Uffjaben loesen willst, musste Twitter konfijurieren ick verwende dein Twittername um dich zu identifizieren!")
.setCancelable(false)
.setPositiveButton("Ja mach ick", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}else{
//aktuelle Position speichern
if(null!=actualLocation){
SharedPreferences.Editor editor = preferences.edit();
editor.putFloat("last_location_lat", (float)actualLocation.getLatitude());
editor.putFloat("last_location_lon", (float)actualLocation.getLongitude());
editor.commit();
}
Intent intent = new Intent(PartyBolle.this,PartyBolleUffjaben.class);
PartyBolle.this.startActivity(intent);
}
}
});
showFavorites = preferences.getBoolean("favorites", false);
updateFavoriteState();
//favoriten
favoriteImageButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
showFavorites = !showFavorites;
updateFavoriteState();
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("favorites", showFavorites);
editor.commit();
}
});
//Events
eventImageButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
eventImageButton.setEnabled(false);
findViewById(R.id.EventProgressBar).setVisibility(View.VISIBLE);
eventManager.getEvents(null);
}
});
eventImageButton.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View arg0) {
lastestOverlay=null;
eventOverlay.cleanup();
infoOverlay.showInfo(null);
mapView.invalidate();
return true;
}
});
//Twitter
twitterImageButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
twitterImageButton.setEnabled(false);
findViewById(R.id.TwitterProgressBar).setVisibility(View.VISIBLE);
twitterManager.getTweets();
}
});
twitterImageButton.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View arg0) {
lastestOverlay=null;
twitterOverlay.cleanup();
infoOverlay.showInfo(null);
mapView.invalidate();
return true;
}
});
//Foursquare
foursquareImageButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
foursquareImageButton.setEnabled(false);
findViewById(R.id.FoursquareProgressBar).setVisibility(View.VISIBLE);
foursquareManager.getVenues();
}
});
foursquareImageButton.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View arg0) {
lastestOverlay=null;
foursquareOverlay.cleanup();
infoOverlay.showInfo(null);
mapView.invalidate();
return true;
}
});
}
protected void updateFavoriteState() {
if(showFavorites){
favoriteImageButton.setImageResource(android.R.drawable.btn_star_big_on);
favoriteOverlay.showFavorites(true);
//force map redraw
mapView.invalidate();
}else{
favoriteImageButton.setImageResource(android.R.drawable.btn_star_big_off);
favoriteOverlay.showFavorites(false);
infoOverlay.showInfo(null);
lastestOverlay=null;
//force map redraw
mapView.invalidate();
}
}
private void addControls(LinearLayout controlLayout2) {
// listcontrol
ImageView list = (ImageView) findViewById(R.id.listImageView);
list.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
showList();
}
});
// prev/next controls
ImageView prev = (ImageView) findViewById(R.id.prevImageView);
prev.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Log.i("PartyUmkreis", "prev");
prev();
}
});
ImageView next = (ImageView) findViewById(R.id.nextImageView);
next.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Log.i("PartyUmkreis", "next");
next();
}
});
// own zoomcontrols
ImageView zoomIn = (ImageView) findViewById(R.id.zoomInImageView);
zoomIn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
mapView.getController().zoomIn();
Log.d(LOG_TAG, "zoom in "+mapView.getZoomLevel());
}
});
ImageView zoomOut = (ImageView) findViewById(R.id.zoomOutImageView);
zoomOut.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
mapView.getController().zoomOut();
Log.d(LOG_TAG, "zoom out "+mapView.getZoomLevel());
}
});
}
private void showList() {
// TODO Listenfunktion implementieren
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Alder Listenansicht jibs erst in der beta Version!")
.setCancelable(false)
.setPositiveButton("Ick freu ma", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
private void prev() {
if(null==lastestOverlay)
return ;//TODO das raussuchen was auf der Karte ist
if(lastestOverlay instanceof EventOverlayItem)
eventOverlay.prev();
else if(lastestOverlay instanceof FoursquareOverlayItem)
foursquareOverlay.prev();
else
twitterOverlay.prev();
}
private void next() {
if(null==lastestOverlay)
return ;//TODO das raussuchen was auf der Karte ist
//decide which overlay anhan welcher zuletzt gewaehlt wurde
if(lastestOverlay instanceof EventOverlayItem)
eventOverlay.next();
else if(lastestOverlay instanceof FoursquareOverlayItem)
foursquareOverlay.next();
else
twitterOverlay.next();
}
protected boolean isRouteDisplayed() {
return false;
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, MENU_MY_LOCATION, 0, "Heeme").setIcon(android.R.drawable.ic_menu_mylocation);
// menu.add(0, MENU_ADD_EVENT, 0, "neue Sause").setIcon(android.R.drawable.ic_menu_add);
menu.add(0, MENU_PREFERENCES, 0, "Einstellungen").setIcon(android.R.drawable.ic_menu_preferences);
menu.add(0, MENU_SEARCH, 0, "4Sq. Suche").setIcon(R.drawable.foursquare_32);
// menu.add(0, MENU_TWITTER_LIVE, 0, "Twitter Leif").setIcon(android.R.drawable.ic_media_play );
menu.add(0, MENU_CHALLENGE, 0, "Bolles Uffjaben").setIcon(android.R.drawable.ic_menu_info_details);
menu.add(0, MENU_TWITTER, 0, "Twittern").setIcon(R.drawable.twitter_32);
// if(null==AutoCheckinService.getInstance())
menu.add(0, MENU_AUTOCHECKIN, 0, "AutoCheckin Service").setIcon(R.drawable.foursquare_32);
menu.add(0, MENU_SCREENSHOT, 0, "Screenshot").setIcon(android.R.drawable.ic_menu_camera);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_MY_LOCATION: {
updateLocation();
return true;
}
// case MENU_ADD_EVENT: {
// Toast.makeText(this, "Get Konzert", Toast.LENGTH_SHORT).show();
// Log.i("PartyUmkreis", "Get Konzert");
//
// return true;
// }
case MENU_PREFERENCES: {
Intent i = new Intent(this, Preferences.class);
startActivityForResult(i, REQUEST_CODE_PREFERENCES); //see onActivityResult
return true;
}
case MENU_SEARCH: {
onSearchRequested();
return true;
}
case MENU_TWITTER_LIVE: {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Alder die Twitter Leifwju aktivier ich in der beta!")
.setCancelable(false)
.setPositiveButton("Ick freu ma", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
return true;
}
case MENU_SCREENSHOT:{
Bitmap image = Bitmap.createBitmap(mapView.getWidth(), mapView.getHeight(), Bitmap.Config.RGB_565);
mapView.draw(new Canvas(image));
try {
File file= new File(Environment.getExternalStorageDirectory() + File.separator + "PartyBolle.png");
image.compress(CompressFormat.PNG, 100, new FileOutputStream(file));
String url = Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
// shareIntent.putExtra(Intent.EXTRA_TEXT, body);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(url));
shareIntent.setType("image/jpeg");
startActivity(shareIntent);
} catch (FileNotFoundException e) {
Log.e(PartyBolle.LOG_TAG," Screenshot schreiben failed ",e);
}
return true;
}
case MENU_CHALLENGE: {
//check twitter
if(null==preferences.getString("twitter_name_verified", null)) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Alder wennde meene Uffjaben loesen willst, musste Twitter konfijurieren ick verwende dein Twittername um dich zu identifizieren!")
.setCancelable(false)
.setPositiveButton("Ja mach ick", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}else{
Intent intent = new Intent(PartyBolle.this,PartyBolleUffjaben.class);
PartyBolle.this.startActivity(intent);
}
return true;
}
case MENU_TWITTER: {
//check twitter
if(null==preferences.getString("twitter_name_verified", null)) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Alder wennde meene Uffjaben loesen willst, musste Twitter konfijurieren ick verwende dein Twittername um dich zu identifizieren!")
.setCancelable(false)
.setPositiveButton("Ja mach ick", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}else{
new TweetDialog(this).show();
}
return true;
}
case MENU_AUTOCHECKIN: {
Intent intent = new Intent(this, AutoCheckinActivity.class);
PartyBolle.this.startActivity(intent);
return true;
}
}
return super.onOptionsItemSelected(item);
}
private void updateLocation() {
if(null==location)
return;
mapView.getController().animateTo(location);
// //save in preferences
// SharedPreferences.Editor editor = preferences.edit();
// editor.putInt("my_location_lat", location.getLatitudeE6());
// editor.putInt("my_location_lon", location.getLongitudeE6());
// Don't forget to commit your edits!!!
// editor.commit();
Toast.makeText(this, "Updated Location", Toast.LENGTH_SHORT);
}
public MapView getMapView() {
return this.mapView;
}
public void showEvent(EventOverlayItem eventOverlayItem) {
lastestOverlay = eventOverlayItem;
// show mor informations
infoOverlay.showInfo(eventOverlayItem.getInfo(infoOverlay));
// move to location
mapView.getController().animateTo(eventOverlayItem.getPoint());
}
public void showVenue(FoursquareOverlayItem item) {
lastestOverlay=item;
infoOverlay.showInfo(item.getInfo(infoOverlay));
// move to location
mapView.getController().animateTo(item.getPoint());
}
public void showFavorite(PartyBolleOverlayItem item) {
lastestOverlay=item;
infoOverlay.showInfo(item.getInfo(infoOverlay));
// move to location
mapView.getController().animateTo(item.getPoint());
}
public void showTweet(TwitterOverlayItem item) {
lastestOverlay = item;
// Status status = item.getStatus();
// textview1.setText(status.getUser().getScreenName());
// textview2.setText(status.getText());
// uri = null;
infoOverlay.showInfo(item.getInfo(infoOverlay));
// move to location
mapView.getController().animateTo(item.getPoint());
}
public void update(JSONArray locations) {
try{
for (int i = 0; i < locations.length(); i++) {
JSONObject location = locations.getJSONObject(i);
eventOverlay.addEvent(location);
}
//force map redraw
mapView.invalidate();
Toast.makeText(this, "refreshed locations #" + locations.length(),
Toast.LENGTH_SHORT).show();
}catch(Exception e){
Toast.makeText(this, "error refreshing locations " ,
Toast.LENGTH_SHORT).show();
Log.e(LOG_TAG, "error refreshing locations",e);
}
//hide progressbar
findViewById(R.id.EventProgressBar).setVisibility(View.GONE);
eventImageButton.setEnabled(true);
}
public void update(Group<Group<Venue>> venues, boolean zoom) {
//alle alten venues loeschen
if(null!=venues){
foursquareOverlay.cleanup();
int count=0;
double minX=999, minY=999, maxX=-999, maxY=-999;
for (Group<Venue> group : venues) {
for (Venue venue : group) {
foursquareOverlay.addVenue(venue);
if(zoom){
double x= Double.parseDouble(venue.getGeolong());
double y= Double.parseDouble(venue.getGeolat());
if(x<minX)
minX=x;
if(x>maxX)
maxX=x;
if(y<minY)
minY=y;
if(y>maxY)
maxY=y;
count++;
}
}
}
if(zoom){
int lon = (int)Math.round((minX+(maxX-minX)/2.0)*1000000);
int lat = (int)Math.round((minY+(maxY-minY)/2.0)*1000000);
mapView.getController().setCenter(new GeoPoint(lat, lon));
if(count>1){
//TODO etwas weiter rauszoomen
int spanLon = (int)Math.round(((maxX-minX)/2.0)*1000000);
int spanLat = (int)Math.round(((maxY-minY)/2.0)*1000000);
mapView.getController().zoomToSpan(spanLat, spanLon);
}
}
}
//hide progressbar
findViewById(R.id.FoursquareProgressBar).setVisibility(View.GONE);
foursquareImageButton.setEnabled(true);
//force map redraw
mapView.invalidate();
}
public void update(List<Twitter.Status> tweets) {
for (Status tweet : tweets) {
twitterOverlay.addTweet(tweet);
}
//hide progressbar
findViewById(R.id.TwitterProgressBar).setVisibility(View.GONE);
twitterImageButton.setEnabled(true);
//force map redraw
mapView.invalidate();
}
public void onLocationChanged(Location loc) {
this.actualLocation=loc;
if(null==this.location){
this.location= new GeoPoint((int)Math.round(loc.getLatitude()*1000000),
(int)Math.round(loc.getLongitude()*1000000));
updateLocation();
}
else
this.location= new GeoPoint((int)Math.round(loc.getLatitude()*1000000),
(int)Math.round(loc.getLongitude()*1000000));
Log.i("PartyBolle","got Location fix "+loc.getLatitude()+" "+loc.getLongitude()+" accurracy : "+loc.getAccuracy());
}
public void onProviderDisabled(java.lang.String arg0) {
// TODO warnung
}
public void onProviderEnabled(java.lang.String arg0) {
setUpLocationManager();
}
public void onStatusChanged(java.lang.String arg0, int arg1, Bundle arg2) {
// TODO wat is dat hier?
}
public void preferenceChanged()
{
twitterManager.verifyLogin();
}
}