/**
AirCasting - Share your Air!
Copyright (C) 2011-2012 HabitatMap, Inc.
This program 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.
This program 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/>.
You can contact the authors by email at <info@habitatmap.org>
*/
package pl.llp.aircasting.activity;
import android.app.Application;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.ui.PlacePicker;
import com.google.android.gms.maps.model.LatLng;
import com.google.inject.Inject;
import pl.llp.aircasting.R;
import pl.llp.aircasting.model.SessionManager;
import roboguice.inject.InjectView;
public class StartFixedSessionActivity extends DialogActivity implements View.OnClickListener
{
@InjectView(R.id.start_indoor_session) Button startIndoorSessionButton;
@InjectView(R.id.start_outdoor_session) Button startOutdoorSessionButton;
@InjectView(R.id.cancel) Button cancelButton;
@InjectView(R.id.session_title) EditText sessionTitle;
@InjectView(R.id.session_tags) EditText sessionTags;
@InjectView(R.id.session_description) EditText sessionDescription;
@Inject Application context;
@Inject SessionManager sessionManager;
int PLACE_PICKER_REQUEST = 1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.start_fixed_session);
startIndoorSessionButton.setOnClickListener(this);
startOutdoorSessionButton.setOnClickListener(this);
cancelButton.setOnClickListener(this);
}
@Override
public void onClick(View view)
{
switch (view.getId()) {
case R.id.start_indoor_session: {
startFixedSession(true, null);
break;
}
case R.id.start_outdoor_session: {
runLocationPicker();
break;
}
case R.id.cancel: {
finish();
break;
}
}
}
private void runLocationPicker() {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
GooglePlayServicesUtil.getErrorDialog(e.getConnectionStatusCode(), this, 0);
} catch (GooglePlayServicesNotAvailableException e) {
Toast.makeText(context, R.string.google_play_services_not_available, Toast.LENGTH_LONG).show();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == RESULT_OK) {
Place place = PlacePicker.getPlace(data, this);
LatLng latlng = place.getLatLng();
startFixedSession(false, latlng);
}
}
}
private void startFixedSession(boolean isIndoor, LatLng latlng) {
String title = sessionTitle.getText().toString();
String tags = sessionTags.getText().toString();
String description = sessionDescription.getText().toString();
sessionManager.startFixedSession(title, tags, description, isIndoor, latlng);
finish();
}
}