@Override
  public void onThemeSelected(String themeId) {
    FragmentManager fm = getSupportFragmentManager();

    if (!Utils.isXLarge(ThemeBrowserActivity.this)) {
      // show details as a fragment on top
      FragmentTransaction ft = fm.beginTransaction();

      if (mSearchFragment != null && mSearchFragment.isVisible()) {
        fm.popBackStack();
      }

      setupBaseLayout();
      mDetailsFragment = ThemeDetailsFragment.newInstance(themeId);
      ft.add(R.id.theme_browser_container, mDetailsFragment, ThemeDetailsFragment.TAG);
      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
      ft.addToBackStack(null);
      ft.commit();
    } else {
      // show details as a dialog
      mDetailsFragment = ThemeDetailsFragment.newInstance(themeId);
      mDetailsFragment.show(getSupportFragmentManager(), ThemeDetailsFragment.TAG);
      getSupportFragmentManager().executePendingTransactions();
      int minWidth = getResources().getDimensionPixelSize(R.dimen.theme_details_dialog_min_width);
      int height = getResources().getDimensionPixelSize(R.dimen.theme_details_dialog_height);
      int width = Math.max((int) (DisplayUtils.getDisplayPixelWidth(this) * 0.6), minWidth);
      mDetailsFragment.getDialog().getWindow().setLayout(width, height);
    }
  }
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();

    if (itemId == android.R.id.home) {
      FragmentManager fm = getSupportFragmentManager();
      if (fm.getBackStackEntryCount() > 0) {
        fm.popBackStack();
        setupBaseLayout();
        return true;
      }
    } else if (itemId == R.id.menu_search) {
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
      if (mSearchFragment == null) {
        mSearchFragment = ThemeSearchFragment.newInstance();
      }
      ft.add(R.id.theme_browser_container, mSearchFragment, ThemeSearchFragment.TAG);
      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
      ft.addToBackStack(null);
      ft.commit();
      return true;
    }

    return super.onOptionsItemSelected(item);
  }