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.
This commit is contained in:
parent
52b5f45019
commit
ba7931c5ea
|
@ -58,7 +58,7 @@ import butterknife.OnClick;
|
||||||
/**
|
/**
|
||||||
* Presents addon details
|
* Presents addon details
|
||||||
*/
|
*/
|
||||||
public class AddonDetailsFragment extends Fragment {
|
public class AddonDetailsFragment extends SharedElementFragment {
|
||||||
private static final String TAG = LogUtils.makeLogTag(AddonDetailsFragment.class);
|
private static final String TAG = LogUtils.makeLogTag(AddonDetailsFragment.class);
|
||||||
|
|
||||||
public static final String BUNDLE_KEY_ADDONID = "addon_id";
|
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_FANART = "fanart";
|
||||||
public static final String BUNDLE_KEY_POSTER = "poster";
|
public static final String BUNDLE_KEY_POSTER = "poster";
|
||||||
public static final String BUNDLE_KEY_ENABLED = "enabled";
|
public static final String BUNDLE_KEY_ENABLED = "enabled";
|
||||||
|
public static final String BUNDLE_KEY_BROWSABLE = "browsable";
|
||||||
|
|
||||||
private HostManager hostManager;
|
private HostManager hostManager;
|
||||||
private HostInfo hostInfo;
|
private HostInfo hostInfo;
|
||||||
|
@ -119,6 +120,7 @@ public class AddonDetailsFragment extends Fragment {
|
||||||
args.putString(BUNDLE_KEY_FANART, vh.fanart);
|
args.putString(BUNDLE_KEY_FANART, vh.fanart);
|
||||||
args.putString(BUNDLE_KEY_POSTER, vh.poster);
|
args.putString(BUNDLE_KEY_POSTER, vh.poster);
|
||||||
args.putBoolean(BUNDLE_KEY_ENABLED, vh.enabled);
|
args.putBoolean(BUNDLE_KEY_ENABLED, vh.enabled);
|
||||||
|
args.putBoolean(BUNDLE_KEY_BROWSABLE, vh.browsable);
|
||||||
|
|
||||||
if( Utils.isLollipopOrLater()) {
|
if( Utils.isLollipopOrLater()) {
|
||||||
args.putString(POSTER_TRANS_NAME, vh.artView.getTransitionName());
|
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));
|
setImages(bundle.getString(BUNDLE_KEY_POSTER), bundle.getString(BUNDLE_KEY_FANART));
|
||||||
|
|
||||||
setupEnableButton(bundle.getBoolean(BUNDLE_KEY_ENABLED, false));
|
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
|
// Pad main content view to overlap with bottom system bar
|
||||||
// UIUtils.setPaddingForSystemBars(getActivity(), mediaPanel, false, false, true);
|
// UIUtils.setPaddingForSystemBars(getActivity(), mediaPanel, false, false, true);
|
||||||
|
@ -296,6 +299,7 @@ public class AddonDetailsFragment extends Fragment {
|
||||||
* Returns the shared element if visible
|
* Returns the shared element if visible
|
||||||
* @return View if visible, null otherwise
|
* @return View if visible, null otherwise
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public View getSharedElement() {
|
public View getSharedElement() {
|
||||||
if (UIUtils.isViewInBounds(mediaPanel, mediaPoster)) {
|
if (UIUtils.isViewInBounds(mediaPanel, mediaPoster)) {
|
||||||
return mediaPoster;
|
return mediaPoster;
|
||||||
|
@ -362,6 +366,7 @@ public class AddonDetailsFragment extends Fragment {
|
||||||
pinButton.clearColorFilter();
|
pinButton.clearColorFilter();
|
||||||
}
|
}
|
||||||
pinButton.setTag(enabled);
|
pinButton.setTag(enabled);
|
||||||
|
pinButton.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updatePinButton() {
|
private void updatePinButton() {
|
||||||
|
|
|
@ -265,6 +265,7 @@ public class AddonListFragment extends Fragment
|
||||||
viewHolder.fanart = addonDetails.fanart;
|
viewHolder.fanart = addonDetails.fanart;
|
||||||
viewHolder.poster = addonDetails.thumbnail;
|
viewHolder.poster = addonDetails.thumbnail;
|
||||||
viewHolder.enabled = addonDetails.enabled;
|
viewHolder.enabled = addonDetails.enabled;
|
||||||
|
viewHolder.browsable = AddonType.Types.XBMC_PYTHON_PLUGINSOURCE.equals(addonDetails.type);
|
||||||
|
|
||||||
viewHolder.titleView.setText(viewHolder.addonName);
|
viewHolder.titleView.setText(viewHolder.addonName);
|
||||||
viewHolder.detailsView.setText(addonDetails.summary);
|
viewHolder.detailsView.setText(addonDetails.summary);
|
||||||
|
@ -297,5 +298,6 @@ public class AddonListFragment extends Fragment
|
||||||
String fanart;
|
String fanart;
|
||||||
String poster;
|
String poster;
|
||||||
Boolean enabled;
|
Boolean enabled;
|
||||||
|
Boolean browsable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ import butterknife.InjectView;
|
||||||
/**
|
/**
|
||||||
* Container for the TV Show overview and Episodes list
|
* 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 static final String TAG = LogUtils.makeLogTag(AddonOverviewFragment.class);
|
||||||
|
|
||||||
private TabsAdapter tabsAdapter;
|
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_FANART, vh.fanart);
|
||||||
args.putString(AddonDetailsFragment.BUNDLE_KEY_POSTER, vh.poster);
|
args.putString(AddonDetailsFragment.BUNDLE_KEY_POSTER, vh.poster);
|
||||||
args.putBoolean(AddonDetailsFragment.BUNDLE_KEY_ENABLED, vh.enabled);
|
args.putBoolean(AddonDetailsFragment.BUNDLE_KEY_ENABLED, vh.enabled);
|
||||||
|
args.putBoolean(AddonDetailsFragment.BUNDLE_KEY_BROWSABLE, vh.browsable);
|
||||||
|
|
||||||
if( Utils.isLollipopOrLater()) {
|
if( Utils.isLollipopOrLater()) {
|
||||||
args.putString(AddonDetailsFragment.POSTER_TRANS_NAME, vh.artView.getTransitionName());
|
args.putString(AddonDetailsFragment.POSTER_TRANS_NAME, vh.artView.getTransitionName());
|
||||||
|
@ -127,6 +128,7 @@ public class AddonOverviewFragment extends Fragment {
|
||||||
return tabsAdapter.getItem(viewPager.getCurrentItem());
|
return tabsAdapter.getItem(viewPager.getCurrentItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public View getSharedElement() {
|
public View getSharedElement() {
|
||||||
View view = getView();
|
View view = getView();
|
||||||
if (view == null)
|
if (view == null)
|
||||||
|
|
|
@ -206,7 +206,11 @@ public class AddonsActivity extends BaseActivity
|
||||||
selectedAddonTitle = vh.addonName;
|
selectedAddonTitle = vh.addonName;
|
||||||
|
|
||||||
// Replace list fragment
|
// Replace list fragment
|
||||||
final AddonOverviewFragment addonDetailsFragment = AddonOverviewFragment.newInstance(vh);
|
final SharedElementFragment addonDetailsFragment =
|
||||||
|
vh.browsable
|
||||||
|
? AddonOverviewFragment.newInstance(vh)
|
||||||
|
: AddonDetailsFragment.newInstance(vh)
|
||||||
|
;
|
||||||
FragmentTransaction fragTrans = getSupportFragmentManager().beginTransaction();
|
FragmentTransaction fragTrans = getSupportFragmentManager().beginTransaction();
|
||||||
|
|
||||||
// Set up transitions
|
// Set up transitions
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
|
@ -99,6 +99,7 @@
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent"/>
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/pin_unpin"
|
android:id="@+id/pin_unpin"
|
||||||
|
android:visibility="gone"
|
||||||
android:layout_width="@dimen/buttonbar_button_width"
|
android:layout_width="@dimen/buttonbar_button_width"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
style="@style/Widget.Button.Borderless"
|
style="@style/Widget.Button.Borderless"
|
||||||
|
|
Loading…
Reference in New Issue