diff --git a/README.md b/README.md index ebaff3237..e38011f90 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ https://github.com/CatVodTVOfficial/CatVodTVJarLoader
searchable:搜索 (0:關閉、1:啟用)
filterable:篩選 (0:關閉、1:啟用)
-switchable:換源 (0:關閉、1:啟用)
+changeable:換源 (0:關閉、1:啟用)
playerType:播放器 (1:IJK、2:EXO)
### 直播欄位
diff --git a/app/build.gradle b/app/build.gradle
index c03cc6b76..38f672b63 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,8 +10,8 @@ android {
applicationId "com.fongmi.android.tv"
minSdk 21
targetSdk 29
- versionCode 62
- versionName "1.6.2"
+ versionCode 63
+ versionName "1.6.3"
ndk { abiFilters "armeabi-v7a" }
}
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
index 23ba86470..f4015ba27 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
@@ -288,7 +288,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mViewModel.player.observe(this, result -> {
boolean useParse = (result.getPlayUrl().isEmpty() && ApiConfig.get().getFlags().contains(result.getFlag())) || result.getJx() == 1;
mBinding.control.parseLayout.setVisibility(mParseAdapter.size() > 0 && useParse ? View.VISIBLE : View.GONE);
- int timeout = getSite().isSwitchable() ? Constant.TIMEOUT_PLAY : -1;
+ int timeout = getSite().isChangeable() ? Constant.TIMEOUT_PLAY : -1;
mPlayers.start(result, useParse, timeout);
resetFocus();
});
@@ -806,7 +806,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
}
private void startFlow() {
- if (!getSite().isSwitchable()) return;
+ if (!getSite().isChangeable()) return;
if (isVisible(mBinding.control.parseLayout)) checkParse();
else checkFlag();
}
@@ -848,7 +848,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mExecutor = Executors.newFixedThreadPool(Constant.THREAD_POOL);
for (Site site : ApiConfig.get().getSites()) {
if (site.getKey().equals(getKey())) continue;
- if (isAutoMode() && !site.isSwitchable()) continue;
+ if (isAutoMode() && !site.isChangeable()) continue;
if (site.isSearchable()) mExecutor.execute(() -> search(site, keyword));
}
}
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java
index abc6ef36f..eba419e2a 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java
@@ -23,6 +23,7 @@ public class SiteDialog implements SitePresenter.OnClickListener {
private final SitePresenter presenter;
private final SiteCallback callback;
private final AlertDialog dialog;
+ private float width;
public static SiteDialog create(Activity activity) {
return new SiteDialog(activity);
@@ -37,17 +38,21 @@ public class SiteDialog implements SitePresenter.OnClickListener {
public SiteDialog search(boolean search) {
this.presenter.search(search);
+ this.width = 0.4f;
return this;
}
public SiteDialog filter(boolean filter) {
this.presenter.filter(filter);
+ this.width = 0.4f;
return this;
}
public SiteDialog all() {
this.presenter.search(true);
this.presenter.filter(true);
+ this.presenter.change(true);
+ this.width = 0.5f;
return this;
}
@@ -66,7 +71,7 @@ public class SiteDialog implements SitePresenter.OnClickListener {
private void setDialog() {
if (adapter.size() == 0) return;
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
- params.width = (int) (ResUtil.getScreenWidthPx() * 0.4f);
+ params.width = (int) (ResUtil.getScreenWidthPx() * width);
params.height = (int) (ResUtil.getScreenHeightPx() * 0.745f);
dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
@@ -92,6 +97,12 @@ public class SiteDialog implements SitePresenter.OnClickListener {
adapter.notifyArrayItemRangeChanged(0, adapter.size());
}
+ @Override
+ public void onChangeClick(Site item) {
+ item.setChangeable(!item.isChangeable()).save();
+ adapter.notifyArrayItemRangeChanged(0, adapter.size());
+ }
+
@Override
public boolean onSearchLongClick(Site item) {
boolean result = !item.isSearchable();
@@ -107,4 +118,12 @@ public class SiteDialog implements SitePresenter.OnClickListener {
adapter.notifyArrayItemRangeChanged(0, adapter.size());
return true;
}
+
+ @Override
+ public boolean onChangeLongClick(Site item) {
+ boolean result = !item.isChangeable();
+ for (Site site : ApiConfig.get().getSites()) site.setChangeable(result).save();
+ adapter.notifyArrayItemRangeChanged(0, adapter.size());
+ return true;
+ }
}
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/SitePresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/SitePresenter.java
index 1d1e8c3aa..215df6278 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/SitePresenter.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/SitePresenter.java
@@ -15,6 +15,7 @@ public class SitePresenter extends Presenter {
private final OnClickListener mListener;
private boolean search;
private boolean filter;
+ private boolean change;
public SitePresenter(OnClickListener listener) {
this.mListener = listener;
@@ -30,6 +31,11 @@ public class SitePresenter extends Presenter {
return this;
}
+ public SitePresenter change(boolean change) {
+ this.change = change;
+ return this;
+ }
+
public interface OnClickListener {
void onTextClick(Site item);
@@ -38,9 +44,13 @@ public class SitePresenter extends Presenter {
void onFilterClick(Site item);
+ void onChangeClick(Site item);
+
boolean onSearchLongClick(Site item);
boolean onFilterLongClick(Site item);
+
+ boolean onChangeLongClick(Site item);
}
@Override
@@ -55,17 +65,19 @@ public class SitePresenter extends Presenter {
holder.binding.text.setText(item.getName());
holder.binding.text.setFocusable(!search || filter);
holder.binding.text.setActivated(item.isActivated());
- holder.binding.filter.setActivated(item.isActivated());
- holder.binding.search.setActivated(item.isActivated());
holder.binding.filter.setImageResource(item.getFilterIcon());
holder.binding.search.setImageResource(item.getSearchIcon());
+ holder.binding.change.setImageResource(item.getChangeIcon());
holder.binding.search.setVisibility(search ? View.VISIBLE : View.GONE);
holder.binding.filter.setVisibility(filter ? View.VISIBLE : View.GONE);
+ holder.binding.change.setVisibility(change ? View.VISIBLE : View.GONE);
holder.binding.text.setOnClickListener(v -> mListener.onTextClick(item));
holder.binding.search.setOnClickListener(v -> mListener.onSearchClick(item));
holder.binding.filter.setOnClickListener(v -> mListener.onFilterClick(item));
+ holder.binding.change.setOnClickListener(v -> mListener.onChangeClick(item));
holder.binding.search.setOnLongClickListener(v -> mListener.onSearchLongClick(item));
holder.binding.filter.setOnLongClickListener(v -> mListener.onFilterLongClick(item));
+ holder.binding.change.setOnLongClickListener(v -> mListener.onChangeLongClick(item));
}
@Override
diff --git a/app/src/leanback/res/layout/adapter_site.xml b/app/src/leanback/res/layout/adapter_site.xml
index 99364f402..1142f14c0 100644
--- a/app/src/leanback/res/layout/adapter_site.xml
+++ b/app/src/leanback/res/layout/adapter_site.xml
@@ -47,4 +47,17 @@
android:src="@drawable/ic_filter_on"
app:tint="@color/text" />
+