From 3e4dcd24fd97002584537d0d99df6b97b24a28f9 Mon Sep 17 00:00:00 2001 From: okjack Date: Thu, 29 Feb 2024 13:56:06 +0800 Subject: [PATCH] update --- .../android/tv/ui/activity/HomeActivity.java | 34 ++++++------------- .../tv/ui/activity/SettingCustomActivity.java | 12 +++---- .../android/tv/ui/custom/CustomTitleView.java | 22 +++++++++++- .../res/layout/activity_setting_custom.xml | 8 ++--- .../java/com/fongmi/android/tv/Setting.java | 8 ++--- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 8 files changed, 48 insertions(+), 42 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 c934efdd8..dcd74c5f0 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 @@ -79,7 +79,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private boolean confirm; private Result mResult; private Clock mClock; - private int recommend; private Site getHome() { return VodConfig.get().getHome(); @@ -138,7 +137,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private void setTitleView() { mBinding.homeSiteLock.setVisibility(Setting.isHomeSiteLock() ? View.VISIBLE : View.GONE); - mBinding.settingVodHistory.setVisibility(Setting.isHomeSiteLock() ? View.GONE : View.VISIBLE); + mBinding.settingVodHistory.setVisibility(Setting.isHomeSiteLock() || !Setting.isHomeChangeConfig() ? View.GONE : View.VISIBLE); } private void setRecyclerView() { @@ -162,11 +161,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private void setAdapter() { mAdapter.add(getFuncRow()); - int homeRecommend = Setting.getHomeRecommend(); - if (homeRecommend == 0) mAdapter.add(R.string.home_history); - if (homeRecommend == 1) mAdapter.add(R.string.home_recommend); - if (homeRecommend == 0) mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this)); - recommend = homeRecommend; + mAdapter.add(R.string.home_history); + mAdapter.add(R.string.home_recommend); + mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this)); } private void onSettingVodHistory(View view) { @@ -253,14 +250,13 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen int index = getRecommendIndex(); String title = getHome().getName(); mBinding.title.setText(title.isEmpty() ? ResUtil.getString(R.string.app_name) : title); - if (mAdapter.size() > index && index > -1) mAdapter.removeItems(index, mAdapter.size() - index); + if (mAdapter.size() > index) mAdapter.removeItems(index, mAdapter.size() - index); if (getHome().getKey().isEmpty()) return; mViewModel.homeContent(); - if (Setting.getHomeRecommend() == 1) mAdapter.add("progress"); + mAdapter.add("progress"); } private void addVideo(Result result) { - if (Setting.getHomeRecommend() == 0) return; Style style = result.getStyle(getHome().getStyle()); for (List items : Lists.partition(result.getList(), Product.getColumn(style))) { ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(this, style)); @@ -276,7 +272,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen adapter.add(Func.create(R.string.home_search)); adapter.add(Func.create(R.string.home_keep)); adapter.add(Func.create(R.string.home_push)); - if (Setting.getHomeRecommend() == 1) adapter.add(Func.create(R.string.home_history)); + adapter.add(Func.create(R.string.home_history)); adapter.add(Func.create(R.string.home_setting)); ((Func) adapter.get(0)).setNextFocusLeft(((Func) adapter.get(adapter.size() - 1)).getId()); ((Func) adapter.get(adapter.size() - 1)).setNextFocusRight(((Func) adapter.get(0)).getId()); @@ -288,13 +284,13 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void getHistory(boolean renew) { - if (Setting.getHomeRecommend() == 1) return; List items = History.get(); int historyIndex = getHistoryIndex(); - int totalSize = mAdapter.size(); + int recommendIndex = getRecommendIndex(); + boolean exist = recommendIndex - historyIndex == 2; if (renew) mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this)); - if (renew) mAdapter.removeItems(historyIndex, 1); - if (totalSize == historyIndex || renew) mAdapter.add(historyIndex, new ListRow(mHistoryAdapter)); + if ((items.isEmpty() && exist) || (renew && exist)) mAdapter.removeItems(historyIndex, 1); + if ((items.size() > 0 && !exist) || (renew && exist)) mAdapter.add(historyIndex, new ListRow(mHistoryAdapter)); mHistoryAdapter.setItems(items, null); } @@ -486,14 +482,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen super.onResume(); mClock.start(); setTitleView(); - reloadHomeRecommend(); - } - - private void reloadHomeRecommend() { - if (recommend == Setting.getHomeRecommend()) return; - mAdapter.clear(); - setAdapter(); - initConfig(); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java index 60672f0f2..360c74e2e 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java @@ -23,7 +23,6 @@ public class SettingCustomActivity extends BaseActivity { private String[] episode; private String[] fullscreenMenuKey; private String[] smallWindowBackKey; - private String[] homeRecommend; @Override protected ViewBinding getBinding() { @@ -53,7 +52,7 @@ public class SettingCustomActivity extends BaseActivity { mBinding.homeSiteLockText.setText(getSwitch(Setting.isHomeSiteLock())); mBinding.incognitoText.setText(getSwitch(Setting.isIncognito())); mBinding.smallWindowBackKeyText.setText((smallWindowBackKey = ResUtil.getStringArray(R.array.select_small_window_back_key))[Setting.getSmallWindowBackKey()]); - mBinding.homeRecommonedText.setText((homeRecommend = ResUtil.getStringArray(R.array.select_home_recommend))[Setting.getHomeRecommend()]); + mBinding.homeChangConfigText.setText(getSwitch(Setting.isHomeChangeConfig())); } @Override @@ -71,7 +70,7 @@ public class SettingCustomActivity extends BaseActivity { mBinding.homeSiteLock.setOnClickListener(this::setHomeSiteLock); mBinding.incognito.setOnClickListener(this::setIncognito); mBinding.smallWindowBackKey.setOnClickListener(this::setSmallWindowBackKey); - mBinding.homeRecommoned.setOnClickListener(this::setHomeRecommend); + mBinding.homeChangConfig.setOnClickListener(this::setHomeChangeConfig); } private void setQuality(View view) { @@ -154,10 +153,9 @@ public class SettingCustomActivity extends BaseActivity { mBinding.smallWindowBackKeyText.setText(smallWindowBackKey[index]); } - private void setHomeRecommend(View view) { - int index = Setting.getHomeRecommend(); - Setting.putHomeRecommend(index = index == homeRecommend.length - 1 ? 0 : ++index); - mBinding.homeRecommonedText.setText(homeRecommend[index]); + private void setHomeChangeConfig(View view) { + Setting.putHomeChangeConfig(!Setting.isHomeChangeConfig()); + mBinding.homeChangConfigText.setText(getSwitch(Setting.isHomeChangeConfig())); } } 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 ba52f5a56..6c5c4bfa6 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 @@ -12,10 +12,15 @@ import androidx.appcompat.widget.AppCompatTextView; import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.Setting; +import com.fongmi.android.tv.api.config.VodConfig; +import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.impl.SiteCallback; import com.fongmi.android.tv.utils.KeyUtil; import com.fongmi.android.tv.utils.ResUtil; +import java.util.List; + public class CustomTitleView extends AppCompatTextView { private Listener listener; @@ -37,7 +42,8 @@ public class CustomTitleView extends AppCompatTextView { } private boolean hasEvent(KeyEvent event) { - return KeyUtil.isEnterKey(event) || (KeyUtil.isUpKey(event) && !coolDown); + if (Setting.isHomeChangeConfig()) return KeyUtil.isEnterKey(event) || (KeyUtil.isUpKey(event) && !coolDown); + return KeyUtil.isEnterKey(event) || KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event) || (KeyUtil.isUpKey(event) && !coolDown); } @Override @@ -49,6 +55,8 @@ public class CustomTitleView extends AppCompatTextView { @Override public boolean dispatchKeyEvent(KeyEvent event) { + if (Setting.isHomeSiteLock()) return false; + if (VodConfig.get().getSites().isEmpty()) return false; if (hasEvent(event)) return onKeyDown(event); else return super.dispatchKeyEvent(event); } @@ -56,6 +64,10 @@ public class CustomTitleView extends AppCompatTextView { private boolean onKeyDown(KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_UP && KeyUtil.isEnterKey(event)) { listener.showDialog(); + } else if (event.getAction() == KeyEvent.ACTION_DOWN && KeyUtil.isLeftKey(event)) { + listener.setSite(getSite(true)); + } else if (event.getAction() == KeyEvent.ACTION_DOWN && KeyUtil.isRightKey(event)) { + listener.setSite(getSite(false)); } else if (event.getAction() == KeyEvent.ACTION_DOWN && KeyUtil.isUpKey(event)) { onKeyUp(); } @@ -68,6 +80,14 @@ public class CustomTitleView extends AppCompatTextView { coolDown = true; } + private Site getSite(boolean next) { + List items = VodConfig.get().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); + } + public interface Listener extends SiteCallback { void showDialog(); diff --git a/app/src/leanback/res/layout/activity_setting_custom.xml b/app/src/leanback/res/layout/activity_setting_custom.xml index c7067a64e..e029c03ff 100644 --- a/app/src/leanback/res/layout/activity_setting_custom.xml +++ b/app/src/leanback/res/layout/activity_setting_custom.xml @@ -420,7 +420,7 @@ android:orientation="horizontal"> + tools:text="开" /> diff --git a/app/src/main/java/com/fongmi/android/tv/Setting.java b/app/src/main/java/com/fongmi/android/tv/Setting.java index 509d95106..ecb8d2126 100644 --- a/app/src/main/java/com/fongmi/android/tv/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/Setting.java @@ -413,12 +413,12 @@ public class Setting { return Prefers.getInt("small_window_back_key", 0); } - public static void putHomeRecommend(int recommend) { - Prefers.put("home_recommend", recommend); + public static void putHomeChangeConfig(boolean change) { + Prefers.put("home_change_config", change); } - public static int getHomeRecommend() { - return Prefers.getInt("home_recommend", 0); + public static boolean isHomeChangeConfig() { + return Prefers.getBoolean("home_change_config", false); } } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 3fd148754..69c33d235 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -80,7 +80,7 @@ 首页源锁定 无痕模式 小窗返回键 - 首页推荐位 + 首页换线 DoH Proxy 缓存 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 97997a45d..739b8a506 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -80,7 +80,7 @@ 首頁源鎖定 無痕模式 小窗返回鍵 - 首页推薦位 + 首页換線 DoH Proxy 暫存 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7595fda53..0533c90bf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -80,7 +80,7 @@ Home site lock Incognito mode Small window back key - Home recommend + Home change config DoH Proxy Cache