From 69a42f2f6af1707be5eff8d2ceb9e4617d7962a7 Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 19 Dec 2022 18:44:04 +0800 Subject: [PATCH] Update site dialog --- .../android/tv/ui/activity/HomeActivity.java | 2 +- .../tv/ui/activity/SearchActivity.java | 8 +++++++ .../tv/ui/activity/SettingActivity.java | 2 +- .../tv/ui/custom/dialog/SiteDialog.java | 24 +++++++++++++++++-- .../tv/ui/presenter/SitePresenter.java | 15 ++++++++++++ app/src/leanback/res/layout/adapter_site.xml | 2 +- 6 files changed, 48 insertions(+), 5 deletions(-) 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 103d6d7b3..de6123fbf 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 @@ -253,7 +253,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override public void showDialog() { - SiteDialog.create(this).show(); + SiteDialog.create(this).filter(true).show(); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java index 902b11509..fafc0a872 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.content.Intent; import android.text.Editable; import android.text.TextUtils; +import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; @@ -25,6 +26,7 @@ import com.fongmi.android.tv.ui.adapter.WordAdapter; import com.fongmi.android.tv.ui.custom.CustomKeyboard; import com.fongmi.android.tv.ui.custom.CustomListener; import com.fongmi.android.tv.ui.custom.SpaceItemDecoration; +import com.fongmi.android.tv.ui.custom.dialog.SiteDialog; import com.fongmi.android.tv.utils.Utils; import java.io.IOException; @@ -141,6 +143,12 @@ public class SearchActivity extends BaseActivity implements WordAdapter.OnClickL App.post(() -> mHistoryAdapter.add(keyword), 250); } + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + if (Utils.isMenuKey(event)) SiteDialog.create(this).search(true).show(); + return super.dispatchKeyEvent(event); + } + @Override public void onRemote() { PushActivity.start(this); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index dc432d498..99d73a57b 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -71,7 +71,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit @Override protected void initEvent() { - mBinding.vodHome.setOnClickListener(view -> SiteDialog.create(this).show()); + mBinding.vodHome.setOnClickListener(view -> SiteDialog.create(this).all().show()); mBinding.liveHome.setOnClickListener(view -> LiveDialog.create(this).show()); mBinding.vod.setOnClickListener(view -> ConfigDialog.create(this).type(0).show()); mBinding.live.setOnClickListener(view -> ConfigDialog.create(this).type(1).show()); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java index 0d2015e75..f96ae2336 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java @@ -22,16 +22,35 @@ public class SiteDialog implements SitePresenter.OnClickListener { private final DialogSiteBinding binding; private final SiteCallback callback; private final AlertDialog dialog; + private SitePresenter presenter; + private boolean search; + private boolean filter; public static SiteDialog create(Activity activity) { return new SiteDialog(activity); } public SiteDialog(Activity activity) { - this.callback = (SiteCallback) activity; + this.callback = (activity instanceof SiteCallback) ? (SiteCallback) activity : null; this.binding = DialogSiteBinding.inflate(LayoutInflater.from(activity)); this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); - this.adapter = new ArrayObjectAdapter(new SitePresenter(this)); + this.adapter = new ArrayObjectAdapter(presenter = new SitePresenter(this)); + } + + public SiteDialog search(boolean search) { + this.presenter.search(this.search = search); + return this; + } + + public SiteDialog filter(boolean filter) { + this.presenter.filter(this.filter = filter); + return this; + } + + public SiteDialog all() { + this.presenter.search(this.search = true); + this.presenter.filter(this.filter = true); + return this; } public void show() { @@ -58,6 +77,7 @@ public class SiteDialog implements SitePresenter.OnClickListener { @Override public void onTextClick(Site item) { + if (callback == null) return; callback.setSite(item); dialog.dismiss(); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/SitePresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/SitePresenter.java index 804b025bf..af85de973 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/SitePresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/SitePresenter.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.ui.presenter; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; @@ -12,11 +13,23 @@ import com.fongmi.android.tv.databinding.AdapterSiteBinding; public class SitePresenter extends Presenter { private final OnClickListener mListener; + private boolean search; + private boolean filter; public SitePresenter(OnClickListener listener) { this.mListener = listener; } + public SitePresenter search(boolean search) { + this.search = search; + return this; + } + + public SitePresenter filter(boolean filter) { + this.filter = filter; + return this; + } + public interface OnClickListener { void onTextClick(Site item); @@ -42,6 +55,8 @@ public class SitePresenter extends Presenter { holder.binding.text.setText(item.getActivatedName()); holder.binding.filter.setImageResource(item.getFilterIcon()); holder.binding.search.setImageResource(item.getSearchIcon()); + holder.binding.search.setVisibility(search ? View.VISIBLE : View.GONE); + holder.binding.filter.setVisibility(filter ? View.VISIBLE : View.GONE); holder.binding.text.setOnClickListener(v -> mListener.onTextClick(item)); holder.binding.search.setOnClickListener(v -> mListener.onSearchClick(item)); holder.binding.filter.setOnClickListener(v -> mListener.onFilterClick(item)); diff --git a/app/src/leanback/res/layout/adapter_site.xml b/app/src/leanback/res/layout/adapter_site.xml index 5a71019ed..537d13d55 100644 --- a/app/src/leanback/res/layout/adapter_site.xml +++ b/app/src/leanback/res/layout/adapter_site.xml @@ -25,7 +25,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="12dp" - android:layout_marginEnd="12dp" android:background="@drawable/selector_text" android:focusable="true" android:focusableInTouchMode="true" @@ -37,6 +36,7 @@ android:id="@+id/filter" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginStart="12dp" android:background="@drawable/selector_text" android:focusable="true" android:focusableInTouchMode="true"