package cz.destil.wearsquare.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.wearable.activity.ConfirmationActivity;
import com.squareup.otto.Subscribe;
import java.util.List;
import cz.destil.wearsquare.R;
import cz.destil.wearsquare.adapter.ExploreAdapter;
import cz.destil.wearsquare.core.App;
import cz.destil.wearsquare.event.ErrorEvent;
import cz.destil.wearsquare.event.ExitEvent;
import cz.destil.wearsquare.event.ExploreVenueListEvent;
import cz.destil.wearsquare.event.ImageLoadedEvent;
/**
* Displays a list of interesting venues around the user with images and tips. User can swipe to navigate to them,
* check-in there and open them on the phone.
*
* @author David Vávra (david@vavra.me)
*/
public class ExploreActivity extends GridPagerActivity {
private static final int ON_PHONE_ACTIVITY = 41;
private List<ExploreAdapter.Venue> mVenues;
private ExploreAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
finishOtherActivities();
super.onCreate(savedInstanceState);
}
@Override
public void startConnected() {
super.startConnected();
if (mVenues == null) {
teleport().sendMessage("/explore-list", null);
showProgress();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ON_PHONE_ACTIVITY) {
finish();
App.bus().post(new ExitEvent());
}
}
@Subscribe
public void onVenueList(ExploreVenueListEvent event) {
hideProgress();
mVenues = event.getVenues();
if (mVenues != null && mVenues.size() > 0) {
mAdapter = new ExploreAdapter(this, mVenues);
setAdapter(mAdapter);
} else {
showError(getString(R.string.no_venues_nearby));
}
}
@Subscribe
public void onError(ErrorEvent event) {
showError(event.getMessage());
}
@Subscribe
public void onExit(ExitEvent event) {
finish();
}
@Subscribe
public void onImageLoaded(ImageLoadedEvent event) {
if (mVenues != null) {
int row = 0;
for (ExploreAdapter.Venue venue : mVenues) {
if (venue.getImageUrl() != null && venue.getImageUrl().equals(event.getImageUrl())) {
venue.setPhoto(event.getBitmap());
break;
}
row++;
}
if (event.getBitmap() != null) {
mAdapter.notifyRowBackgroundChanged(row);
}
}
}
public void navigate(ExploreAdapter.Venue venue) {
teleport().sendMessage("/navigate/" + venue.getLatitude() + "/" + venue.getLongitude() + "/" + venue.getName(), null);
openOnPhoneAnimation();
}
public void checkIn(ExploreAdapter.Venue venue) {
CheckInActivity.call(this, venue.getId(), venue.getName());
}
public void openOnPhone(ExploreAdapter.Venue venue) {
teleport().sendMessage("/open/" + venue.getId(), null);
openOnPhoneAnimation();
}
private void openOnPhoneAnimation() {
Intent i = new Intent(this, ConfirmationActivity.class);
i.putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, ConfirmationActivity.OPEN_ON_PHONE_ANIMATION);
startActivityForResult(i, ON_PHONE_ACTIVITY);
}
}