package com.foursquare.android.fakecheckin;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnCameraChangeListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.UiSettings;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class CheckIn extends FragmentActivity {
List<Venue> venueList = new ArrayList<Venue>();
private GoogleMap myMap;
private SharedPreferences.Editor prefsEditor;
public ProgressBar prog;
public View row;
public static Location staticLocation = new Location("");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.check_in);
Log.i("override", "onCreate");
final ListView lv = (ListView) findViewById(R.id.lvVenues);
prog = (ProgressBar) findViewById(R.id.progressBar);
prog.setVisibility(View.GONE);
// map settings
android.support.v4.app.FragmentManager myFragmentManager = getSupportFragmentManager();
SupportMapFragment mySupportMapFragment = (SupportMapFragment) myFragmentManager
.findFragmentById(R.id.map);
myMap = mySupportMapFragment.getMap();
myMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
// settting initial location for map and venues
SharedPreferences sharedPref = getSharedPreferences(
"fakeCheckInTokenFile", MODE_PRIVATE);
prefsEditor = sharedPref.edit();
if (savedInstanceState != null) {
Venue.ACCESS_TOKEN = sharedPref.getString("accessToken", "");
Log.i("override", "ACCESS_TOKEN=" + Venue.ACCESS_TOKEN);
}
String latitude = sharedPref.getString("latitude", "0");
String longitude = sharedPref.getString("longitude", "0");
final Location ll = new Location("");
if (!latitude.equals("0")) {
ll.setLatitude(Double.parseDouble(latitude));
ll.setLongitude(Double.parseDouble(longitude));
} else {
String locationProvider = LocationManager.NETWORK_PROVIDER;
LocationManager locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
ll.setLatitude(locationManager.getLastKnownLocation(
locationProvider).getLatitude());
ll.setLongitude(locationManager.getLastKnownLocation(
locationProvider).getLongitude());
}
// uygulaman�n multitask'ten devam etme durumu
parseVenues(ll);
adjustMap(ll); // sadece ilk seferinde haritay� eski yerine g�t�rmek
// i�in
myMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
// TODO Auto-generated method stub
myMap.clear();
myMap.addMarker(new MarkerOptions().position(position.target));
}
});
final Button btn = (Button) findViewById(R.id.btnRefresh);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ll.setLatitude(myMap.getCameraPosition().target.latitude);
ll.setLongitude(myMap.getCameraPosition().target.longitude);
parseVenues(ll);
prefsEditor.putString("latitude",
String.valueOf(ll.getLatitude()));
prefsEditor.putString("longitude",
String.valueOf(ll.getLongitude()));
prefsEditor.commit();
}
});
lv.setClickable(true);
final Activity act = this;
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
arg1.requestFocusFromTouch();
new MakeCheckIn().execute(venueList, position, arg1, act,
LoadVenues.CONST_LOADVENUES);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.check_in, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.action_search:
Intent in = new Intent(this,
com.foursquare.android.fakecheckin.Search.class);
staticLocation
.setLatitude(myMap.getCameraPosition().target.latitude);
staticLocation
.setLongitude(myMap.getCameraPosition().target.longitude);
startActivity(in);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void parseVenues(Location ll) {
ListView lv = (ListView) findViewById(R.id.lvVenues);
lv.setVisibility(View.GONE);
venueList = new ArrayList<Venue>();
try {
new LoadVenues().execute(ll, venueList, this,
LoadVenues.CONST_LOADVENUES);
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT)
.show();
Intent in = new Intent(this, MainActivity.class);
startActivity(in);
finish();
}
lv.setVisibility(View.VISIBLE);
return;
}
private LatLng adjustMap(Location lastKnownLocation) {
UiSettings ui = myMap.getUiSettings();
// ui.setAllGesturesEnabled(false);
// ui.setMyLocationButtonEnabled(false);
// ui.setZoomControlsEnabled(false);
myMap.setMyLocationEnabled(true);
double lat = lastKnownLocation.getLatitude();
double lng = lastKnownLocation.getLongitude();
LatLng ll = new LatLng(lat, lng);
myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ll, 16));
return ll;
}
@Override
protected void onRestart() {
Log.i("override", "onRestart");
super.onRestart();
}
@Override
protected void onStop() {
Log.i("override", "onStop");
// this.finish();
super.onStop();
}
@Override
protected void onDestroy() {
Log.i("override", "onDestroy");
super.onDestroy();
}
}