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 9301534cc..8bfd3f14a 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 @@ -3,6 +3,7 @@ package com.fongmi.android.tv.ui.activity; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; import android.view.KeyEvent; import android.view.View; @@ -69,7 +70,9 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Optional; public class HomeActivity extends BaseActivity implements CustomTitleView.Listener, VodPresenter.OnClickListener, FuncPresenter.OnClickListener, HistoryPresenter.OnClickListener { @@ -83,10 +86,14 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private Result mResult; private Clock mClock; - private Site getHome() { + private Site getSite() { return VodConfig.get().getHome(); } + private Config getConfig() { + return VodConfig.get().getConfig(); + } + @Override protected ViewBinding getBinding() { return mBinding = ActivityHomeBinding.inflate(getLayoutInflater()); @@ -106,6 +113,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override protected void initView() { + mResult = Result.empty(); mClock = Clock.create(mBinding.clock); mBinding.progressLayout.showProgress(); Updater.create().start(this); @@ -114,6 +122,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen setViewModel(); setAdapter(); initConfig(); + setTitle(); setLogo(); } @@ -168,6 +177,12 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen mAdapter.add(R.string.home_recommend); } + private void setTitle() { + List items = Arrays.asList(getSite().getName(), getConfig().getName(), getString(R.string.app_name)); + Optional optional = items.stream().filter(s -> !TextUtils.isEmpty(s)).findFirst(); + optional.ifPresent(s -> mBinding.title.setText(s)); + } + private void initConfig() { if (isLoading()) return; WallConfig.get().init(); @@ -222,18 +237,17 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void getVideo() { + setTitle(); mResult = Result.empty(); int index = getRecommendIndex(); - String title = getHome().getName(); - mBinding.title.setText(title.isEmpty() ? getString(R.string.app_name) : title); if (mAdapter.size() > index) mAdapter.removeItems(index, mAdapter.size() - index); - if (getHome().getKey().isEmpty()) return; + if (getSite().getKey().isEmpty()) return; mViewModel.homeContent(); mAdapter.add("progress"); } private void addVideo(Result result) { - Style style = result.getStyle(getHome().getStyle()); + Style style = result.getStyle(getSite().getStyle()); for (List items : Lists.partition(result.getList(), Product.getColumn(style))) { ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(this, style)); adapter.setItems(items, new BaseDiffCallback()); @@ -387,9 +401,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override public void onItemClick(Vod item) { - if (item.isAction()) mViewModel.action(getHome().getKey(), item.getAction()); - else if (getHome().isIndex()) CollectActivity.start(this, item.getVodName()); - else VideoActivity.start(this, getHome().getKey(), item.getVodId(), item.getVodName(), item.getVodPic()); + if (item.isAction()) mViewModel.action(getSite().getKey(), item.getAction()); + else if (getSite().isIndex()) CollectActivity.start(this, item.getVodName()); + else VideoActivity.start(this, getSite().getKey(), item.getVodId(), item.getVodName(), item.getVodPic()); } @Override 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 7753dbafc..4793792d3 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 @@ -690,11 +690,15 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick public void setConfig(Config config) { Config current = LiveConfig.get().getConfig(); LiveConfig.load(config, getCallback(current)); - showProgress(); } private Callback getCallback(Config config) { return new Callback() { + @Override + public void start() { + showProgress(); + } + @Override public void success() { RefreshEvent.config(); 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 bcb27b90d..5ce2bc1c1 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 @@ -133,7 +133,6 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit if (config.getUrl().startsWith("file")) { PermissionUtil.requestFile(this, allGranted -> load(config)); } else { - Notify.progress(this); load(config); } } @@ -155,6 +154,11 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit private Callback getCallback(int type) { return new Callback() { + @Override + public void start() { + Notify.progress(getActivity()); + } + @Override public void success(String result) { Notify.show(result); @@ -251,7 +255,6 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit private void setWallRefresh(View view) { Setting.putWall(0); - Notify.progress(this); WallConfig.get().load(getCallback(2)); } @@ -278,7 +281,6 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit @Override public void setDoh(Doh doh) { - Notify.progress(this); OkHttp.get().setDoh(doh); Setting.putDoh(doh.toString()); mBinding.dohText.setText(doh.getName()); @@ -313,7 +315,6 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit @Override public void success() { Notify.show(R.string.restore_success); - Notify.progress(getActivity()); setOtherText(); initConfig(); } diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java index 52ce59e4e..b5734a262 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java @@ -30,7 +30,6 @@ import com.google.gson.JsonObject; import java.io.File; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.Future; @@ -115,6 +114,7 @@ public class LiveConfig { public void load(Callback callback) { if (future != null && !future.isDone()) future.cancel(true); future = App.submit(() -> loadConfig(callback)); + callback.start(); } private void loadConfig(Callback callback) { @@ -131,8 +131,8 @@ public class LiveConfig { private void parseText(String text, Callback callback) { Live live = new Live(parseName(config.getUrl()), config.getUrl()).sync(); + lives = new ArrayList<>(List.of(live)); LiveParser.text(live, text); - lives = Arrays.asList(live); setHome(live, true); App.post(callback::success); } diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java index 0132190b0..ba2b5eaf8 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java @@ -112,6 +112,7 @@ public class VodConfig { public void load(Callback callback) { if (future != null && !future.isDone()) future.cancel(true); future = App.submit(() -> loadConfig(callback)); + callback.start(); } private void loadConfig(Callback callback) { diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java index cce0c3278..5f177fd0a 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java @@ -78,6 +78,7 @@ public class WallConfig { public void load(Callback callback) { if (future != null && !future.isDone()) future.cancel(true); future = App.submit(() -> loadConfig(callback)); + callback.start(); } private void loadConfig(Callback callback) { diff --git a/app/src/main/java/com/fongmi/android/tv/impl/Callback.java b/app/src/main/java/com/fongmi/android/tv/impl/Callback.java index 2b0e34bc4..7e0cc0985 100644 --- a/app/src/main/java/com/fongmi/android/tv/impl/Callback.java +++ b/app/src/main/java/com/fongmi/android/tv/impl/Callback.java @@ -18,6 +18,9 @@ public class Callback implements okhttp3.Callback { public void error() { } + public void start() { + } + public void error(String msg) { } 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 fafc446bf..2290dcf83 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 @@ -724,11 +724,15 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener public void setConfig(Config config) { Config current = LiveConfig.get().getConfig(); LiveConfig.load(config, getCallback(current)); - showProgress(); } private Callback getCallback(Config config) { return new Callback() { + @Override + public void start() { + showProgress(); + } + @Override public void success() { RefreshEvent.config(); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java index 548931bdc..41aa95082 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java @@ -142,7 +142,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit if (config.getUrl().startsWith("file")) { PermissionUtil.requestFile(this, allGranted -> load(config)); } else { - Notify.progress(requireActivity()); load(config); } } @@ -164,6 +163,11 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit private Callback getCallback(int type) { return new Callback() { + @Override + public void start() { + Notify.progress(requireActivity()); + } + @Override public void success(String result) { Notify.show(result); @@ -258,7 +262,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit private void setWallRefresh(View view) { Setting.putWall(0); - Notify.progress(requireActivity()); WallConfig.get().load(getCallback(2)); } @@ -290,7 +293,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit private void setDoh(Doh doh) { OkHttp.get().setDoh(doh); - Notify.progress(requireActivity()); Setting.putDoh(doh.toString()); mBinding.dohText.setText(doh.getName()); VodConfig.load(Config.vod(), getCallback(0)); @@ -324,7 +326,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit @Override public void success() { Notify.show(R.string.restore_success); - Notify.progress(requireActivity()); setOtherText(); initConfig(); } 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 fe0087897..df0f6ee2a 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 @@ -2,6 +2,7 @@ package com.fongmi.android.tv.ui.fragment; import android.app.Activity; import android.content.Intent; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -55,7 +56,9 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Optional; public class VodFragment extends BaseFragment implements ConfigCallback, SiteCallback, FilterCallback, TypeAdapter.OnClickListener { @@ -76,6 +79,10 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal return VodConfig.get().getHome(); } + private Config getConfig() { + return VodConfig.get().getConfig(); + } + @Override protected ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) { return mBinding = FragmentVodBinding.inflate(inflater, container, false); @@ -88,6 +95,7 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal setRecyclerView(); setViewModel(); showProgress(); + setTitle(); setLogo(); } @@ -159,6 +167,12 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal } } + private void setTitle() { + List items = Arrays.asList(getSite().getName(), getConfig().getName(), getString(R.string.app_name)); + Optional optional = items.stream().filter(s -> !TextUtils.isEmpty(s)).findFirst(); + optional.ifPresent(s -> mBinding.title.setText(s)); + } + private void onTop(View view) { getFragment().scrollToTop(); mBinding.top.setVisibility(View.INVISIBLE); @@ -209,13 +223,12 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal } private void homeContent() { + setTitle(); showProgress(); setFabVisible(0); mAdapter.clear(); mViewModel.homeContent(); - String title = getSite().getName(); mBinding.pager.setAdapter(new PageAdapter(getChildFragmentManager())); - mBinding.title.setText(title.isEmpty() ? getString(R.string.app_name) : title); } public Result getResult() { @@ -258,9 +271,15 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal @Override public void setConfig(Config config) { - hideContent(); - showProgress(); VodConfig.load(config, new Callback() { + @Override + public void start() { + showProgress(); + hideContent(); + setTitle(); + setLogo(); + } + @Override public void success() { RefreshEvent.config();