From f016c06411943d269920350d33bbd77af5deabc4 Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 18 Jun 2024 13:27:31 +0800 Subject: [PATCH] Optimize live epg click --- .../android/tv/ui/activity/LiveActivity.java | 25 ++++++++++++------- .../tv/ui/presenter/EpgDataPresenter.java | 4 ++- .../android/tv/ui/activity/LiveActivity.java | 25 ++++++++++++------- .../android/tv/ui/adapter/EpgDataAdapter.java | 4 ++- 4 files changed, 38 insertions(+), 20 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index c356fa137..6a902affe 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -528,7 +528,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onItemClick(Channel item) { - if (item.getData().getList().size() > 0 && item.isSelected() && mChannel != null && mChannel.equals(item)) { + if (item.getData().getList().size() > 0 && item.isSelected() && item.equals(mChannel)) { showEpg(item); } else { mGroup.setPosition(mBinding.channel.getSelectedPosition()); @@ -549,14 +549,13 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onItemClick(EpgData item) { - if (item.isFuture() || !mChannel.hasCatchup()) return; - Notify.show(getString(R.string.play_ready, item.getTitle())); - mViewModel.getUrl(mChannel, item); - setActivated(item); - mPlayers.clear(); - mPlayers.stop(); - showProgress(); - hideEpg(); + if (item.isSelected()) { + fetch(item); + } else if (mChannel.hasCatchup()) { + Notify.show(getString(R.string.play_ready, item.getTitle())); + setActivated(item); + fetch(item); + } } private void addKeep(Channel item) { @@ -612,6 +611,14 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick if (mChannel != null && mChannel.getTvgName().equals(epg.getKey())) setEpg(); } + private void fetch(EpgData item) { + if (mChannel == null) return; + mViewModel.getUrl(mChannel, item); + mPlayers.clear(); + mPlayers.stop(); + hideEpg(); + } + private void fetch() { if (mChannel == null) return; LiveConfig.get().setKeep(mChannel); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpgDataPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpgDataPresenter.java index c93d8e4f3..81ae9a8f7 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpgDataPresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpgDataPresenter.java @@ -37,7 +37,9 @@ public class EpgDataPresenter extends Presenter { holder.binding.title.setText(item.getTitle()); holder.binding.getRoot().setSelected(item.isSelected()); holder.binding.getRoot().setLeftListener(mListener::showUI); - setOnClickListener(holder, view -> mListener.onItemClick(item)); + setOnClickListener(holder, view -> { + if (!item.isFuture()) mListener.onItemClick(item); + }); } @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 466c54c2d..7ced2a4e0 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 @@ -570,7 +570,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List @Override public void onItemClick(Channel item) { - if (item.getData().getList().size() > 0 && item.isSelected() && mChannel != null && mChannel.equals(item)) { + if (item.getData().getList().size() > 0 && item.isSelected() && item.equals(mChannel)) { showEpg(item); } else { mGroup.setPosition(mChannelAdapter.setSelected(item.group(mGroup))); @@ -594,14 +594,13 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List @Override public void onItemClick(EpgData item) { - if (item.isFuture() || !mChannel.hasCatchup()) return; - Notify.show(getString(R.string.play_ready, item.getTitle())); - mEpgDataAdapter.setSelected(item); - mViewModel.getUrl(mChannel, item); - mPlayers.clear(); - mPlayers.stop(); - showProgress(); - hideEpg(); + if (item.isSelected()) { + fetch(item); + } else if (mChannel.hasCatchup()) { + Notify.show(getString(R.string.play_ready, item.getTitle())); + mEpgDataAdapter.setSelected(item); + fetch(item); + } } private void addKeep(Channel item) { @@ -653,6 +652,14 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List if (mChannel != null && mChannel.getTvgName().equals(epg.getKey())) setEpg(); } + private void fetch(EpgData item) { + if (mChannel == null) return; + mViewModel.getUrl(mChannel, item); + mPlayers.clear(); + mPlayers.stop(); + hideEpg(); + } + private void fetch() { if (mChannel == null) return; LiveConfig.get().setKeep(mChannel); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpgDataAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpgDataAdapter.java index fef519595..2117e0088 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpgDataAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpgDataAdapter.java @@ -64,7 +64,9 @@ public class EpgDataAdapter extends RecyclerView.Adapter mListener.onItemClick(item)); + holder.binding.getRoot().setOnClickListener(view -> { + if (!item.isFuture()) mListener.onItemClick(item); + }); } static class ViewHolder extends RecyclerView.ViewHolder {