mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-07 07:33:52 +02:00
Added new commands to Quit and Raise for Linux MPRIS.
This commit is contained in:
parent
13c70a9ce9
commit
d22601461a
4 changed files with 24 additions and 8 deletions
|
@ -82,10 +82,7 @@ void FeedLangTestingKey(int key) {
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
MainWindow::MainWindow(not_null<Window::Controller*> controller)
|
MainWindow::MainWindow(not_null<Window::Controller*> controller)
|
||||||
: Platform::MainWindow(controller)
|
: Platform::MainWindow(controller) {
|
||||||
, _mediaControlsManager(Window::SystemMediaControlsManager::Supported()
|
|
||||||
? std::make_unique<Window::SystemMediaControlsManager>(this)
|
|
||||||
: nullptr) {
|
|
||||||
|
|
||||||
auto logo = Core::App().logo();
|
auto logo = Core::App().logo();
|
||||||
icon16 = logo.scaledToWidth(16, Qt::SmoothTransformation);
|
icon16 = logo.scaledToWidth(16, Qt::SmoothTransformation);
|
||||||
|
@ -135,6 +132,11 @@ void MainWindow::initHook() {
|
||||||
this,
|
this,
|
||||||
[=] { checkHistoryActivation(); },
|
[=] { checkHistoryActivation(); },
|
||||||
Qt::QueuedConnection);
|
Qt::QueuedConnection);
|
||||||
|
|
||||||
|
if (Window::SystemMediaControlsManager::Supported()) {
|
||||||
|
using MediaManager = Window::SystemMediaControlsManager;
|
||||||
|
_mediaControlsManager = std::make_unique<MediaManager>(&controller());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::createTrayIconMenu() {
|
void MainWindow::createTrayIconMenu() {
|
||||||
|
|
|
@ -132,7 +132,7 @@ private:
|
||||||
QPixmap grabInner();
|
QPixmap grabInner();
|
||||||
|
|
||||||
using MediaControlsManager = Window::SystemMediaControlsManager;
|
using MediaControlsManager = Window::SystemMediaControlsManager;
|
||||||
const std::unique_ptr<MediaControlsManager> _mediaControlsManager;
|
std::unique_ptr<MediaControlsManager> _mediaControlsManager;
|
||||||
|
|
||||||
QImage icon16, icon32, icon64, iconbig16, iconbig32, iconbig64;
|
QImage icon16, icon32, icon64, iconbig16, iconbig32, iconbig64;
|
||||||
|
|
||||||
|
|
|
@ -13,10 +13,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "data/data_document.h"
|
#include "data/data_document.h"
|
||||||
#include "data/data_document_media.h"
|
#include "data/data_document_media.h"
|
||||||
#include "data/data_file_origin.h"
|
#include "data/data_file_origin.h"
|
||||||
|
#include "mainwidget.h"
|
||||||
|
#include "main/main_account.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "media/audio/media_audio.h"
|
#include "media/audio/media_audio.h"
|
||||||
#include "media/player/media_player_instance.h"
|
#include "media/player/media_player_instance.h"
|
||||||
#include "ui/text/format_song_document_name.h"
|
#include "ui/text/format_song_document_name.h"
|
||||||
|
#include "window/window_controller.h"
|
||||||
|
|
||||||
namespace Window {
|
namespace Window {
|
||||||
|
|
||||||
|
@ -25,14 +28,14 @@ bool SystemMediaControlsManager::Supported() {
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMediaControlsManager::SystemMediaControlsManager(
|
SystemMediaControlsManager::SystemMediaControlsManager(
|
||||||
not_null<QWidget*> parent)
|
not_null<Window::Controller*> controller)
|
||||||
: _controls(std::make_unique<base::Platform::SystemMediaControls>()) {
|
: _controls(std::make_unique<base::Platform::SystemMediaControls>()) {
|
||||||
|
|
||||||
using PlaybackStatus =
|
using PlaybackStatus =
|
||||||
base::Platform::SystemMediaControls::PlaybackStatus;
|
base::Platform::SystemMediaControls::PlaybackStatus;
|
||||||
using Command = base::Platform::SystemMediaControls::Command;
|
using Command = base::Platform::SystemMediaControls::Command;
|
||||||
|
|
||||||
const auto inited = _controls->init(parent.get());
|
const auto inited = _controls->init(controller->widget());
|
||||||
if (!inited) {
|
if (!inited) {
|
||||||
LOG(("SystemMediaControlsManager failed to init."));
|
LOG(("SystemMediaControlsManager failed to init."));
|
||||||
return;
|
return;
|
||||||
|
@ -162,6 +165,13 @@ SystemMediaControlsManager::SystemMediaControlsManager(
|
||||||
case Command::Next: mediaPlayer->next(type); break;
|
case Command::Next: mediaPlayer->next(type); break;
|
||||||
case Command::Previous: mediaPlayer->previous(type); break;
|
case Command::Previous: mediaPlayer->previous(type); break;
|
||||||
case Command::Stop: mediaPlayer->stop(type); break;
|
case Command::Stop: mediaPlayer->stop(type); break;
|
||||||
|
case Command::Raise: controller->widget()->showFromTray(); break;
|
||||||
|
case Command::Quit: {
|
||||||
|
if (const auto main = controller->widget()->sessionContent()) {
|
||||||
|
main->closeBothPlayers();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, _lifetime);
|
}, _lifetime);
|
||||||
|
|
||||||
|
|
|
@ -15,11 +15,15 @@ namespace Data {
|
||||||
class DocumentMedia;
|
class DocumentMedia;
|
||||||
} // namespace Data
|
} // namespace Data
|
||||||
|
|
||||||
|
namespace Window {
|
||||||
|
class Controller;
|
||||||
|
} // namespace Window
|
||||||
|
|
||||||
namespace Window {
|
namespace Window {
|
||||||
|
|
||||||
class SystemMediaControlsManager {
|
class SystemMediaControlsManager {
|
||||||
public:
|
public:
|
||||||
SystemMediaControlsManager(not_null<QWidget*> parent);
|
SystemMediaControlsManager(not_null<Window::Controller*> controller);
|
||||||
~SystemMediaControlsManager();
|
~SystemMediaControlsManager();
|
||||||
|
|
||||||
static bool Supported();
|
static bool Supported();
|
||||||
|
|
Loading…
Add table
Reference in a new issue