From 9d7c80f570864f4968f9401bee7f2038b63d7598 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 15 Feb 2024 15:47:58 +0800 Subject: [PATCH] Add incognito mode setting --- .../tv/ui/activity/SettingActivity.java | 11 +++++++ .../android/tv/ui/activity/VideoActivity.java | 4 +-- .../leanback/res/layout/activity_setting.xml | 30 ++++++++++++++++++- .../java/com/fongmi/android/tv/Setting.java | 8 +++++ app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + .../android/tv/ui/activity/VideoActivity.java | 3 +- .../tv/ui/fragment/SettingFragment.java | 14 ++++++++- .../mobile/res/layout/fragment_setting.xml | 27 +++++++++++++++++ 10 files changed, 95 insertions(+), 5 deletions(-) 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 c7bf1f058..7c9fb80d0 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 @@ -56,6 +56,10 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit activity.startActivity(new Intent(activity, SettingActivity.class)); } + private String getSwitch(boolean value) { + return getString(value ? R.string.setting_on : R.string.setting_off); + } + private int getDohIndex() { return Math.max(0, VodConfig.get().getDoh().indexOf(Doh.objectFrom(Setting.getDoh()))); } @@ -81,6 +85,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.dohText.setText(getDohList()[getDohIndex()]); mBinding.versionText.setText(BuildConfig.VERSION_NAME); mBinding.proxyText.setText(UrlUtil.scheme(Setting.getProxy())); + mBinding.incognitoText.setText(getSwitch(Setting.isIncognito())); mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Setting.getSize()]); mBinding.qualityText.setText((quality = ResUtil.getStringArray(R.array.select_quality))[Setting.getQuality()]); setCacheText(); @@ -116,6 +121,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.liveHistory.setOnClickListener(this::onLiveHistory); mBinding.wallDefault.setOnClickListener(this::setWallDefault); mBinding.wallRefresh.setOnClickListener(this::setWallRefresh); + mBinding.incognito.setOnClickListener(this::setIncognito); mBinding.quality.setOnClickListener(this::setQuality); mBinding.size.setOnClickListener(this::setSize); mBinding.doh.setOnClickListener(this::setDoh); @@ -275,6 +281,11 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit }); } + private void setIncognito(View view) { + Setting.putIncognito(!Setting.isIncognito()); + mBinding.incognitoText.setText(getSwitch(Setting.isIncognito())); + } + private void setQuality(View view) { int index = Setting.getQuality(); Setting.putQuality(index = index == quality.length - 1 ? 0 : ++index); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 4939ae91c..55689c6fb 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1016,7 +1016,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mHistory = History.find(getHistoryKey()); mHistory = mHistory == null ? createHistory(item) : mHistory; if (!TextUtils.isEmpty(getMark())) mHistory.setVodRemarks(getMark()); - //if (!getSite().isRecordable() && mHistory.getKey().equals(getHistoryKey())) mHistory.delete(); + if (Setting.isIncognito() && mHistory.getKey().equals(getHistoryKey())) mHistory.delete(); mBinding.control.opening.setText(mHistory.getOpening() == 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening())); mBinding.control.ending.setText(mHistory.getEnding() == 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding())); mBinding.control.speed.setText(mPlayers.setSpeed(mHistory.getSpeed())); @@ -1073,7 +1073,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List long position, duration; mHistory.setPosition(position = mPlayers.getPosition()); mHistory.setDuration(duration = mPlayers.getDuration()); - //if (position >= 0 && duration > 0 && getSite().isRecordable()) App.execute(() -> mHistory.update()); + if (position >= 0 && duration > 0 && !Setting.isIncognito()) App.execute(() -> mHistory.update()); if (mHistory.getEnding() > 0 && duration > 0 && mHistory.getEnding() + position >= duration) { mClock.setCallback(null); checkNext(); diff --git a/app/src/leanback/res/layout/activity_setting.xml b/app/src/leanback/res/layout/activity_setting.xml index 81eedfb67..f9bc748b9 100644 --- a/app/src/leanback/res/layout/activity_setting.xml +++ b/app/src/leanback/res/layout/activity_setting.xml @@ -221,6 +221,25 @@ android:background="@drawable/selector_item" android:focusable="true" android:focusableInTouchMode="true" + android:orientation="horizontal"> + + + + + + @@ -228,10 +247,19 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" - android:text="@string/setting_player" + android:text="@string/setting_incognito" android:textColor="@color/white" android:textSize="18sp" /> + + 直播 壁纸 播放设置 + 无痕模式 图片品质 图片尺寸 DoH diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index d2a0521f8..54e95f35d 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -65,6 +65,7 @@ 直播 壁紙 播放設定 + 無痕模式 圖片品質 圖片尺寸 DoH diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 90882859b..f01873fa9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -65,6 +65,7 @@ Live Wallpaper Player setting + Incognito mode Image quality Image size DoH diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 125c05efe..80835c8c0 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1012,6 +1012,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mHistory = History.find(getHistoryKey()); mHistory = mHistory == null ? createHistory(item) : mHistory; if (!TextUtils.isEmpty(getMark())) mHistory.setVodRemarks(getMark()); + if (Setting.isIncognito() && mHistory.getKey().equals(getHistoryKey())) mHistory.delete(); mBinding.control.action.opening.setText(mHistory.getOpening() == 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening())); mBinding.control.action.ending.setText(mHistory.getEnding() == 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding())); mBinding.control.action.speed.setText(mPlayers.setSpeed(mHistory.getSpeed())); @@ -1078,7 +1079,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo long position, duration; mHistory.setPosition(position = mPlayers.getPosition()); mHistory.setDuration(duration = mPlayers.getDuration()); - if (position >= 0 && duration > 0) App.execute(() -> mHistory.update()); + if (position >= 0 && duration > 0 && !Setting.isIncognito()) App.execute(() -> mHistory.update()); if (mHistory.getEnding() > 0 && duration > 0 && mHistory.getEnding() + position >= duration) { mClock.setCallback(null); checkNext(); 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 6ef7b8e54..38b8fcfb9 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 @@ -61,6 +61,10 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit return new SettingFragment(); } + private String getSwitch(boolean value) { + return getString(value ? R.string.setting_on : R.string.setting_off); + } + private int getDohIndex() { return Math.max(0, VodConfig.get().getDoh().indexOf(Doh.objectFrom(Setting.getDoh()))); } @@ -89,6 +93,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit mBinding.dohText.setText(getDohList()[getDohIndex()]); mBinding.versionText.setText(BuildConfig.VERSION_NAME); mBinding.proxyText.setText(UrlUtil.scheme(Setting.getProxy())); + mBinding.incognitoText.setText(getSwitch(Setting.isIncognito())); mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Setting.getSize()]); setCacheText(); } @@ -123,6 +128,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit mBinding.liveHistory.setOnClickListener(this::onLiveHistory); mBinding.wallDefault.setOnClickListener(this::setWallDefault); mBinding.wallRefresh.setOnClickListener(this::setWallRefresh); + mBinding.incognito.setOnClickListener(this::setIncognito); mBinding.size.setOnClickListener(this::setSize); mBinding.doh.setOnClickListener(this::setDoh); } @@ -282,6 +288,11 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit }); } + private void setIncognito(View view) { + Setting.putIncognito(!Setting.isIncognito()); + mBinding.incognitoText.setText(getSwitch(Setting.isIncognito())); + } + private void setSize(View view) { new MaterialAlertDialogBuilder(getActivity()).setTitle(R.string.setting_size).setNegativeButton(R.string.dialog_negative, null).setSingleChoiceItems(size, Setting.getSize(), (dialog, which) -> { mBinding.sizeText.setText(size[which]); @@ -358,7 +369,8 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); - if (resultCode != Activity.RESULT_OK || requestCode != FileChooser.REQUEST_PICK_FILE) return; + if (resultCode != Activity.RESULT_OK || requestCode != FileChooser.REQUEST_PICK_FILE) + return; setConfig(Config.find("file:/" + FileChooser.getPathFromUri(getContext(), data.getData()).replace(Path.rootPath(), ""), type)); } } diff --git a/app/src/mobile/res/layout/fragment_setting.xml b/app/src/mobile/res/layout/fragment_setting.xml index 949145573..6adfe8150 100644 --- a/app/src/mobile/res/layout/fragment_setting.xml +++ b/app/src/mobile/res/layout/fragment_setting.xml @@ -230,6 +230,33 @@ + + + + + + + +