@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
 protected void onSaveInstanceState(Bundle outState) {
   if (Utils.isXLarge(ThemeBrowserActivity.this) && mDetailsFragment != null) {
     mDetailsFragment.dismiss();
   }
   super.onSaveInstanceState(outState);
   outState.putBoolean(KEY_IS_ACTIVATING_THEME, mIsActivatingTheme);
 }
  @Override
  public void onLivePreviewClicked(String themeId, String previewURL) {
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

    if (mPreviewFragment == null) {
      mPreviewFragment = ThemePreviewFragment.newInstance(themeId, previewURL);
    } else {
      mPreviewFragment.load(themeId, previewURL);
    }

    if (mDetailsFragment != null) {
      if (Utils.isXLarge(ThemeBrowserActivity.this)) {
        mDetailsFragment.dismiss();
      } else {
        ft.hide(mDetailsFragment);
      }
    }
    ft.add(R.id.theme_browser_container, mPreviewFragment, ThemePreviewFragment.TAG);
    ft.addToBackStack(null);
    ft.commit();
    setupBaseLayout();
  }
 @Override
 protected void onRestoreInstanceState(Bundle savedInstanceState) {
   super.onRestoreInstanceState(savedInstanceState);
   if (savedInstanceState.getBoolean(KEY_IS_ACTIVATING_THEME) && mDetailsFragment != null)
     mDetailsFragment.setIsActivatingTheme(true);
 }