package org.magnum.soda.example.controllers.homeactivity; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.magnum.soda.android.AndroidSoda; import org.magnum.soda.android.AndroidSodaListener; import org.magnum.soda.example.controllers.createreportfragment.CreateReportFragment; import org.magnum.soda.example.controllers.homefragment.HomeFragment; import org.magnum.soda.example.controllers.searchlocationfragment.SearchLocationFragment; import org.magnum.soda.example.controllers.searchqrfragment.SearchQrFragment; import org.magnum.soda.example.maint.LoginActivity; import org.magnum.soda.example.maint.R; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.util.Log; import com.actionbarsherlock.app.SherlockFragment; import com.slidingmenu.lib.SlidingMenu; import com.slidingmenu.lib.app.SlidingFragmentActivity; //import org.magnum.soda.example.views.followersfragment.FollowersFragment; //import org.magnum.soda.example.views.followingfragment.FollowingFragment; //import org.magnum.soda.example.views.newsfragment.NewsFragment; //import org.magnum.soda.example.views.projectsfragment.ProjectsFragment; public class HomeActivity extends SlidingFragmentActivity implements AndroidSodaListener{ private Fragment mMenuFragment; private SherlockFragment mCurrentFragment; private Map<String,SherlockFragment> mMenuControlledFragments; public static final String FRAGMENT_HOME = "home"; public static final String FRAGMENT_SEARCH_LOCATION = "search_location"; public static final String FRAGMENT_SEARCH_QR = "search_qr"; public static final String FRAGMENT_CREATE_REPORT = "create_report"; public static final String TAG = HomeActivity.class.getName(); public AndroidSodaListener asl_ = null; public AndroidSoda as = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); asl_ = this; setContentView(R.layout.activity_base); setBehindContentView(R.layout.menu_frame); AndroidSoda.init(this, LoginActivity.mHost, 8081, asl_); FragmentTransaction t = this.getSupportFragmentManager() .beginTransaction(); mMenuFragment = new SlidingMenuFragment(); t.replace(R.id.menu_frame, mMenuFragment); t.commit(); setupSlidingMenu(); initMenuControlledFragments(); } private void initMenuControlledFragments() { mMenuControlledFragments = new HashMap<String, SherlockFragment>(); mMenuControlledFragments.put(FRAGMENT_HOME, new HomeFragment()); mMenuControlledFragments.put(FRAGMENT_SEARCH_LOCATION, new SearchLocationFragment()); mMenuControlledFragments.put(FRAGMENT_SEARCH_QR, new SearchQrFragment()); mMenuControlledFragments.put(FRAGMENT_CREATE_REPORT, new CreateReportFragment()); switchContent(FRAGMENT_HOME); } public void switchContent(final String fragmentName) { Log.d(TAG,"SwitchContent"); SherlockFragment newFragment = mMenuControlledFragments .get(fragmentName); if (newFragment != null) { if (newFragment != mCurrentFragment) { getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, newFragment).commit(); mCurrentFragment = newFragment; } // close menu and show the content fragment Handler h = new Handler(); h.postDelayed(new Runnable() { public void run() { getSlidingMenu().showContent(); } }, 50); } } private void setupSlidingMenu() { SlidingMenu sm = getSlidingMenu(); sm.setShadowWidthRes(R.dimen.shadow_width); sm.setShadowDrawable(R.drawable.shadow); sm.setBehindOffsetRes(R.dimen.slidingmenu_offset); sm.setFadeDegree(0.35f); sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); } @Override protected void onDestroy() { Log.i(TAG, "Deleting all fragments"); FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction(); if (ft != null && mMenuControlledFragments != null && mMenuControlledFragments.size() > 0) { for(Entry<String, SherlockFragment> entry : mMenuControlledFragments.entrySet()) { ft.remove(entry.getValue()); } ft.commitAllowingStateLoss(); this.getSupportFragmentManager().executePendingTransactions(); } super.onDestroy(); } @Override public void connected(final AndroidSoda s) { Log.d(TAG, "connected"); this.as = s; } }