diff --git a/app/build.gradle b/app/build.gradle index 8034d63c8..4d7be74be 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 21 targetSdk 28 versionCode 233 - versionName "0506" + versionName "0507" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] 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 ab4f2a1d1..781636d1f 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 @@ -487,7 +487,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private RequestListener getListener() { - return new RequestListener<>() { + return new RequestListener() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, @NonNull Target target, boolean isFirstResource) { mBinding.logo.setVisibility(View.GONE); 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 def02a36e..9ebdf683e 100644 --- a/app/src/main/java/com/fongmi/android/tv/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/Setting.java @@ -424,12 +424,12 @@ public class Setting { return Prefers.getInt("small_window_back_key", 0); } - public static void putHomeChangeConfig(boolean change) { - Prefers.put("home_change_config", change); + public static void putHomeDisplayName(boolean change) { + Prefers.put("home_display_name", change); } - public static boolean isHomeChangeConfig() { - return Prefers.getBoolean("home_change_config", false); + public static boolean isHomeDisplayName() { + return Prefers.getBoolean("home_display_name", false); } public static boolean isAggregatedSearch() { diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 8abf25408..ad0c89ac0 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -87,7 +87,7 @@ 首页源锁定 无痕模式 小窗返回键 - 首页换线 + 首页显示站源名 首页UI 首页按钮 DoH diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a2602949a..42b64179e 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -87,7 +87,7 @@ 首頁源鎖定 無痕模式 小窗返回鍵 - 首頁換線 + 首頁显示站源名 首頁UI 首頁按鈕 DoH diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 351422b45..87dc0f09a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -87,7 +87,7 @@ Home site lock Incognito mode Small window back key - Home change config + Home display name Home ui style Home buttons DoH diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java index a5bf3012d..600e42cf0 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java @@ -46,7 +46,7 @@ public class SettingCustomFragment extends BaseFragment { mBinding.speedText.setText(getSpeedText()); mBinding.incognitoText.setText(getSwitch(Setting.isIncognito())); mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch())); - mBinding.homeChangeConfigText.setText(getSwitch(Setting.isHomeChangeConfig())); + mBinding.homeDisplayNameText.setText(getSwitch(Setting.isHomeDisplayName())); mBinding.languageText.setText((lang = ResUtil.getStringArray(R.array.select_language))[Setting.getLanguage()]); } @@ -59,7 +59,7 @@ public class SettingCustomFragment extends BaseFragment { mBinding.speed.setOnLongClickListener(this::resetSpeed); mBinding.incognito.setOnClickListener(this::setIncognito); mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch); - mBinding.homeChangeConfig.setOnClickListener(this::setHomeChangeConfig); + mBinding.homeDisplayName.setOnClickListener(this::setHomeDisplayName); mBinding.language.setOnClickListener(this::setLanguage); } @@ -111,9 +111,9 @@ public class SettingCustomFragment extends BaseFragment { mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch())); } - private void setHomeChangeConfig(View view) { - Setting.putHomeChangeConfig(!Setting.isHomeChangeConfig()); - mBinding.homeChangeConfigText.setText(getSwitch(Setting.isHomeChangeConfig())); + private void setHomeDisplayName(View view) { + Setting.putHomeDisplayName(!Setting.isHomeDisplayName()); + mBinding.homeDisplayNameText.setText(getSwitch(Setting.isHomeDisplayName())); RefreshEvent.config(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 8751f0860..358674750 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -23,11 +23,13 @@ import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; +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.Class; import com.fongmi.android.tv.bean.Config; +import com.fongmi.android.tv.bean.Hot; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.bean.Value; @@ -55,21 +57,31 @@ import com.fongmi.android.tv.utils.FileChooser; import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.ResUtil; +import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Trans; +import com.google.common.net.HttpHeaders; import com.permissionx.guolindev.PermissionX; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.io.IOException; +import java.security.SecureRandom; import java.util.ArrayList; import java.util.List; +import okhttp3.Call; +import okhttp3.Headers; +import okhttp3.Response; + public class VodFragment extends BaseFragment implements SiteCallback, FilterCallback, TypeAdapter.OnClickListener, ConfigCallback { private FragmentVodBinding mBinding; private SiteViewModel mViewModel; private TypeAdapter mAdapter; + private Runnable mRunnable; + private List mHots; private Result mResult; public static VodFragment newInstance() { @@ -93,8 +105,11 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal protected void initView() { EventBus.getDefault().register(this); setRecyclerView(); + setAppBarView(); setViewModel(); showProgress(); + initHot(); + getHot(); } @Override @@ -103,11 +118,13 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal mBinding.link.setOnClickListener(this::onLink); mBinding.logo.setOnClickListener(this::onLogo); mBinding.logo.setOnLongClickListener(this::onRefresh); + mBinding.hot.setOnClickListener(this::onHot); mBinding.site.setOnClickListener(this::onSite); mBinding.keep.setOnClickListener(this::onKeep); mBinding.retry.setOnClickListener(this::onRetry); mBinding.filter.setOnClickListener(this::onFilter); mBinding.search.setOnClickListener(this::onSearch); + mBinding.searchIcon.setOnClickListener(this::onSearchIcon); mBinding.history.setOnClickListener(this::onHistory); mBinding.pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override @@ -124,6 +141,12 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal mBinding.site.setText(site); } + private void setAppBarView() { + mBinding.searchInput.setVisibility(Setting.isHomeDisplayName() ? View.GONE : View.VISIBLE); + mBinding.siteView.setVisibility(Setting.isHomeDisplayName() ? View.VISIBLE : View.GONE); + mBinding.searchIcon.setVisibility(Setting.isHomeDisplayName() ? View.VISIBLE : View.GONE); + } + private void setRecyclerView() { mBinding.type.setHasFixedSize(true); mBinding.type.setItemAnimator(null); @@ -136,6 +159,26 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal mViewModel.result.observe(getViewLifecycleOwner(), result -> setAdapter(mResult = result)); } + private void initHot() { + mHots = Hot.get(Setting.getHot()); + App.post(mRunnable = this::updateHot, 0); + } + + private void getHot() { + OkHttp.newCall("https://api.web.360kan.com/v1/rank?cat=1", Headers.of(HttpHeaders.REFERER, "https://www.360kan.com/rank/general")).enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { + mHots = Hot.get(response.body().string()); + } + }); + } + + private void updateHot() { + App.post(mRunnable, 10 * 1000); + if (mHots.isEmpty() || mHots.size() < 10) return; + mBinding.hot.setText(mHots.get(new SecureRandom().nextInt(11))); + } + private Result handle(Result result) { List types = new ArrayList<>(); for (Class type : result.getTypes()) if (result.getFilters().containsKey(type.getTypeId())) type.setFilters(result.getFilters().get(type.getTypeId())); @@ -184,7 +227,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal } private void onLogo(View view) { - if (Setting.isHomeChangeConfig()) HistoryDialog.create(this).type(0).show(); + if (Setting.isHomeDisplayName()) HistoryDialog.create(this).type(0).show(); else SiteDialog.create(this).change().show(); } @@ -214,8 +257,16 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal if (mAdapter.getItemCount() > 0) FilterDialog.create().filter(mAdapter.get(mBinding.pager.getCurrentItem()).getFilters()).show(this); } + private void onHot(View view) { + CollectActivity.start(getActivity()); + } + private void onSearch(View view) { - CollectActivity.start(getActivity(), ""); + CollectActivity.start(getActivity(), mBinding.hot.getText().toString()); + } + + private void onSearchIcon(View view) { + CollectActivity.start(getActivity()); } private void onHistory(View view) { @@ -245,7 +296,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal } private RequestListener getListener() { - return new RequestListener<>() { + return new RequestListener() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, @NonNull Target target, boolean isFirstResource) { mBinding.logo.getLayoutParams().width = ResUtil.dp2px(24); @@ -319,6 +370,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal homeContent(); break; case CONFIG: + setAppBarView(); setLogo(); break; } @@ -380,6 +432,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal @Override public void onDestroyView() { super.onDestroyView(); + App.removeCallbacks(mRunnable); EventBus.getDefault().unregister(this); } diff --git a/app/src/mobile/res/layout/fragment_setting_custom.xml b/app/src/mobile/res/layout/fragment_setting_custom.xml index cfad70e6f..957008371 100644 --- a/app/src/mobile/res/layout/fragment_setting_custom.xml +++ b/app/src/mobile/res/layout/fragment_setting_custom.xml @@ -180,7 +180,7 @@ + android:orientation="horizontal" + android:visibility="gone"> + + + + + + + + + android:src="@drawable/ic_action_search" + android:visibility="gone" />