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 586df36de..c245fbcc1 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 @@ -38,6 +38,7 @@ import com.fongmi.android.tv.event.CastEvent; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.event.ServerEvent; import com.fongmi.android.tv.impl.Callback; +import com.fongmi.android.tv.impl.ConfigCallback; import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.player.Source; import com.fongmi.android.tv.server.Server; @@ -45,6 +46,7 @@ import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.custom.CustomRowPresenter; import com.fongmi.android.tv.ui.custom.CustomSelector; import com.fongmi.android.tv.ui.custom.CustomTitleView; +import com.fongmi.android.tv.ui.dialog.HistoryDialog; import com.fongmi.android.tv.ui.dialog.SiteDialog; import com.fongmi.android.tv.ui.presenter.FuncPresenter; import com.fongmi.android.tv.ui.presenter.HeaderPresenter; @@ -66,7 +68,7 @@ import org.greenrobot.eventbus.ThreadMode; import java.util.List; -public class HomeActivity extends BaseActivity implements CustomTitleView.Listener, VodPresenter.OnClickListener, FuncPresenter.OnClickListener, HistoryPresenter.OnClickListener { +public class HomeActivity extends BaseActivity implements CustomTitleView.Listener, VodPresenter.OnClickListener, FuncPresenter.OnClickListener, HistoryPresenter.OnClickListener, ConfigCallback { private ActivityHomeBinding mBinding; private ArrayObjectAdapter mHistoryAdapter; @@ -165,6 +167,11 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen recommend = homeRecommend; } + @Override + public void onSettingVodHistory() { + HistoryDialog.create(this).type(0).show(); + } + private void initConfig() { if (isLoading()) return; WallConfig.get().init(); @@ -177,6 +184,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen return new Callback() { @Override public void success() { + Notify.dismiss(); mBinding.progressLayout.showContent(); checkAction(getIntent()); getHistory(); @@ -186,6 +194,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override public void error(String msg) { + Notify.dismiss(); if (TextUtils.isEmpty(msg) && AppDatabase.getBackup().exists()) onRestore(); else mBinding.progressLayout.showContent(); mResult = Result.empty(); @@ -205,6 +214,24 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen })); } + @Override + public void setConfig(Config config) { + if (config.getUrl().startsWith("file") && !PermissionX.isGranted(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> load(config)); + } else { + load(config); + } + } + + private void load(Config config) { + switch (config.getType()) { + case 0: + Notify.progress(this); + VodConfig.load(config, getCallback()); + break; + } + } + private void loadLive(String url) { LiveConfig.load(Config.find(url, 1), new Callback() { @Override 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 89c84b72b..d3681895e 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 @@ -42,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 KeyUtil.isEnterKey(event) || KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event) || (KeyUtil.isUpKey(event) && !coolDown) || (KeyUtil.isDownKey(event) && !coolDown); } @Override @@ -69,6 +69,8 @@ public class CustomTitleView extends AppCompatTextView { listener.setSite(getSite(false)); } else if (event.getAction() == KeyEvent.ACTION_DOWN && KeyUtil.isUpKey(event)) { onKeyUp(); + } else if (event.getAction() == KeyEvent.ACTION_DOWN && KeyUtil.isDownKey(event)) { + onKeyDown(); } return true; } @@ -79,6 +81,12 @@ public class CustomTitleView extends AppCompatTextView { coolDown = true; } + private void onKeyDown() { + App.post(() -> coolDown = false, 3000); + listener.onSettingVodHistory(); + coolDown = true; + } + private Site getSite(boolean next) { List items = VodConfig.get().getSites(); int position = VodConfig.getHomeIndex(); @@ -92,5 +100,7 @@ public class CustomTitleView extends AppCompatTextView { void showDialog(); void onRefresh(); + + void onSettingVodHistory(); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/HistoryDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/HistoryDialog.java index 8a661b9e9..0cb965cb3 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/HistoryDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/HistoryDialog.java @@ -41,6 +41,7 @@ public class HistoryDialog implements ConfigAdapter.OnClickListener { public void show() { setRecyclerView(); setDialog(); + binding.recycler.requestFocus(); } private void setRecyclerView() { diff --git a/app/src/leanback/res/drawable/selector_image.xml b/app/src/leanback/res/drawable/selector_image.xml index b007ef5c1..f6b081a5c 100644 --- a/app/src/leanback/res/drawable/selector_image.xml +++ b/app/src/leanback/res/drawable/selector_image.xml @@ -10,7 +10,7 @@ - + \ No newline at end of file