diff --git a/app/src/main/res/drawable/ic_setting_vod_history.xml b/app/src/main/res/drawable/ic_setting_vod_history.xml
new file mode 100644
index 000000000..7fe991d5f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_setting_vod_history.xml
@@ -0,0 +1,10 @@
+
+
+
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 25585edbc..fe3b77b42 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
@@ -1,5 +1,6 @@
package com.fongmi.android.tv.ui.fragment;
+import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.view.LayoutInflater;
@@ -19,6 +20,7 @@ import com.fongmi.android.tv.App;
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;
@@ -27,6 +29,7 @@ import com.fongmi.android.tv.databinding.FragmentVodBinding;
import com.fongmi.android.tv.event.CastEvent;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.impl.Callback;
+import com.fongmi.android.tv.impl.ConfigCallback;
import com.fongmi.android.tv.impl.FilterCallback;
import com.fongmi.android.tv.impl.SiteCallback;
import com.fongmi.android.tv.model.SiteViewModel;
@@ -38,14 +41,17 @@ import com.fongmi.android.tv.ui.activity.VideoActivity;
import com.fongmi.android.tv.ui.adapter.TypeAdapter;
import com.fongmi.android.tv.ui.base.BaseFragment;
import com.fongmi.android.tv.ui.dialog.FilterDialog;
+import com.fongmi.android.tv.ui.dialog.HistoryDialog;
import com.fongmi.android.tv.ui.dialog.LinkDialog;
import com.fongmi.android.tv.ui.dialog.ReceiveDialog;
import com.fongmi.android.tv.ui.dialog.SiteDialog;
import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.FileUtil;
+import com.fongmi.android.tv.utils.Notify;
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;
@@ -60,7 +66,7 @@ import okhttp3.Call;
import okhttp3.Headers;
import okhttp3.Response;
-public class VodFragment extends BaseFragment implements SiteCallback, FilterCallback, TypeAdapter.OnClickListener {
+public class VodFragment extends BaseFragment implements SiteCallback, FilterCallback, TypeAdapter.OnClickListener, ConfigCallback {
private FragmentVodBinding mBinding;
private SiteViewModel mViewModel;
@@ -103,6 +109,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
mBinding.link.setOnClickListener(this::onLink);
mBinding.logo.setOnClickListener(this::onLogo);
mBinding.logo.setOnLongClickListener(this::onRefresh);
+ mBinding.settingVodHistory.setOnClickListener(this::onSettingVodHistory);
mBinding.keep.setOnClickListener(this::onKeep);
mBinding.retry.setOnClickListener(this::onRetry);
mBinding.filter.setOnClickListener(this::onFilter);
@@ -207,6 +214,10 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
return true;
}
+ private void onSettingVodHistory(View view) {
+ HistoryDialog.create(this).type(0).show();
+ }
+
private void onKeep(View view) {
KeepActivity.start(getActivity());
}
@@ -252,6 +263,45 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
return mResult == null ? new Result() : mResult;
}
+ private void setConfig() {
+ Notify.dismiss();
+ RefreshEvent.video();
+ RefreshEvent.config();
+ }
+
+ @Override
+ public void setConfig(Config config) {
+ if (config.getUrl().startsWith("file") && !PermissionX.isGranted(getActivity(), 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(getActivity());
+ VodConfig.load(config, getCallback());
+ break;
+ }
+ }
+
+ private Callback getCallback() {
+ return new Callback() {
+ @Override
+ public void success() {
+ setConfig();
+ }
+
+ @Override
+ public void error(String msg) {
+ Notify.show(msg);
+ setConfig();
+ }
+ };
+ }
+
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshEvent(RefreshEvent event) {
switch (event.getType()) {
diff --git a/app/src/mobile/res/layout/fragment_vod.xml b/app/src/mobile/res/layout/fragment_vod.xml
index 2ce09d4c8..ca597ca8e 100644
--- a/app/src/mobile/res/layout/fragment_vod.xml
+++ b/app/src/mobile/res/layout/fragment_vod.xml
@@ -28,9 +28,17 @@
android:id="@+id/logo"
android:layout_width="24dp"
android:layout_height="24dp"
+ android:layout_marginEnd="12dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_logo" />
+
+