From ce538ce5d668d4a76b67ba8f44f040cb41708bc6 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 27 Aug 2023 17:58:54 +0800 Subject: [PATCH] Support parent vod_pic --- .../tv/ui/activity/DetailActivity.java | 31 ++++++++++------- .../android/tv/ui/activity/HomeActivity.java | 4 +-- .../android/tv/ui/activity/KeepActivity.java | 4 +-- .../android/tv/ui/activity/VodActivity.java | 9 +++-- .../tv/ui/fragment/CollectFragment.java | 2 +- .../android/tv/ui/fragment/VodFragment.java | 34 ++++++++----------- .../java/com/fongmi/android/tv/bean/Vod.java | 5 +++ .../tv/ui/activity/CollectActivity.java | 2 +- .../tv/ui/activity/DetailActivity.java | 23 +++++++++---- .../tv/ui/activity/HistoryActivity.java | 2 +- .../android/tv/ui/activity/KeepActivity.java | 4 +-- .../android/tv/ui/activity/LiveActivity.java | 2 ++ .../android/tv/ui/fragment/TypeFragment.java | 4 +-- 13 files changed, 71 insertions(+), 55 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 844476279..a8b60f7ca 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -139,39 +139,40 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } public static void cast(Activity activity, History history) { - start(activity, history.getSiteKey(), history.getVodId(), history.getVodName(), null, true, true); + start(activity, history.getSiteKey(), history.getVodId(), history.getVodName(), history.getVodPic(), null, true, true); } public static void push(Activity activity, String url, boolean clear) { start(activity, "push_agent", url, url, clear); } - public static void start(Activity activity, String id, String name) { - start(activity, ApiConfig.get().getHome().getKey(), id, name); + public static void start(Activity activity, String id, String name, String pic) { + start(activity, ApiConfig.get().getHome().getKey(), id, name, pic); } - public static void start(Activity activity, String key, String id, String name) { - start(activity, key, id, name, false); + public static void start(Activity activity, String key, String id, String name, String pic) { + start(activity, key, id, name, pic, null, false); } - public static void start(Activity activity, String key, String id, String name, String mark) { - start(activity, key, id, name, mark, false); + public static void start(Activity activity, String key, String id, String name, String pic, String mark) { + start(activity, key, id, name, pic, mark, false); } public static void start(Activity activity, String key, String id, String name, boolean clear) { - start(activity, key, id, name, null, clear, false); + start(activity, key, id, name, null, null, clear, false); } - public static void start(Activity activity, String key, String id, String name, String mark, boolean clear) { - start(activity, key, id, name, mark, clear, false); + public static void start(Activity activity, String key, String id, String name, String pic, String mark, boolean clear) { + start(activity, key, id, name, pic, mark, clear, false); } - public static void start(Activity activity, String key, String id, String name, String mark, boolean clear, boolean cast) { + public static void start(Activity activity, String key, String id, String name, String pic, String mark, boolean clear, boolean cast) { Intent intent = new Intent(activity, DetailActivity.class); if (clear) intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("cast", cast); - intent.putExtra("name", name); intent.putExtra("mark", mark); + intent.putExtra("name", name); + intent.putExtra("pic", pic); intent.putExtra("key", key); intent.putExtra("id", id); activity.startActivityForResult(intent, 1000); @@ -185,6 +186,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis return getIntent().getStringExtra("name"); } + private String getPic() { + return getIntent().getStringExtra("pic"); + } + private String getMark() { return getIntent().getStringExtra("mark"); } @@ -452,7 +457,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private void setDetail(Vod item) { mBinding.progressLayout.showContent(); - mBinding.video.setTag(item.getVodPic()); + mBinding.video.setTag(item.getVodPic(getPic())); mBinding.name.setText(item.getVodName(getName())); setText(mBinding.remark, 0, item.getVodRemarks()); setText(mBinding.year, R.string.detail_year, item.getVodYear()); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index c68823f82..c78ed3717 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -283,7 +283,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override public void onItemClick(Vod item) { - DetailActivity.start(this, item.getVodId(), item.getVodName()); + DetailActivity.start(this, item.getVodId(), item.getVodName(), item.getVodPic()); } @Override @@ -294,7 +294,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override public void onItemClick(History item) { - DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName()); + DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java index 7f1804c0e..ece461d71 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java @@ -57,7 +57,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis ApiConfig.load(config, new Callback() { @Override public void success() { - DetailActivity.start(getActivity(), item.getSiteKey(), item.getVodId(), item.getVodName()); + DetailActivity.start(getActivity(), item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); RefreshEvent.history(); RefreshEvent.video(); } @@ -78,7 +78,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis public void onItemClick(Keep item) { Config config = Config.find(item.getCid()); if (item.getCid() != ApiConfig.getCid()) loadConfig(config, item); - else DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName()); + else DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java index 466cfc5fc..4fa2a7b7e 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java @@ -100,9 +100,9 @@ public class VodActivity extends BaseActivity implements TypePresenter.OnClickLi } private List getTypes(Result result) { - List types = new ArrayList<>(); - for (String cate : getSite().getCategories()) for (Class type : result.getTypes()) if (Trans.s2t(cate).equals(type.getTypeName())) types.add(type); - return types; + List items = new ArrayList<>(); + for (String cate : getSite().getCategories()) for (Class item : result.getTypes()) if (Trans.s2t(cate).equals(item.getTypeName())) items.add(item); + return items; } private void setTypes() { @@ -176,8 +176,7 @@ public class VodActivity extends BaseActivity implements TypePresenter.OnClickLi @Override public Fragment getItem(int position) { Class type = (Class) mAdapter.get(position); - String filter = App.gson().toJson(type.getFilters()); - return VodFragment.newInstance(getKey(), type.getTypeId(), filter, type.getTypeFlag().equals("1")); + return VodFragment.newInstance(getKey(), type.getTypeId(), type.getFilters(), type.getExtend(), type.getTypeFlag().equals("1")); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java index 4b1cf1231..6bd47fe8d 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java @@ -118,7 +118,7 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call public void onItemClick(Vod item) { getActivity().setResult(Activity.RESULT_OK); if (item.isFolder()) VodActivity.start(getActivity(), item.getSiteKey(), Result.folder(item)); - else DetailActivity.start(getActivity(), item.getSiteKey(), item.getVodId(), item.getVodName()); + else DetailActivity.start(getActivity(), item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 7cab08a62..eda47f39b 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -40,6 +40,7 @@ import com.fongmi.android.tv.ui.presenter.VodPresenter; import com.fongmi.android.tv.utils.ResUtil; import com.google.common.collect.Lists; +import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -57,12 +58,13 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback private boolean mOpen; private Page mPage; - public static VodFragment newInstance(String key, String typeId, String filter, boolean folder) { + public static VodFragment newInstance(String key, String typeId, List filter, HashMap extend, boolean folder) { Bundle args = new Bundle(); args.putString("key", key); args.putString("typeId", typeId); - args.putString("filter", filter); args.putBoolean("folder", folder); + args.putSerializable("extend", extend); + args.putParcelableArrayList("filter", new ArrayList<>(filter)); VodFragment fragment = new VodFragment(); fragment.setArguments(args); return fragment; @@ -76,8 +78,13 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback return mPages.isEmpty() ? getArguments().getString("typeId") : getLastPage().getVodId(); } - private String getFilter() { - return getArguments().getString("filter"); + private ArrayList getFilter() { + return getArguments().getParcelableArrayList("filter"); + } + + private HashMap getExtend() { + Serializable extend = getArguments().getSerializable("extend"); + return extend == null ? new HashMap<>() : (HashMap) extend; } private boolean isFolder() { @@ -104,10 +111,10 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback @Override protected void initView() { mPages = new ArrayList<>(); - mExtends = new HashMap<>(); + mExtends = getExtend(); + mFilters = getFilter(); setRecyclerView(); setViewModel(); - setFilters(); } @Override @@ -140,17 +147,6 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback }); } - private void setFilters() { - mFilters = Filter.arrayFrom(getFilter()); - for (Filter filter : mFilters) { - if (filter.getInit() == null) continue; - Value value = new Value(filter.getInit()); - int index = filter.getValue().indexOf(value); - filter.getValue().get(index).setActivated(true); - mExtends.put(filter.getKey(), filter.getInit()); - } - } - private void setClick(ArrayObjectAdapter adapter, String key, Value item) { for (int i = 0; i < adapter.size(); i++) ((Value) adapter.get(i)).setActivated(item); adapter.notifyArrayItemRangeChanged(0, adapter.size()); @@ -268,8 +264,8 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback mBinding.recycler.setMoveTop(false); getVideo(item.getVodId(), "1"); } else { - if (!isFolder()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName()); - else DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodName()); + if (!isFolder()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic()); + else DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), item.getVodName()); } } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java index 63b65f396..cb9bb1a4f 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java @@ -217,6 +217,11 @@ public class Vod implements Parcelable { return getStyle() == null ? style : getStyle(); } + public String getVodPic(String pic) { + if (getVodPic().isEmpty()) setVodPic(pic); + return getVodPic(); + } + public String getVodName(String name) { if (getVodName().isEmpty()) setVodName(name); return getVodName(); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index 4ceeaf048..fe25b9395 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -271,7 +271,7 @@ public class CollectActivity extends BaseActivity implements CustomScroller.Call @Override public void onItemClick(Vod item) { if (item.isFolder()) VodActivity.start(this, item.getSiteKey(), Result.folder(item)); - else DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName()); + else DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index d8ec8265b..afc05228e 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -152,21 +152,26 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust } public static void cast(Activity activity, History history) { - start(activity, history.getSiteKey(), history.getVodId(), history.getVodName()); + start(activity, history.getSiteKey(), history.getVodId(), history.getVodName(), history.getVodPic()); } public static void push(Activity activity, String url) { - start(activity, "push_agent", url, url); + start(activity, "push_agent", url, url, null); } public static void start(Activity activity, String key, String id, String name) { - start(activity, key, id, name, null); + start(activity, key, id, name, null, null); } - public static void start(Activity activity, String key, String id, String name, String mark) { + public static void start(Activity activity, String key, String id, String name, String pic) { + start(activity, key, id, name, pic, null); + } + + public static void start(Activity activity, String key, String id, String name, String pic, String mark) { Intent intent = new Intent(activity, DetailActivity.class); - intent.putExtra("name", name); intent.putExtra("mark", mark); + intent.putExtra("name", name); + intent.putExtra("pic", pic); intent.putExtra("key", key); intent.putExtra("id", id); activity.startActivity(intent); @@ -176,6 +181,10 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust return getIntent().getStringExtra("name"); } + private String getPic() { + return getIntent().getStringExtra("pic"); + } + private String getMark() { return getIntent().getStringExtra("mark"); } @@ -433,7 +442,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust private void setDetail(Vod item) { mBinding.progressLayout.showContent(); - mBinding.video.setTag(item.getVodPic()); + mBinding.video.setTag(item.getVodPic(getPic())); mBinding.name.setText(item.getVodName(getName())); setText(mBinding.remark, 0, item.getVodRemarks()); setText(mBinding.site, R.string.detail_site, getSite().getName()); @@ -1406,7 +1415,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust if (isInPictureInPictureMode) { mReceiver.register(this); enterFullscreen(); - setSubtitle(12); + setSubtitle(10); hideControl(); hideSheet(); } else { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java index fe93ebf29..4a8e7c9ec 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java @@ -81,7 +81,7 @@ public class HistoryActivity extends BaseActivity implements HistoryAdapter.OnCl @Override public void onItemClick(History item) { - DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName()); + DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java index 4e686deac..be41418d9 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java @@ -82,7 +82,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis ApiConfig.load(config, new Callback() { @Override public void success() { - DetailActivity.start(getActivity(), item.getSiteKey(), item.getVodId(), item.getVodName()); + DetailActivity.start(getActivity(), item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); RefreshEvent.config(); RefreshEvent.video(); } @@ -103,7 +103,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis public void onItemClick(Keep item) { Config config = Config.find(item.getCid()); if (item.getCid() != ApiConfig.getCid()) loadConfig(config, item); - else DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName()); + else DetailActivity.start(this, item.getSiteKey(), item.getVodId(), item.getVodName(), item.getVodPic()); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index abe10aee2..b85211c36 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -883,12 +883,14 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List super.onPictureInPictureModeChanged(isInPictureInPictureMode); if (isInPictureInPictureMode) { mReceiver.register(this); + setSubtitle(10); hideControl(); hideInfo(); hideUI(); } else { hideInfo(); mReceiver.unregister(this); + setSubtitle(Setting.getSubtitle()); if (isStop()) finish(); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index e2595c904..62e90dfef 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -213,8 +213,8 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac mPages.add(Page.get(item.getVodId(), findPosition())); getVideo(item.getVodId(), "1"); } else { - if (!isFolder()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName()); - else DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodName()); + if (!isFolder()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic()); + else DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), item.getVodName()); } }