package com.mobmonkey.mobmonkeyandroid;
import java.util.Stack;
import org.json.JSONArray;
import com.facebook.Session;
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.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.MotionEvent;
/**
* @author Dezapp, LLC
*
*/
public class SettingsActivity extends FragmentActivity implements MMOnMyInfoFragmentItemClickListener,
MMOnSocialNetworksFragmentItemClickListener,
MMOnMyInterestsFragmentItemClickListener,
MMOnFragmentFinishListener {
private static final String TAG = "SettingsActivtiy: ";
private FragmentManager fragmentManager;
private Stack<MMFragment> fragmentStack;
/*
* (non-Javadoc)
* @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle)
*/
@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;
}
SettingsFragment settingsFragment = new SettingsFragment();
fragmentManager.beginTransaction().add(R.id.llfragmentcontainer, fragmentStack.push(settingsFragment)).commit();
}
}
/*
* (non-Javadoc)
* @see android.support.v4.app.FragmentActivity#onActivityResult(int, int, android.content.Intent)
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == MMSDKConstants.REQUEST_CODE_FACEBOOK_SESSION) {
Session.getActiveSession().onActivityResult(SettingsActivity.this, requestCode, resultCode, data);
}
}
/* (non-Javadoc)
* @see com.mobmonkey.mobmonkeyandroid.listeners.MMOnMyInfoFragmentItemClickListener#onMyInfoFragmentItemClick()
*/
@Override
public void onMyInfoFragmentItemClick() {
performTransaction(new MyInfoFragment());
}
/* (non-Javadoc)
* @see com.mobmonkey.mobmonkeyandroid.listeners.MMOnSocialNetworksFragmentItemClickListener#onSocialNetworksItemClick()
*/
@Override
public void onSocialNetworksItemClick() {
performTransaction(new SocialNetworksFragment());
}
/* (non-Javadoc)
* @see com.mobmonkey.mobmonkeyandroid.listeners.MMOnMyInterestsFragmentItemClickListener#onMyInterestsFragmentItemClick(org.json.JSONArray, boolean)
*/
@Override
public void onMyInterestsFragmentItemClick(JSONArray myInterests, boolean isTopLevel) {
MyInterestsFragment myInterestsFragment = new MyInterestsFragment();
Bundle data = new Bundle();
data.putString(MMSDKConstants.KEY_INTENT_EXTRA_INTERESTS, myInterests.toString());
data.putBoolean(MMSDKConstants.KEY_INTENT_EXTRA_TOP_LEVEL, isTopLevel);
myInterestsFragment.setArguments(data);
performTransaction(myInterestsFragment);
}
/*
* (non-Javadoc)
* @see com.mobmonkey.mobmonkeyandroid.listeners.MMOnFragmentFinishListener#onFragmentFinish()
*/
@Override
public void onFragmentFinish() {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentStack.pop();
fragmentTransaction.setCustomAnimations(R.anim.slide_left_in, R.anim.slide_right_out);
fragmentTransaction.replace(R.id.llfragmentcontainer, fragmentStack.peek());
fragmentTransaction.commit();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d(TAG, TAG + "Hank got touched");
return super.onTouchEvent(event);
}
/**
* 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() {
if(fragmentStack.size() > 1) {
MMFragment mmFragment = fragmentStack.peek();
mmFragment.onFragmentBackPressed();
}
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.commit();
}
}