From f469cab7b0c3c4680da2e88f22f9c2b8eff92267 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 5 Mar 2022 12:40:49 +0300 Subject: [PATCH] Added disable-autoplay-next option. --- .../media/player/media_player_instance.cpp | 12 ++++++++++++ .../SourceFiles/media/player/media_player_instance.h | 2 ++ .../SourceFiles/settings/settings_experimental.cpp | 2 ++ 3 files changed, 16 insertions(+) diff --git a/Telegram/SourceFiles/media/player/media_player_instance.cpp b/Telegram/SourceFiles/media/player/media_player_instance.cpp index 93fb145e7f..4cec5f0735 100644 --- a/Telegram/SourceFiles/media/player/media_player_instance.cpp +++ b/Telegram/SourceFiles/media/player/media_player_instance.cpp @@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_changes.h" #include "data/data_streaming.h" #include "data/data_file_click_handler.h" +#include "base/options.h" #include "base/random.h" #include "base/power_save_blocker.h" #include "media/audio/media_audio.h" @@ -55,8 +56,17 @@ auto VoicePlaybackSpeed() { return std::clamp(Core::App().settings().voicePlaybackSpeed(), 0.6, 1.7); } +base::options::toggle OptionDisableAutoplayNext({ + .id = kOptionDisableAutoplayNext, + .name = "Disable auto-play of the next track", + .description = "Disable auto-play of the next " + "Audio file / Voice Message / Video message.", +}); + } // namespace +const char kOptionDisableAutoplayNext[] = "disable-autoplay-next"; + struct Instance::Streamed { Streamed( AudioMsgId id, @@ -1212,6 +1222,8 @@ void Instance::emitUpdate(AudioMsgId::Type type, CheckCallback check) { if (data->isPlaying && state.state == State::StoppedAtEnd) { if (repeat(data) == RepeatMode::One) { play(data->current); + } else if (OptionDisableAutoplayNext.value()) { + finished = true; } else if (!moveInPlaylist(data, 1, true)) { finished = true; } diff --git a/Telegram/SourceFiles/media/player/media_player_instance.h b/Telegram/SourceFiles/media/player/media_player_instance.h index 96a4842ab7..b99afcea79 100644 --- a/Telegram/SourceFiles/media/player/media_player_instance.h +++ b/Telegram/SourceFiles/media/player/media_player_instance.h @@ -42,6 +42,8 @@ class PowerSaveBlocker; namespace Media { namespace Player { +extern const char kOptionDisableAutoplayNext[]; + enum class RepeatMode { None, One, diff --git a/Telegram/SourceFiles/settings/settings_experimental.cpp b/Telegram/SourceFiles/settings/settings_experimental.cpp index 737f5f6e6c..e8b5bc3f42 100644 --- a/Telegram/SourceFiles/settings/settings_experimental.cpp +++ b/Telegram/SourceFiles/settings/settings_experimental.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "core/application.h" #include "chat_helpers/tabbed_panel.h" #include "lang/lang_keys.h" +#include "media/player/media_player_instance.h" #include "window/window_peer_menu.h" #include "window/window_session_controller.h" #include "window/window_controller.h" @@ -131,6 +132,7 @@ void SetupExperimental( addToggle(ChatHelpers::kOptionTabbedPanelShowOnClick); addToggle(Window::kOptionViewProfileInChatsListContextMenu); addToggle(Ui::GL::kOptionAllowLinuxNvidiaOpenGL); + addToggle(Media::Player::kOptionDisableAutoplayNext); } } // namespace