package com.datonicgroup.narrate.app.ui.dialogs; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.FragmentActivity; import android.support.v4.content.LocalBroadcastManager; import android.view.View; import android.view.Window; import com.datonicgroup.narrate.app.R; import com.datonicgroup.narrate.app.ui.LocalContract; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapsInitializer; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.CameraPosition; import com.google.android.gms.maps.model.LatLng; /** * Created by timothymiko on 9/26/14. */ public class LocationPickerDialog extends FragmentActivity implements View.OnClickListener { private GoogleMap mMap; private Handler mHandler; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mHandler = new Handler(); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.location_picker_dialog); getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); try { MapsInitializer.initialize(this); } catch (Exception e) { e.printStackTrace(); } mMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map)).getMap(); mMap.setMyLocationEnabled(true); if ( getIntent().getParcelableExtra("location") != null ) { final CameraPosition newPosition = CameraPosition.fromLatLngZoom((LatLng) getIntent().getParcelableExtra("location"), 15); mHandler.postDelayed(new Runnable() { @Override public void run() { mMap.animateCamera(CameraUpdateFactory.newCameraPosition(newPosition)); } }, 500); } findViewById(R.id.save).setOnClickListener(this); findViewById(R.id.cancel).setOnClickListener(this); } @Override protected void onDestroy() { super.onDestroy(); mHandler.removeCallbacksAndMessages(null); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.save: Intent result = new Intent(LocalContract.ACTION); result.putExtra(LocalContract.COMMAND, LocalContract.UPDATE_ENTRY_LOCATION); result.putExtra("location", mMap.getCameraPosition().target); LocalBroadcastManager.getInstance(this).sendBroadcast(result); finish(); break; case R.id.cancel: setResult(Activity.RESULT_CANCELED); finish(); break; } } }