gt: 		FragmentManager fm = getSupportFragmentManager();
context: /*
  
  XR - Modern Android XBMC remote
  Copyright (C) 2013 Ian Whyman
  
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
  
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  
  */
  
  package net.v00d00.xr;
  
  import android.content.ComponentName;
  import android.content.Context;
  import android.content.Intent;
  import android.content.ServiceConnection;
  import android.net.http.HttpResponseCache;
  import android.os.Bundle;
  import android.os.IBinder;
  import android.support.v4.app.FragmentManager;
  import android.support.v4.app.FragmentTransaction;
  import android.support.v4.view.GravityCompat;
  import android.support.v4.widget.DrawerLayout;
  import android.support.v7.app.ActionBarActivity;
  import android.support.v7.widget.Toolbar;
  import android.util.Log;
  import android.util.TypedValue;
  import android.view.Menu;
  import android.view.MenuItem;
  import android.view.View;
  import android.widget.FrameLayout;
  import android.widget.LinearLayout;
  
  import com.sothree.slidinguppanel.SlidingUpPanelLayout;
  
  import net.v00d00.xr.events.AlbumSelectedEvent;
  import net.v00d00.xr.events.ServiceAvailableEvent;
  import net.v00d00.xr.fragment.AbstractXRFragment;
  import net.v00d00.xr.fragment.PlayingBarFragment;
  import net.v00d00.xr.fragment.SideMenuFragment;
  import net.v00d00.xr.fragment.movies.MovieDetailFragment;
  import net.v00d00.xr.fragment.movies.MovieFragment;
  import net.v00d00.xr.fragment.movies.MovieListFragment;
  import net.v00d00.xr.fragment.music.AlbumDetailFragment;
  import net.v00d00.xr.fragment.music.AlbumListFragment;
  import net.v00d00.xr.fragment.music.MusicFragment;
  import net.v00d00.xr.fragment.tv.TVFragment;
  import net.v00d00.xr.model.AlbumDetail;
  import net.v00d00.xr.model.MovieDetail;
  import net.v00d00.xr.services.PlaylistService;
  import net.v00d00.xr.services.WebsocketService;
  
  import de.greenrobot.event.EventBus;
  
  public class HomeActivity extends ActionBarActivity implements
  			PlayingBarFragment.Provider,
  			SideMenuFragment.Provider,
  			AlbumListFragment.Provider,
  			MovieListFragment.Provider {
  
  	private ServiceConnection websocketServiceConnection = new ServiceConnection() {
  		@Override
  		public void onServiceConnected(ComponentName className, IBinder service) {
  			WebsocketService.LocalBinder binder = (WebsocketService.LocalBinder) service;
  			websocketService = binder.getService();
  			eventBus.post(new ServiceAvailableEvent(websocketService));
  		}
  
  		@Override
  		public void onServiceDisconnected(ComponentName arg0) {
  			isBound = false;
  		}
  	};
  
  	private ServiceConnection playlistServiceConnection = new ServiceConnection() {
  		@Override
  		public void onServiceConnected(ComponentName className, IBinder service) {
  			PlaylistService.LocalBinder binder = (PlaylistService.LocalBinder) service;
  			playlistService = binder.getService();
  		}
  
  		@Override
  		public void onServiceDisconnected(ComponentName arg0) {
  			isBound = false;
  		}
  	};
  
  	private EventBus eventBus;
  	private WebsocketService websocketService;
  	private PlaylistService playlistService;
  	private boolean isBound = false;
  
  	private SlidingUpPanelLayout layout;
  
  	private MusicFragment musicFragment;
  	private MovieFragment movieFragment;
  	private TVFragment tvFragment;
  
  	private PlayingBarFragment playingBarFragment;
  	private SideMenuFragment navigationDrawerFragment;
  
  	private FrameLayout rightPane;
  	private FrameLayout leftPane;
  	private DrawerLayout navigationDrawer;
  
  	@Override
  	public void onCreate(Bundle savedInstanceState) {
  		super.onCreate(savedInstanceState);
  
  		setContentView(R.layout.base);
  
  		layout = (SlidingUpPanelLayout) findViewById(R.id.pager_layout);
  		rightPane = (FrameLayout) findViewById(R.id.right_pane);
  		leftPane = (FrameLayout) findViewById(R.id.left_pane);
  		navigationDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
  
  		if (savedInstanceState == null) {
  			FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
  
  			navigationDrawerFragment = new SideMenuFragment();
  			t.replace(R.id.navigation_drawer, navigationDrawerFragment);
  
  			playingBarFragment = new PlayingBarFragment();
  			t.replace(R.id.bottom_pane, playingBarFragment).commit();
  
  			displayMusic();
  		} else {
  			playingBarFragment = (PlayingBarFragment) getSupportFragmentManager().findFragmentById(R.id.bottom_pane);
  		}
  
  		layout.setPanelSlideListener(playingBarFragment);
  		navigationDrawer.setDrawerShadow(R.drawable.drop_shadow, GravityCompat.START);
  
  		Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  		setSupportActionBar(toolbar);
  	}
  
  	@Override
  	protected void onStart() {
  		super.onStart();
  
  		eventBus = EventBus.getDefault();
  		eventBus.register(this);
  
  		/* Start the services */
  		Intent websocketIntent = new Intent(this, WebsocketService.class);
  		bindService(websocketIntent, websocketServiceConnection, Context.BIND_AUTO_CREATE);
  		Intent playlistIntent = new Intent(this, PlaylistService.class);
  		bindService(playlistIntent, playlistServiceConnection, BIND_AUTO_CREATE);
  	}
  
  	@Override
  	protected void onStop() {
  		HttpResponseCache cache = HttpResponseCache.getInstalled();
  		if (cache != null) {
  			cache.flush();
  		}
  
  		eventBus.unregister(this);
  		super.onStop();
  	}
  
  	@Override
  	public boolean onCreateOptionsMenu(Menu menu) {
  		// Inflate the menu; this adds items to the action bar if it is present.
  		getMenuInflater().inflate(R.menu.home, menu);
  		return true;
  	}
  
  	@Override
  	public boolean onOptionsItemSelected(MenuItem item) {
  		switch (item.getItemId()) {
  		case android.R.id.home:
  			if (navigationDrawer.isDrawerVisible(GravityCompat.START))
  				navigationDrawer.closeDrawer(GravityCompat.START);
  			else
  				navigationDrawer.openDrawer(GravityCompat.START);
  			return true;
          case R.id.action_settings:
          	Intent intent = new Intent(this, SettingsActivity.class);
          	startActivity(intent);
          	return true;
          default:
              return super.onOptionsItemSelected(item);
  		}
      }
  
  	private void setRightPane(AbstractXRFragment f) {
  
  		LinearLayout.LayoutParams params;
  
  		Log.d("IS TABLET", Boolean.toString(XRUtils.isTablet(this)));
  
  		if (XRUtils.isTablet(this)) {
  			params = new LinearLayout.LayoutParams(
  					(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 640, getResources().getDisplayMetrics()),
  					LinearLayout.LayoutParams.MATCH_PARENT,
  					1.0f
  				);
  		} else {
  			rightPane.setVisibility(View.GONE);
  			params = new LinearLayout.LayoutParams(
  					LinearLayout.LayoutParams.MATCH_PARENT,
  					LinearLayout.LayoutParams.MATCH_PARENT,
  					1.0f
  			);
  		}
  		params.leftMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
  
  		rightPane.setLayoutParams(params);
  
  		FragmentManager fm = getSupportFragmentManager();
  		FragmentManager.enableDebugLogging(true);
  		if (!f.isAdded()) {
  			if (XRUtils.isTablet(this))
  				fm.beginTransaction().replace(R.id.right_pane, f).addToBackStack(null).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
  			else {
  				fm.beginTransaction().replace(R.id.left_pane, f).addToBackStack(null).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
  			}
  		}
  
  	}
  
  	@Override
  	public void setDragView(View view) {
  		layout.setDragView(view);
  	}
  
  	@Override
  	public void displayMusic() {
  		if (musicFragment == null)
  			musicFragment = new MusicFragment();
  		FragmentManager fm = getSupportFragmentManager();
  		fm.beginTransaction().replace(R.id.left_pane, musicFragment).commit();
  		hideMenu();
  	}
  
  	@Override
  	public void displayMovies() {
  		if (movieFragment == null)
  			movieFragment = new MovieFragment();
  		FragmentManager fm = getSupportFragmentManager();
  		fm.beginTransaction().replace(R.id.left_pane, movieFragment).commit();
  		hideMenu();
  	}
  
  	@Override
  	public void displayTVShows() {
  		if (tvFragment == null)
  			tvFragment = new TVFragment();
  