From ba7931c5ea9cf992c4397b80495360df8f52a1f3 Mon Sep 17 00:00:00 2001 From: David Eisner Date: Fri, 6 May 2016 20:28:57 +0100 Subject: [PATCH] Only attempt to browse and pin pluginsource type plugins Using AddonOverviewFragment in both cases would probably be an easier to follow code path, but this implementation switches between using AddonDetailsFragment directly and adding it via AddonOverviewFragment. --- .../main/java/org/xbmc/kore/ui/AddonDetailsFragment.java | 9 +++++++-- .../main/java/org/xbmc/kore/ui/AddonListFragment.java | 2 ++ .../java/org/xbmc/kore/ui/AddonOverviewFragment.java | 4 +++- app/src/main/java/org/xbmc/kore/ui/AddonsActivity.java | 6 +++++- .../java/org/xbmc/kore/ui/SharedElementFragment.java | 8 ++++++++ app/src/main/res/layout/fragment_addon_details.xml | 1 + 6 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/org/xbmc/kore/ui/SharedElementFragment.java diff --git a/app/src/main/java/org/xbmc/kore/ui/AddonDetailsFragment.java b/app/src/main/java/org/xbmc/kore/ui/AddonDetailsFragment.java index 9aff48d..f16dc8b 100644 --- a/app/src/main/java/org/xbmc/kore/ui/AddonDetailsFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/AddonDetailsFragment.java @@ -58,7 +58,7 @@ import butterknife.OnClick; /** * Presents addon details */ -public class AddonDetailsFragment extends Fragment { +public class AddonDetailsFragment extends SharedElementFragment { private static final String TAG = LogUtils.makeLogTag(AddonDetailsFragment.class); public static final String BUNDLE_KEY_ADDONID = "addon_id"; @@ -71,6 +71,7 @@ public class AddonDetailsFragment extends Fragment { public static final String BUNDLE_KEY_FANART = "fanart"; public static final String BUNDLE_KEY_POSTER = "poster"; public static final String BUNDLE_KEY_ENABLED = "enabled"; + public static final String BUNDLE_KEY_BROWSABLE = "browsable"; private HostManager hostManager; private HostInfo hostInfo; @@ -119,6 +120,7 @@ public class AddonDetailsFragment extends Fragment { args.putString(BUNDLE_KEY_FANART, vh.fanart); args.putString(BUNDLE_KEY_POSTER, vh.poster); args.putBoolean(BUNDLE_KEY_ENABLED, vh.enabled); + args.putBoolean(BUNDLE_KEY_BROWSABLE, vh.browsable); if( Utils.isLollipopOrLater()) { args.putString(POSTER_TRANS_NAME, vh.artView.getTransitionName()); @@ -177,7 +179,8 @@ public class AddonDetailsFragment extends Fragment { setImages(bundle.getString(BUNDLE_KEY_POSTER), bundle.getString(BUNDLE_KEY_FANART)); setupEnableButton(bundle.getBoolean(BUNDLE_KEY_ENABLED, false)); - updatePinButton(); + if (bundle.getBoolean(BUNDLE_KEY_BROWSABLE, true)) + updatePinButton(); // Pad main content view to overlap with bottom system bar // UIUtils.setPaddingForSystemBars(getActivity(), mediaPanel, false, false, true); @@ -296,6 +299,7 @@ public class AddonDetailsFragment extends Fragment { * Returns the shared element if visible * @return View if visible, null otherwise */ + @Override public View getSharedElement() { if (UIUtils.isViewInBounds(mediaPanel, mediaPoster)) { return mediaPoster; @@ -362,6 +366,7 @@ public class AddonDetailsFragment extends Fragment { pinButton.clearColorFilter(); } pinButton.setTag(enabled); + pinButton.setVisibility(View.VISIBLE); } private void updatePinButton() { diff --git a/app/src/main/java/org/xbmc/kore/ui/AddonListFragment.java b/app/src/main/java/org/xbmc/kore/ui/AddonListFragment.java index 1692fee..bfee6b8 100644 --- a/app/src/main/java/org/xbmc/kore/ui/AddonListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/AddonListFragment.java @@ -265,6 +265,7 @@ public class AddonListFragment extends Fragment viewHolder.fanart = addonDetails.fanart; viewHolder.poster = addonDetails.thumbnail; viewHolder.enabled = addonDetails.enabled; + viewHolder.browsable = AddonType.Types.XBMC_PYTHON_PLUGINSOURCE.equals(addonDetails.type); viewHolder.titleView.setText(viewHolder.addonName); viewHolder.detailsView.setText(addonDetails.summary); @@ -297,5 +298,6 @@ public class AddonListFragment extends Fragment String fanart; String poster; Boolean enabled; + Boolean browsable; } } diff --git a/app/src/main/java/org/xbmc/kore/ui/AddonOverviewFragment.java b/app/src/main/java/org/xbmc/kore/ui/AddonOverviewFragment.java index 4ab8dd0..b15c668 100644 --- a/app/src/main/java/org/xbmc/kore/ui/AddonOverviewFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/AddonOverviewFragment.java @@ -43,7 +43,7 @@ import butterknife.InjectView; /** * Container for the TV Show overview and Episodes list */ -public class AddonOverviewFragment extends Fragment { +public class AddonOverviewFragment extends SharedElementFragment { private static final String TAG = LogUtils.makeLogTag(AddonOverviewFragment.class); private TabsAdapter tabsAdapter; @@ -68,6 +68,7 @@ public class AddonOverviewFragment extends Fragment { args.putString(AddonDetailsFragment.BUNDLE_KEY_FANART, vh.fanart); args.putString(AddonDetailsFragment.BUNDLE_KEY_POSTER, vh.poster); args.putBoolean(AddonDetailsFragment.BUNDLE_KEY_ENABLED, vh.enabled); + args.putBoolean(AddonDetailsFragment.BUNDLE_KEY_BROWSABLE, vh.browsable); if( Utils.isLollipopOrLater()) { args.putString(AddonDetailsFragment.POSTER_TRANS_NAME, vh.artView.getTransitionName()); @@ -127,6 +128,7 @@ public class AddonOverviewFragment extends Fragment { return tabsAdapter.getItem(viewPager.getCurrentItem()); } + @Override public View getSharedElement() { View view = getView(); if (view == null) diff --git a/app/src/main/java/org/xbmc/kore/ui/AddonsActivity.java b/app/src/main/java/org/xbmc/kore/ui/AddonsActivity.java index 8b02c56..18d3a88 100644 --- a/app/src/main/java/org/xbmc/kore/ui/AddonsActivity.java +++ b/app/src/main/java/org/xbmc/kore/ui/AddonsActivity.java @@ -206,7 +206,11 @@ public class AddonsActivity extends BaseActivity selectedAddonTitle = vh.addonName; // Replace list fragment - final AddonOverviewFragment addonDetailsFragment = AddonOverviewFragment.newInstance(vh); + final SharedElementFragment addonDetailsFragment = + vh.browsable + ? AddonOverviewFragment.newInstance(vh) + : AddonDetailsFragment.newInstance(vh) + ; FragmentTransaction fragTrans = getSupportFragmentManager().beginTransaction(); // Set up transitions diff --git a/app/src/main/java/org/xbmc/kore/ui/SharedElementFragment.java b/app/src/main/java/org/xbmc/kore/ui/SharedElementFragment.java new file mode 100644 index 0000000..19c56ce --- /dev/null +++ b/app/src/main/java/org/xbmc/kore/ui/SharedElementFragment.java @@ -0,0 +1,8 @@ +package org.xbmc.kore.ui; + +import android.support.v4.app.Fragment; +import android.view.View; + +public abstract class SharedElementFragment extends Fragment { + public abstract View getSharedElement(); +} diff --git a/app/src/main/res/layout/fragment_addon_details.xml b/app/src/main/res/layout/fragment_addon_details.xml index 59e9473..912ae69 100644 --- a/app/src/main/res/layout/fragment_addon_details.xml +++ b/app/src/main/res/layout/fragment_addon_details.xml @@ -99,6 +99,7 @@ android:layout_height="match_parent"/>