From f7737ce2761232e855a269d2af72cf872794fdb6 Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 12 Apr 2023 18:13:01 +0800 Subject: [PATCH] [mobile] add home retry button --- .../java/com/fongmi/android/tv/api/ApiConfig.java | 2 +- .../java/com/fongmi/android/tv/api/LiveConfig.java | 6 ++++-- .../java/com/fongmi/android/tv/api/WallConfig.java | 3 ++- .../main/java/com/fongmi/android/tv/bean/Config.java | 9 ++++++++- .../android/tv/ui/custom/dialog/ConfigDialog.java | 3 ++- .../fongmi/android/tv/ui/fragment/VodFragment.java | 11 +++++++++++ app/src/mobile/res/drawable/ic_vod_retry.xml | 10 ++++++++++ app/src/mobile/res/layout/dialog_cast.xml | 4 ++-- app/src/mobile/res/layout/fragment_vod.xml | 9 +++++++++ 9 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 app/src/mobile/res/drawable/ic_vod_retry.xml diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index e0b7c4dd2..d664a49ff 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -125,7 +125,7 @@ public class ApiConfig { try { checkJson(JsonParser.parseString(Decoder.getJson(config.getUrl())).getAsJsonObject(), callback); } catch (Exception e) { - if (config.getUrl().isEmpty()) App.post(() -> callback.error(0)); + if (TextUtils.isEmpty(config.getUrl())) App.post(() -> callback.error(0)); else loadCache(callback); LiveConfig.get().load(); e.printStackTrace(); diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java index 3726f9685..4e0f4e715 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java @@ -1,5 +1,7 @@ package com.fongmi.android.tv.api; +import android.text.TextUtils; + import com.fongmi.android.tv.App; import com.fongmi.android.tv.Product; import com.fongmi.android.tv.R; @@ -87,7 +89,7 @@ public class LiveConfig { parseConfig(Decoder.getJson(config.getUrl()), callback); } catch (Exception e) { e.printStackTrace(); - App.post(() -> callback.error(config.getUrl().isEmpty() ? 0 : R.string.error_config_get)); + App.post(() -> callback.error(TextUtils.isEmpty(config.getUrl()) ? 0 : R.string.error_config_get)); } } @@ -186,7 +188,7 @@ public class LiveConfig { } public boolean isSame(String url) { - return same || config.getUrl().isEmpty() || url.equals(config.getUrl()); + return same || TextUtils.isEmpty(config.getUrl()) || url.equals(config.getUrl()); } public List getLives() { diff --git a/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java b/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java index 67ef26b79..c2475bdce 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.api; import android.graphics.drawable.Drawable; +import android.text.TextUtils; import com.fongmi.android.tv.App; import com.fongmi.android.tv.Product; @@ -97,7 +98,7 @@ public class WallConfig { } public boolean isSame(String url) { - return same || config.getUrl().isEmpty() || url.equals(config.getUrl()); + return same || TextUtils.isEmpty(config.getUrl()) || url.equals(config.getUrl()); } public static void refresh(int index) { diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Config.java b/app/src/main/java/com/fongmi/android/tv/bean/Config.java index b0d563432..8b23f1577 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Config.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Config.java @@ -3,6 +3,7 @@ package com.fongmi.android.tv.bean; import android.text.TextUtils; import androidx.room.Entity; +import androidx.room.Ignore; import androidx.room.Index; import androidx.room.PrimaryKey; @@ -24,7 +25,7 @@ public class Config { private String parse; public static Config create(int type) { - return create("", type); + return new Config(type); } public static Config create(String url, int type) { @@ -35,6 +36,12 @@ public class Config { return new Config(url, name, type); } + @Ignore + public Config(int type) { + this.type = type; + this.id = -1; + } + public Config(String url, String name, int type) { this.url = url; this.name = name; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java index 2f69de1af..fa3643335 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.ui.custom.dialog; import android.content.DialogInterface; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.inputmethod.EditorInfo; @@ -57,8 +58,8 @@ public class ConfigDialog { private void initView() { binding.text.setText(url = getUrl()); - binding.text.setSelection(url.length()); binding.input.setEndIconOnClickListener(this::onChoose); + binding.text.setSelection(TextUtils.isEmpty(url) ? 0 : url.length()); } private void initEvent() { 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 6f1400306..8490c5582 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 @@ -96,6 +96,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal mBinding.link.setOnClickListener(this::onLink); mBinding.logo.setOnClickListener(this::onLogo); mBinding.keep.setOnClickListener(this::onKeep); + mBinding.retry.setOnClickListener(this::onRetry); mBinding.filter.setOnClickListener(this::onFilter); mBinding.search.setOnClickListener(this::onSearch); mBinding.history.setOnClickListener(this::onHistory); @@ -155,6 +156,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal EventBus.getDefault().post(result); setFabVisible(0); hideProgress(); + checkRetry(); } private void setFabVisible(int position) { @@ -170,6 +172,10 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal } } + private void checkRetry() { + mBinding.retry.setVisibility(mAdapter.getItemCount() == 0 ? View.VISIBLE : View.GONE); + } + private void onLink(View view) { if (ApiConfig.hasPush()) LinkDialog.create(this).show(); else mBinding.link.hide(); @@ -183,6 +189,10 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal KeepActivity.start(getActivity()); } + private void onRetry(View view) { + homeContent(); + } + private void onFilter(View view) { for (Fragment fragment : getChildFragmentManager().getFragments()) if (fragment instanceof BottomSheetDialogFragment) return; FilterDialog.create(this).filter(mAdapter.get(mBinding.pager.getCurrentItem()).getFilters()).show(getChildFragmentManager(), null); @@ -201,6 +211,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal } private void showProgress() { + mBinding.retry.setVisibility(View.GONE); mBinding.progress.getRoot().setVisibility(View.VISIBLE); } diff --git a/app/src/mobile/res/drawable/ic_vod_retry.xml b/app/src/mobile/res/drawable/ic_vod_retry.xml new file mode 100644 index 000000000..b524e4506 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_vod_retry.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/mobile/res/layout/dialog_cast.xml b/app/src/mobile/res/layout/dialog_cast.xml index f5b6ad7d6..d9df809cf 100644 --- a/app/src/mobile/res/layout/dialog_cast.xml +++ b/app/src/mobile/res/layout/dialog_cast.xml @@ -28,14 +28,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" - android:background="?android:attr/selectableItemBackgroundBorderless" + android:background="?attr/selectableItemBackgroundBorderless" android:src="@drawable/ic_cast_scan" /> diff --git a/app/src/mobile/res/layout/fragment_vod.xml b/app/src/mobile/res/layout/fragment_vod.xml index 41c2c3d96..43797f7df 100644 --- a/app/src/mobile/res/layout/fragment_vod.xml +++ b/app/src/mobile/res/layout/fragment_vod.xml @@ -99,6 +99,15 @@ android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + +