From 58dbf67a0d8ec2c1541c0996ac5627f707966dd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Mon, 18 Oct 2021 14:50:41 +0200 Subject: [PATCH 1/3] implement ability to ignore back-queue for main view --- .../newpipe/fragments/detail/VideoDetailFragment.java | 9 +++++++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/history_settings.xml | 9 +++++++++ 3 files changed, 20 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index bda16849a2b..648d1e22814 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -157,6 +157,9 @@ public final class VideoDetailFragment private boolean showComments; private boolean showRelatedItems; private boolean showDescription; + + private boolean ignoreQueue; + private String selectedTabTag; @AttrRes @NonNull final List tabIcons = new ArrayList<>(); @StringRes @NonNull final List tabContentDescriptions = new ArrayList<>(); @@ -285,6 +288,7 @@ public void onCreate(final Bundle savedInstanceState) { showComments = prefs.getBoolean(getString(R.string.show_comments_key), true); showRelatedItems = prefs.getBoolean(getString(R.string.show_next_video_key), true); showDescription = prefs.getBoolean(getString(R.string.show_description_key), true); + ignoreQueue = prefs.getBoolean(getString(R.string.enable_ignore_main_queue_key), false); selectedTabTag = prefs.getString( getString(R.string.stream_info_selected_tab_key), COMMENTS_TAB_TAG); prefs.registerOnSharedPreferenceChangeListener(this); @@ -728,6 +732,11 @@ public boolean onBackPressed() { Log.d(TAG, "onBackPressed() called"); } + // when queue should be ignored, directly skip checks and let MainActivity handle everything + if (ignoreQueue) { + return false; + } + // If we are in fullscreen mode just exit from it via first back press if (isPlayerAvailable() && player.isFullscreen()) { if (!DeviceUtils.isTablet(activity)) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 897ec0af8b3..b032aaeabe0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -704,4 +704,6 @@ Error at Show Channel Details Loading Channel Details… + Ignore Main Queue + Main Queue diff --git a/app/src/main/res/xml/history_settings.xml b/app/src/main/res/xml/history_settings.xml index 097a42d538f..7bfe7546df2 100644 --- a/app/src/main/res/xml/history_settings.xml +++ b/app/src/main/res/xml/history_settings.xml @@ -37,6 +37,15 @@ app:singleLineTitle="false" app:iconSpaceReserved="false" /> + + + Date: Sun, 14 Aug 2022 00:11:01 +0200 Subject: [PATCH 2/3] disable backstack on tv per default --- .../fragments/detail/VideoDetailFragment.java | 5 ++- .../settings/HistorySettingsFragment.java | 37 +++++++++++++++++++ app/src/main/res/values/strings.xml | 4 +- app/src/main/res/xml/history_settings.xml | 7 ++-- 4 files changed, 46 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index 648d1e22814..c214ec2a4b2 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -288,7 +288,10 @@ public void onCreate(final Bundle savedInstanceState) { showComments = prefs.getBoolean(getString(R.string.show_comments_key), true); showRelatedItems = prefs.getBoolean(getString(R.string.show_next_video_key), true); showDescription = prefs.getBoolean(getString(R.string.show_description_key), true); - ignoreQueue = prefs.getBoolean(getString(R.string.enable_ignore_main_queue_key), false); + ignoreQueue = prefs.getBoolean( + getString(R.string.enable_ignore_backstack_key), + DeviceUtils.isTv(activity) + ); selectedTabTag = prefs.getString( getString(R.string.stream_info_selected_tab_key), COMMENTS_TAB_TAG); prefs.registerOnSharedPreferenceChangeListener(this); diff --git a/app/src/main/java/org/schabi/newpipe/settings/HistorySettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/HistorySettingsFragment.java index cb6ce263dce..fbe6298232b 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/HistorySettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/HistorySettingsFragment.java @@ -1,18 +1,23 @@ package org.schabi.newpipe.settings; +import android.app.Activity; import android.content.Context; +import android.content.SharedPreferences; import android.os.Bundle; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.preference.Preference; +import androidx.preference.PreferenceManager; +import androidx.preference.SwitchPreferenceCompat; import org.schabi.newpipe.R; import org.schabi.newpipe.error.ErrorActivity; import org.schabi.newpipe.error.ErrorInfo; import org.schabi.newpipe.error.UserAction; import org.schabi.newpipe.local.history.HistoryRecordManager; +import org.schabi.newpipe.util.DeviceUtils; import org.schabi.newpipe.util.InfoCache; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; @@ -37,6 +42,38 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro searchHistoryClearKey = getString(R.string.clear_search_history_key); recordManager = new HistoryRecordManager(getActivity()); disposables = new CompositeDisposable(); + + final String backstackPreferenceKey = getString(R.string.enable_ignore_backstack_key); + final SwitchPreferenceCompat backstackPref = findPreference(backstackPreferenceKey); + final Activity activity = this.getActivity(); + + if (activity != null) { + final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); + + final boolean retrievedValue = prefs.getBoolean( + getString(R.string.enable_ignore_backstack_key), + DeviceUtils.isTv(activity) + ); + + // Get the value stored. (Default does not matter) + // If the retrieved value matches the default value, use the default. + // If not, use the retrieved + // This works because now when we call setChecked, and save it, + // we either store the proper changed value, or the default value. + // However, if the default value is equal to the set-value, we don't actually + // change anything even if we "override" the value + // Drawback: As soon as the settings are opened, the value is set&saved. + // No "default" anymore. + // The default is applied exactly once, and then stored + boolean valueToSet = DeviceUtils.isTv(activity); + if (retrievedValue != valueToSet) { + valueToSet = retrievedValue; + } + + if (backstackPref != null) { + backstackPref.setChecked(valueToSet); + } + } } @Override diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b032aaeabe0..d9563db35fc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -704,6 +704,6 @@ Error at Show Channel Details Loading Channel Details… - Ignore Main Queue - Main Queue + Ignore Playlist Backstack + Playlist Backstack diff --git a/app/src/main/res/xml/history_settings.xml b/app/src/main/res/xml/history_settings.xml index 7bfe7546df2..3ed9ec18d70 100644 --- a/app/src/main/res/xml/history_settings.xml +++ b/app/src/main/res/xml/history_settings.xml @@ -38,10 +38,9 @@ app:iconSpaceReserved="false" /> From 618aea406349f348d8bbed1e3716fd97829942a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Mon, 5 Dec 2022 13:55:31 +0100 Subject: [PATCH 3/3] actually allow back button to exit fullscreen --- .../newpipe/fragments/detail/VideoDetailFragment.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index 269589f9594..a7ef286e1fd 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -767,11 +767,6 @@ public boolean onBackPressed() { Log.d(TAG, "onBackPressed() called"); } - // when queue should be ignored, directly skip checks and let MainActivity handle everything - if (ignoreQueue) { - return false; - } - // If we are in fullscreen mode just exit from it via first back press if (isFullscreen()) { if (!DeviceUtils.isTablet(activity)) { @@ -782,6 +777,11 @@ public boolean onBackPressed() { return true; } + // when queue should be ignored, directly skip checks and let MainActivity handle everything + if (ignoreQueue) { + return false; + } + // If we have something in history of played items we replay it here if (isPlayerAvailable() && player.getPlayQueue() != null