package com.mobmonkey.mobmonkeyandroid; import java.util.Stack; import org.json.JSONObject; import com.mobmonkey.mobmonkeyandroid.R; import com.mobmonkey.mobmonkeyandroid.fragments.AnsweredRequestsFragment; import com.mobmonkey.mobmonkeyandroid.fragments.AssignedRequestsFragment; import com.mobmonkey.mobmonkeyandroid.fragments.InboxFragment; import com.mobmonkey.mobmonkeyandroid.fragments.LocationDetailsFragment; import com.mobmonkey.mobmonkeyandroid.fragments.OpenRequestsFragment; import com.mobmonkey.mobmonkeyandroid.listeners.*; import com.mobmonkey.mobmonkeyandroid.utils.MMFragment; import com.mobmonkey.mobmonkeysdk.utils.MMSDKConstants; import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; 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.widget.ListView; import android.widget.AdapterView.OnItemClickListener; /** * Android {@link Activity} screen displays the Inbox screen. * @author Dezapp, LLC * */ public class InboxActivity extends FragmentActivity implements MMOnInboxFragmentItemClickListener, OnLocationNameClickFragmentListener { private static final String TAG = "InboxActivity"; private FragmentManager fragmentManager; private Stack<MMFragment> fragmentStack; @Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG, TAG + ":onCreate"); 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; } InboxFragment inboxFragment = new InboxFragment(); fragmentManager.beginTransaction().add(R.id.llfragmentcontainer, fragmentStack.push(inboxFragment)).commit(); } } /** * {@link OnItemClickListener} for the {@link ListView} in Inbox screen. */ /* * (non-Javadoc) * @see com.mobmonkey.mobmonkey.fragments.InboxFragment.OnInboxItemClickListener#onInboxItemClick(int, java.lang.String) */ @Override public void onInboxFragmentItemClick(int position) { MMFragment mmFragment = null; switch(position) { case 0: mmFragment = new OpenRequestsFragment(); break; case 1: mmFragment = new AnsweredRequestsFragment(); break; case 2: mmFragment = new AssignedRequestsFragment(); break; case 3: // mmFragment = new NotificationsFragment(); break; } //Bundle data = new Bundle(); //data.putString(MMAPIConstants.KEY_INTENT_EXTRA_INBOX_REQUESTS, requests); //mmFragment.setArguments(data); performTransaction(mmFragment); } @Override public void onConfigurationChanged(Configuration newConfig) { Log.d(TAG, TAG + ":onConfigurationChanged"); super.onConfigurationChanged(newConfig); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d(TAG, TAG + ":onActivityResult"); super.onActivityResult(requestCode, resultCode, data); } /** * 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.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; } @Override public void locationNameClick(JSONObject obj) { Log.d(TAG, obj.toString()); LocationDetailsFragment locationDetailsFragment = new LocationDetailsFragment(); Bundle data = new Bundle(); data.putString(MMSDKConstants.KEY_INTENT_EXTRA_LOCATION_DETAILS, obj.toString()); locationDetailsFragment.setArguments(data); performTransaction(locationDetailsFragment); } 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(); } }