From a577afd7e502f9448cc5dcd95f89efd9656f3866 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 30 Mar 2025 16:44:44 +0800 Subject: [PATCH] Support hide site --- .../android/tv/ui/adapter/SiteAdapter.java | 16 +++++++++++++--- .../android/tv/ui/custom/CustomTitleView.java | 12 +++++++++--- .../java/com/fongmi/android/tv/bean/Site.java | 12 ++++++++++++ .../android/tv/ui/adapter/SiteAdapter.java | 12 +++++++++++- .../fongmi/android/tv/ui/dialog/SiteDialog.java | 4 ++-- 5 files changed, 47 insertions(+), 9 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java index fe458b442..30aa3b0d1 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java @@ -13,6 +13,7 @@ import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.databinding.AdapterSiteBinding; +import java.util.ArrayList; import java.util.List; public class SiteAdapter extends RecyclerView.Adapter { @@ -23,7 +24,8 @@ public class SiteAdapter extends RecyclerView.Adapter { public SiteAdapter(OnClickListener listener) { this.mListener = listener; - this.mItems = VodConfig.get().getSites(); + this.mItems = new ArrayList<>(); + this.addAll(); } public interface OnClickListener { @@ -44,6 +46,14 @@ public class SiteAdapter extends RecyclerView.Adapter { setEnable(type == 3); } + private void addAll() { + for (Site site : VodConfig.get().getSites()) if (!site.isHide()) mItems.add(site); + } + + public List getItems() { + return mItems; + } + @Override public int getItemCount() { return mItems.size(); @@ -88,8 +98,8 @@ public class SiteAdapter extends RecyclerView.Adapter { } private void setEnable(boolean enable) { - if (type == 1) for (Site site : VodConfig.get().getSites()) site.setSearchable(enable).save(); - if (type == 2) for (Site site : VodConfig.get().getSites()) site.setChangeable(enable).save(); + if (type == 1) for (Site site : mItems) site.setSearchable(enable).save(); + if (type == 2) for (Site site : mItems) site.setChangeable(enable).save(); notifyItemRangeChanged(0, getItemCount()); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java index 05d77973c..95cffae2b 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java @@ -18,6 +18,7 @@ import com.fongmi.android.tv.impl.SiteCallback; import com.fongmi.android.tv.utils.KeyUtil; import com.fongmi.android.tv.utils.ResUtil; +import java.util.ArrayList; import java.util.List; public class CustomTitleView extends AppCompatTextView { @@ -41,7 +42,7 @@ public class CustomTitleView extends AppCompatTextView { } private boolean hasEvent(KeyEvent event) { - return KeyUtil.isEnterKey(event) || KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event) || (KeyUtil.isUpKey(event) && !coolDown); + return !getSites().isEmpty() && (KeyUtil.isEnterKey(event) || KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event) || (KeyUtil.isUpKey(event) && !coolDown)); } @Override @@ -53,7 +54,6 @@ public class CustomTitleView extends AppCompatTextView { @Override public boolean dispatchKeyEvent(KeyEvent event) { - if (VodConfig.get().getSites().isEmpty()) return false; if (hasEvent(event)) return onKeyDown(event); else return super.dispatchKeyEvent(event); } @@ -78,13 +78,19 @@ public class CustomTitleView extends AppCompatTextView { } private Site getSite(boolean next) { - List items = VodConfig.get().getSites(); + List items = getSites(); int position = VodConfig.getHomeIndex(); if (next) position = position > 0 ? --position : items.size() - 1; else position = position < items.size() - 1 ? ++position : 0; return items.get(position); } + private List getSites() { + List items = new ArrayList<>(); + for (Site site : VodConfig.get().getSites()) if (!site.isHide()) items.add(site); + return items; + } + public interface Listener extends SiteCallback { void showDialog(); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Site.java b/app/src/main/java/com/fongmi/android/tv/bean/Site.java index 1b21f4d51..109e96f79 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Site.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Site.java @@ -65,6 +65,10 @@ public class Site implements Parcelable { @SerializedName("type") private Integer type; + @Ignore + @SerializedName("hide") + private Integer hide; + @Ignore @SerializedName("indexs") private Integer indexs; @@ -174,6 +178,10 @@ public class Site implements Parcelable { return type == null ? 0 : type; } + public Integer getHide() { + return hide == null ? 0 : hide; + } + public Integer getIndexs() { return indexs == null ? 0 : indexs; } @@ -234,6 +242,10 @@ public class Site implements Parcelable { this.activated = item.equals(this); } + public boolean isHide() { + return getHide() == 1; + } + public boolean isIndex() { return getIndexs() == 1; } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java index 3e02272ef..0c775733b 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java @@ -12,6 +12,7 @@ import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.databinding.AdapterSiteBinding; +import java.util.ArrayList; import java.util.List; public class SiteAdapter extends RecyclerView.Adapter { @@ -23,7 +24,8 @@ public class SiteAdapter extends RecyclerView.Adapter { public SiteAdapter(OnClickListener listener) { this.mListener = listener; - this.mItems = VodConfig.get().getSites(); + this.mItems = new ArrayList<>(); + this.addAll(); } public SiteAdapter search(boolean search) { @@ -36,6 +38,14 @@ public class SiteAdapter extends RecyclerView.Adapter { return this; } + private void addAll() { + for (Site site : VodConfig.get().getSites()) if (!site.isHide()) mItems.add(site); + } + + public List getItems() { + return mItems; + } + public interface OnClickListener { void onTextClick(Site item); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/SiteDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/SiteDialog.java index 6e26ce570..4958a1939 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/SiteDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/SiteDialog.java @@ -103,7 +103,7 @@ public class SiteDialog implements SiteAdapter.OnClickListener { @Override public boolean onSearchLongClick(Site item) { boolean result = !item.isSearchable(); - for (Site site : VodConfig.get().getSites()) site.setSearchable(result).save(); + for (Site site : adapter.getItems()) site.setSearchable(result).save(); adapter.notifyItemRangeChanged(0, adapter.getItemCount()); callback.onChanged(); return true; @@ -112,7 +112,7 @@ public class SiteDialog implements SiteAdapter.OnClickListener { @Override public boolean onChangeLongClick(Site item) { boolean result = !item.isChangeable(); - for (Site site : VodConfig.get().getSites()) site.setChangeable(result).save(); + for (Site site : adapter.getItems()) site.setChangeable(result).save(); adapter.notifyItemRangeChanged(0, adapter.getItemCount()); return true; }