Introduce MediaManager

Currently, this is only to pause playback of other media when something new starts playing.
In the future, it will also be used for other things, like call ringing, etc.
This commit is contained in:
Tobias Fella
2024-02-18 21:34:15 +01:00
parent b27bec3e16
commit d99fae333a
5 changed files with 78 additions and 1 deletions

42
src/mediamanager.h Normal file
View File

@@ -0,0 +1,42 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
#pragma once
#include <QObject>
#include <QQmlEngine>
/**
* @class MediaManager
*
* Manages media playback, like voice/audio messages, videos, etc.
*/
class MediaManager : public QObject
{
Q_OBJECT
QML_ELEMENT
QML_SINGLETON
public:
static MediaManager &instance()
{
static MediaManager _instance;
return _instance;
}
static MediaManager *create(QQmlEngine *, QJSEngine *)
{
QQmlEngine::setObjectOwnership(&instance(), QQmlEngine::CppOwnership);
return &instance();
}
/**
* @brief Notify other objects that media playback has started.
*/
Q_INVOKABLE void startPlayback();
Q_SIGNALS:
/**
* @brief Emitted when any media player starts playing. Other objects should stop / pause playback.
*/
void playbackStarted();
};