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 77dd6becc..7a739021f 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 @@ -49,6 +49,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit private ActivitySettingBinding mBinding; private String[] quality; + private String[] backup; private String[] size; private int type; @@ -85,12 +86,12 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.vodUrl.setText(VodConfig.getDesc()); mBinding.liveUrl.setText(LiveConfig.getDesc()); mBinding.wallUrl.setText(WallConfig.getDesc()); - mBinding.backupText.setText(AppDatabase.getDate()); mBinding.dohText.setText(getDohList()[getDohIndex()]); mBinding.versionText.setText(BuildConfig.VERSION_NAME); mBinding.proxyText.setText(getProxy(Setting.getProxy())); mBinding.incognitoText.setText(getSwitch(Setting.isIncognito())); mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Setting.getSize()]); + mBinding.backupText.setText((backup = ResUtil.getStringArray(R.array.select_backup))[Setting.getBackupMode()]); mBinding.qualityText.setText((quality = ResUtil.getStringArray(R.array.select_quality))[Setting.getQuality()]); setCacheText(); } @@ -119,7 +120,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.live.setOnLongClickListener(this::onLiveEdit); mBinding.liveHome.setOnClickListener(this::onLiveHome); mBinding.wall.setOnLongClickListener(this::onWallEdit); - mBinding.backup.setOnLongClickListener(this::onBackupAuto); + mBinding.backup.setOnLongClickListener(this::onBackupMode); mBinding.vodHistory.setOnClickListener(this::onVodHistory); mBinding.version.setOnLongClickListener(this::onVersionDev); mBinding.liveHistory.setOnClickListener(this::onLiveHistory); @@ -346,14 +347,15 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> AppDatabase.backup(new Callback() { @Override public void success() { - mBinding.backupText.setText(AppDatabase.getDate()); + Notify.show(R.string.backed); } })); } - private boolean onBackupAuto(View view) { - Setting.putBackupAuto(!Setting.isBackupAuto()); - mBinding.backupText.setText(AppDatabase.getDate()); + private boolean onBackupMode(View view) { + int index = Setting.getBackupMode(); + Setting.putBackupMode(index = index == backup.length - 1 ? 0 : ++index); + mBinding.backupText.setText(backup[index]); return true; } } diff --git a/app/src/main/java/com/fongmi/android/tv/Setting.java b/app/src/main/java/com/fongmi/android/tv/Setting.java index a1c99de71..8899b2f8c 100644 --- a/app/src/main/java/com/fongmi/android/tv/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/Setting.java @@ -177,6 +177,14 @@ public class Setting { Prefers.put("site_mode", mode); } + public static int getBackupMode() { + return Prefers.getInt("backup_mode"); + } + + public static void putBackupMode(int auto) { + Prefers.put("backup_mode", auto); + } + public static boolean isIncognito() { return Prefers.getBoolean("incognito"); } @@ -241,14 +249,6 @@ public class Setting { Prefers.put("exo_tunnel", tunnel); } - public static boolean isBackupAuto() { - return Prefers.getBoolean("backup_auto"); - } - - public static void putBackupAuto(boolean auto) { - Prefers.put("backup_auto", auto); - } - public static float getThumbnail() { return 0.3f * getQuality() + 0.4f; } diff --git a/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java b/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java index 1bc57cac8..3694cf388 100644 --- a/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java +++ b/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java @@ -10,7 +10,6 @@ import androidx.room.migration.Migration; import androidx.sqlite.db.SupportSQLiteDatabase; import com.fongmi.android.tv.App; -import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.bean.Device; @@ -26,14 +25,10 @@ import com.fongmi.android.tv.db.dao.KeepDao; import com.fongmi.android.tv.db.dao.LiveDao; import com.fongmi.android.tv.db.dao.SiteDao; import com.fongmi.android.tv.db.dao.TrackDao; -import com.fongmi.android.tv.utils.ResUtil; -import com.fongmi.android.tv.utils.Util; import com.github.catvod.utils.Path; import com.github.catvod.utils.Prefers; import java.io.File; -import java.text.SimpleDateFormat; -import java.util.Locale; @Database(entities = {Keep.class, Site.class, Live.class, Track.class, Config.class, Device.class, History.class}, version = AppDatabase.VERSION) public abstract class AppDatabase extends RoomDatabase { @@ -53,12 +48,8 @@ public abstract class AppDatabase extends RoomDatabase { return new File(Path.tv(), NAME); } - public static String getDate() { - return Setting.isBackupAuto() ? ResUtil.getString(R.string.setting_backup_auto) : getBackup().exists() ? Util.format(new SimpleDateFormat("MMdd", Locale.getDefault()), getBackup().lastModified()) : ""; - } - public static void backup() { - if (Setting.isBackupAuto()) backup(new com.fongmi.android.tv.impl.Callback()); + if (Setting.getBackupMode() == 0) backup(new com.fongmi.android.tv.impl.Callback()); } public static void backup(com.fongmi.android.tv.impl.Callback callback) { diff --git a/app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java index e35b4a4e1..fc8bf9506 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java @@ -9,6 +9,7 @@ import android.text.TextUtils; import androidx.core.content.FileProvider; import com.fongmi.android.tv.App; +import com.fongmi.android.tv.R; import com.fongmi.android.tv.impl.Callback; import com.github.catvod.utils.Path; @@ -101,7 +102,7 @@ public class FileUtil { } public static String byteCountToDisplaySize(long size) { - if (size <= 0) return "0 KB"; + if (size <= 0) return ResUtil.getString(R.string.none); String[] units = new String[]{"bytes", "KB", "MB", "GB", "TB"}; int digitGroups = (int) (Math.log10(size) / Math.log10(1024)); return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups]; diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 9c0276284..12bceab13 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -71,7 +71,6 @@ Proxy 缓存 备份 - 自动 版本 权限 @@ -128,6 +127,7 @@ 已复制 + 备份成功 全部 @@ -135,6 +135,11 @@ + + 自动 + 手动 + + 软解 硬解 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 5d04a4797..7ce35ed68 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -71,7 +71,6 @@ Proxy 暫存 備份 - 自動 版本 權限 @@ -128,6 +127,7 @@ 已複製 + 備份成功 全部 @@ -135,6 +135,11 @@ + + 自動 + 手動 + + 軟解 硬解 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 80b76a45a..4dbea6dc7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -71,7 +71,6 @@ Proxy Cache Backup - Auto Version Permission Off @@ -128,6 +127,7 @@ Copied + Backup successful All @@ -135,6 +135,11 @@ times lines + + Auto + Manual + + Soft Hard 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 3656e9aaa..c8525a4a3 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 @@ -54,6 +54,7 @@ import java.util.List; public class SettingFragment extends BaseFragment implements ConfigCallback, SiteCallback, LiveCallback, ProxyCallback { private FragmentSettingBinding mBinding; + private String[] backup; private String[] size; private int type; @@ -93,12 +94,12 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit mBinding.vodUrl.setText(VodConfig.getDesc()); mBinding.liveUrl.setText(LiveConfig.getDesc()); mBinding.wallUrl.setText(WallConfig.getDesc()); - mBinding.backupText.setText(AppDatabase.getDate()); mBinding.dohText.setText(getDohList()[getDohIndex()]); mBinding.versionText.setText(BuildConfig.VERSION_NAME); mBinding.proxyText.setText(getProxy(Setting.getProxy())); mBinding.incognitoText.setText(getSwitch(Setting.isIncognito())); mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Setting.getSize()]); + mBinding.backupText.setText((backup = ResUtil.getStringArray(R.array.select_backup))[Setting.getBackupMode()]); setCacheText(); } @@ -126,7 +127,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit mBinding.live.setOnLongClickListener(this::onLiveEdit); mBinding.liveHome.setOnClickListener(this::onLiveHome); mBinding.wall.setOnLongClickListener(this::onWallEdit); - mBinding.backup.setOnLongClickListener(this::onBackupAuto); + mBinding.backup.setOnLongClickListener(this::onBackupMode); mBinding.vodHistory.setOnClickListener(this::onVodHistory); mBinding.version.setOnLongClickListener(this::onVersionDev); mBinding.liveHistory.setOnClickListener(this::onLiveHistory); @@ -349,14 +350,15 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> AppDatabase.backup(new Callback() { @Override public void success() { - mBinding.backupText.setText(AppDatabase.getDate()); + Notify.show(R.string.backed); } })); } - private boolean onBackupAuto(View view) { - Setting.putBackupAuto(!Setting.isBackupAuto()); - mBinding.backupText.setText(AppDatabase.getDate()); + private boolean onBackupMode(View view) { + int index = Setting.getBackupMode(); + Setting.putBackupMode(index = index == backup.length - 1 ? 0 : ++index); + mBinding.backupText.setText(backup[index]); return true; }