package com.mobmonkey.mobmonkeyandroid;
import java.util.Stack;
import org.json.JSONArray;
import org.json.JSONObject;
import com.mobmonkey.mobmonkeyandroid.R;
import com.mobmonkey.mobmonkeyandroid.fragments.*;
import com.mobmonkey.mobmonkeyandroid.listeners.*;
import com.mobmonkey.mobmonkeyandroid.utils.MMFragment;
import com.mobmonkey.mobmonkeysdk.utils.MMSDKConstants;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
/**
* @author Dezapp, LLC
*
*/
public class FavoritesActivity extends FragmentActivity implements MMOnMapIconFragmentClickListener,
MMOnSearchResultsFragmentItemClickListener,
MMOnAddressFragmentItemClickListener,
MMOnNearbyLocationsItemClickListener,
MMOnCreateHotSpotFragmentClickListener,
MMOnAddNotificationsFragmentItemClickListener {
private static final String TAG = "FavoritesActivity: ";
FragmentManager fragmentManager;
Stack<MMFragment> fragmentStack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment_container);
fragmentManager = getSupportFragmentManager();
fragmentStack = new Stack<MMFragment>();
if(findViewById(R.id.llfragmentcontainer) != null) {
if(savedInstanceState != null) {
return;
}
FavoritesFragment favoritesFragment = new FavoritesFragment();
fragmentManager.beginTransaction().add(R.id.llfragmentcontainer,
fragmentStack.push(favoritesFragment)).commit();
}
}
/*
* (non-Javadoc)
* @see com.mobmonkey.mobmonkey.fragments.FavoritesFragment.OnMapIconClickListener#onMapIconClicked(java.lang.String)
*/
@Override
public void onMapIconFragmentClick(int which) {
if(which == MMSDKConstants.FAVORITES_FRAGMENT_MAP) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
// fragmentTransaction.replace(R.id.llfragmentcontainer,fragmentStack.push(new FavoritesMapFragment()));
fragmentTransaction.commit();
} else if(which == MMSDKConstants.FAVORITES_FRAGMENT_LIST) {
fragmentManager.beginTransaction().remove(fragmentStack.pop());
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.llfragmentcontainer, fragmentStack.peek());
fragmentTransaction.commit();
}
}
/*
* (non-Javadoc)
* @see com.mobmonkey.mobmonkey.fragments.FavoritesFragment.OnMMLocationSelectedListener#onLocationSelected(java.lang.Object)
*/
@Override
public void onSearchResultsFragmentItemClick(String locationInfo) {
LocationDetailsFragment locationDetailsFragment = new LocationDetailsFragment();
Bundle data = new Bundle();
data.putString(MMSDKConstants.KEY_INTENT_EXTRA_LOCATION_DETAILS, locationInfo);
locationDetailsFragment.setArguments(data);
performTransaction(locationDetailsFragment);
}
/*
* (non-Javadoc)
* @see com.mobmonkey.mobmonkeyandroid.listeners.MMOnLocationDetailsFragmentItemClickListener#onLocationDetailsFragmentItemClick(int, java.lang.Object)
*/
@Override
public void onAddressFragmentItemClick(JSONObject jObj) {
LocationDetailsMapFragment locationsDetailsMapFragment = new LocationDetailsMapFragment();
Bundle data = new Bundle();
data.putString(MMSDKConstants.KEY_INTENT_EXTRA_LOCATION_DETAILS, jObj.toString());
locationsDetailsMapFragment.setArguments(data);
performTransaction(locationsDetailsMapFragment);
}
/* (non-Javadoc)
* @see com.mobmonkey.mobmonkeyandroid.listeners.MMOnNearbyLocationsItemClickListener#onNearbyLocationsItemClick(org.json.JSONObject)
*/
@Override
public void onNearbyLocationsItemClick(String location) {
LocationDetailsFragment locationDetailsFragment = new LocationDetailsFragment();
Bundle data = new Bundle();
data.putString(MMSDKConstants.KEY_INTENT_EXTRA_LOCATION_DETAILS, location);
locationDetailsFragment.setArguments(data);
performTransaction(locationDetailsFragment);
}
/* (non-Javadoc)
* @see com.mobmonkey.mobmonkeyandroid.listeners.MMOnCreateHotSpotFragmentClickListener#onCreateHotSpotClick(org.json.JSONArray)
*/
@Override
public void onCreateHotSpotClick(JSONArray jArr) {
}
/* (non-Javadoc)
* @see com.mobmonkey.mobmonkeyandroid.listeners.MMOnCreateHotSpotFragmentClickListener#onCreateHotSpotClick(org.json.JSONObject)
*/
@Override
public void onCreateHotSpotClick(JSONObject jObj, int requestCode) {
NewHotSpotFragment newHotSpotFragment = new NewHotSpotFragment();
Bundle data = new Bundle();
data.putString(MMSDKConstants.KEY_INTENT_EXTRA_HOT_SPOT_LOCATION, jObj.toString());
data.putInt(MMSDKConstants.KEY_INTENT_EXTRA_REQUEST_CODE, requestCode);
newHotSpotFragment.setArguments(data);
performTransaction(newHotSpotFragment);
}
/* (non-Javadoc)
* @see com.mobmonkey.mobmonkeyandroid.listeners.MMOnAddNotificationsFragmentItemClickListener#onAddNotificationsFragmentItemClick(org.json.JSONObject)
*/
@Override
public void onAddNotificationsFragmentItemClick(JSONObject jObj) {
AddNotificationsFragment addNotificationsFragment = new AddNotificationsFragment();
Bundle data = new Bundle();
data.putString(MMSDKConstants.KEY_INTENT_EXTRA_LOCATION_DETAILS, jObj.toString());
addNotificationsFragment.setArguments(data);
performTransaction(addNotificationsFragment);
}
/**
* Handler when back button is pressed, it will not close and destroy the current {@link Activity} but instead it will remain on the current {@link Activity}
*/
/* (non-Javadoc)
* @see android.app.Activity#onBackPressed()
*/
@Override
public void onBackPressed() {
Log.d(TAG, TAG + "onBackPressed");
if(fragmentStack.size() > 1) {
// if(fragmentStack.peek() instanceof FavoritesMapFragment) {
// Do nothing?
// } else {
MMFragment mmFragment = fragmentStack.pop();
mmFragment.onFragmentBackPressed();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_left_in, R.anim.slide_right_out);
fragmentTransaction.replace(R.id.llfragmentcontainer, fragmentStack.peek());
fragmentTransaction.commit();
// }
}
moveTaskToBack(true);
return;
}
private void performTransaction(MMFragment mmFragment) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_right_in, R.anim.slide_left_out);
fragmentTransaction.replace(R.id.llfragmentcontainer, fragmentStack.push(mmFragment));
fragmentTransaction.commitAllowingStateLoss();
}
}