From b66efe6101f5bcb25798e070e7347062cb65a267 Mon Sep 17 00:00:00 2001 From: Zarg <62082797+Zaarrg@users.noreply.github.com> Date: Sun, 22 Dec 2024 12:30:50 +0100 Subject: [PATCH] NextVideo playback fix and borderless window tray option - Fixed NextVideo playback by not returning every end of playback event - Added Borderless Window tray option --- CMakeLists.txt | 2 +- src/main.qml | 9 +++++++++ src/player/mpv.cpp | 10 +++++----- src/tray/systemtray.cpp | 15 +++++++++++++++ src/tray/systemtray.h | 4 ++++ version/version-details.json | 6 +++--- version/version.json | 2 +- 7 files changed, 38 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ed46ff..2ac38c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.30) -project(stremio VERSION "5.0.1") +project(stremio VERSION "5.0.2") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeModules/") diff --git a/src/main.qml b/src/main.qml index 7b96279..d27b615 100644 --- a/src/main.qml +++ b/src/main.qml @@ -301,6 +301,15 @@ ApplicationWindow { } } + function onSignalBorderlessWindow() { + root.raise() + if (root.flags & Qt.FramelessWindowHint) { + root.flags &= ~Qt.FramelessWindowHint; + } else { + root.flags |= Qt.FramelessWindowHint; + } + } + // The signal - close the application by ignoring the check-box function onSignalQuit() { quitApp(); diff --git a/src/player/mpv.cpp b/src/player/mpv.cpp index b702d07..62d0c9d 100644 --- a/src/player/mpv.cpp +++ b/src/player/mpv.cpp @@ -272,18 +272,18 @@ void MpvObject::handle_mpv_event(mpv_event *event) { this->setVisible(false); mpv_event_end_file *endFile = (mpv_event_end_file *)event->data; switch (endFile->reason) { + case MPV_END_FILE_REASON_EOF: + eventJson["reason"] = "quit"; + Q_EMIT mpvEvent("mpv-event-ended", eventJson); + break; case MPV_END_FILE_REASON_ERROR: eventJson["reason"] = "error"; eventJson["error"] = mpv_error_string(endFile->error); - break; - case MPV_END_FILE_REASON_QUIT: - eventJson["reason"] = "quit"; + Q_EMIT mpvEvent("mpv-event-ended", eventJson); break; default: - eventJson["reason"] = "other"; break; } - Q_EMIT mpvEvent("mpv-event-ended", eventJson); break; } case MPV_EVENT_SHUTDOWN: { diff --git a/src/tray/systemtray.cpp b/src/tray/systemtray.cpp index b17df01..e0e50de 100644 --- a/src/tray/systemtray.cpp +++ b/src/tray/systemtray.cpp @@ -15,6 +15,9 @@ alwaysOnTopAction = new QAction(tr("Always on top"), this); alwaysOnTopAction->setCheckable(true); + borderlessWindowAction = new QAction(tr("Borderless Window"), this); + borderlessWindowAction->setCheckable(true); + QAction * quitAction = new QAction(tr("Quit"), this); /* to connect the signals clicks on menu items to the appropriate signals for QML. @@ -22,10 +25,12 @@ connect(trayIconMenu, &QMenu::aboutToShow, this, &SystemTray::signalIconMenuAboutToShow); connect(viewWindowAction, &QAction::triggered, this, &SystemTray::signalShow); connect(alwaysOnTopAction, &QAction::triggered, this, &SystemTray::signalAlwaysOnTop); + connect(borderlessWindowAction, &QAction::triggered, this, &SystemTray::signalBorderlessWindow); connect(quitAction, &QAction::triggered, this, &SystemTray::signalQuit); trayIconMenu->addAction(viewWindowAction); trayIconMenu->addAction(alwaysOnTopAction); + trayIconMenu->addAction(borderlessWindowAction); trayIconMenu->addAction(quitAction); @@ -87,3 +92,13 @@ { alwaysOnTopAction->setEnabled(enabled); } + + void SystemTray::updateIsBorderless(bool isBorderless) + { + borderlessWindowAction->setChecked(isBorderless); + } + + void SystemTray::borderlessWindowEnabled(bool enabled) + { + borderlessWindowAction->setEnabled(enabled); + } diff --git a/src/tray/systemtray.h b/src/tray/systemtray.h index 913f8a2..34ef2f9 100644 --- a/src/tray/systemtray.h +++ b/src/tray/systemtray.h @@ -15,6 +15,7 @@ public: void signalIconActivated(); void signalShow(); void signalAlwaysOnTop(); + void signalBorderlessWindow(); void signalQuit(); private slots: @@ -26,6 +27,8 @@ public: void hideIconTray(); void updateVisibleAction(bool isVisible); void updateIsOnTop(bool isOnTop); + void updateIsBorderless(bool isBorderless); + void borderlessWindowEnabled(bool enabled); void alwaysOnTopEnabled(bool enabled); private: @@ -33,6 +36,7 @@ private: QSystemTrayIcon * trayIcon; QAction * viewWindowAction; QAction * alwaysOnTopAction; + QAction * borderlessWindowAction; }; #endif // SYSTEMTRAY_H diff --git a/version/version-details.json b/version/version-details.json index c75dea8..5ea74fc 100644 --- a/version/version-details.json +++ b/version/version-details.json @@ -1,9 +1,9 @@ { - "shellVersion": "5.0.1", + "shellVersion": "5.0.2", "files": { "windows": { - "url": "https://github.com/Zaarrg/stremio-desktop-v5/releases/download/5.0.0-beta.2/Stremio.5.0.1.exe", - "checksum": "38f11ab6dcb4fc93cbe54c88a4f8042fef8c09fc9ba83938b916dbe5ba3fe45f" + "url": "https://github.com/Zaarrg/stremio-desktop-v5/releases/download/5.0.0-beta.3/Stremio.5.0.2.exe", + "checksum": "b1670f3a32ecd09fea76fb60a081496e952ac34e1cb1744e7c0a37119619660f" }, "server.js": { "url": "https://dl.strem.io/server/v4.20.8/desktop/server.js", diff --git a/version/version.json b/version/version.json index 3d833a1..aa7c857 100644 --- a/version/version.json +++ b/version/version.json @@ -1,5 +1,5 @@ { "upToDate": false, "versionDesc": "https://raw.githubusercontent.com/Zaarrg/stremio-desktop-v5/refs/heads/master/version/version-details.json", - "signature": "bRMydlBNCo4eqIIQwTQ1O1vgOs20fpfRh6ymmu9G9rqQtJlEC5uDe8uavu7wmDJC/ARHgsSQxzb8tw/HCbR4knI6gPQs1oasDhSn6o4b5YyWdLJo0vfyicrJj+xI5cngdS5NLnyrCxVf7sO5NRi1NtLWJ0XcF8M8f93VfqTClVAR/SDbX5vFod+CppZDNbpdKHvyCdk/AT232Pv9q6+2TQyLQk7rLvlBXXH/8OCU+tmmTe7arTSKNr6NA8k5N+hevjay+cuhXluSomesXIjJVIPFolu7yaC3MX6doxE3hBhTA3wnUlm5nDZOSPplYRQfHubA8ms+8BOzZE32sZw2qA==" + "signature": "KuSMHr3svLxRjA8hGaEMXodVjg6R9AJ/euqTmVkZzzriEzKyGzUijJTKa2O1UvDa2MQBcd4gWieRRnM7KpwXvqZB9tAwW8BxbMK+BCN3dc4E6dn6MjjgZc+qwVvb0gITR86x19G4DdyZvjuY+cHRNR0dnyODwzcoYomarHK/UJ3GQY6tScc/fneCoF79YWqAkxP3j/VQxCGlOL1+QaT1IG94HbI6FfmYy0QLO1ERlEBAGuTgUtjbSpLxl9TpCOXVtMMBw8l4yzXU060qftpBXLNEEdbyQBMDIsucEVznsLribGprgCCviwnhVPDYbKq1O4gol3O8Ff2AAE3KMKhXDw==" } \ No newline at end of file