forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.4 KiB
144 lines
4.4 KiB
/* |
|
SPDX-FileCopyrightText: 2007-2008 Matthias Kretz <[email protected]> |
|
|
|
SPDX-License-Identifier: LGPL-2.0-only |
|
*/ |
|
|
|
#include "kdeplatformplugin.h" |
|
|
|
#include <QCoreApplication> |
|
#include <QDir> |
|
#include <QFile> |
|
#include <QtPlugin> |
|
|
|
#include <KAboutData> |
|
#include <KConfigGroup> |
|
#include <KLocalizedString> |
|
#include <KMessageBox> |
|
#include <KNotification> |
|
#include <KSharedConfig> |
|
|
|
#include "debug.h" |
|
#include "kiomediastream.h" |
|
|
|
namespace Phonon |
|
{ |
|
KdePlatformPlugin::KdePlatformPlugin() |
|
{ |
|
} |
|
|
|
KdePlatformPlugin::~KdePlatformPlugin() |
|
{ |
|
} |
|
|
|
AbstractMediaStream *KdePlatformPlugin::createMediaStream(const QUrl &url, QObject *parent) |
|
{ |
|
return new KioMediaStream(url, parent); |
|
} |
|
|
|
QIcon KdePlatformPlugin::icon(const QString &name) const |
|
{ |
|
return QIcon::fromTheme(name); |
|
} |
|
|
|
void KdePlatformPlugin::notification(const char *notificationName, |
|
const QString &text, |
|
const QStringList &actions, |
|
QObject *receiver, |
|
const char *actionSlot) const |
|
{ |
|
KNotification *notification = new KNotification(notificationName); |
|
notification->setComponentName(QLatin1String("phonon")); |
|
notification->setText(text); |
|
notification->addContext(QLatin1String("Application"), KAboutData::applicationData().componentName()); |
|
if (!actions.isEmpty() && receiver && actionSlot) { |
|
notification->setActions(actions); |
|
QObject::connect(notification, SIGNAL(activated(unsigned int)), receiver, actionSlot); |
|
} |
|
notification->sendEvent(); |
|
} |
|
|
|
QString KdePlatformPlugin::applicationName() const |
|
{ |
|
KAboutData aboutData = KAboutData::applicationData(); |
|
if (!aboutData.displayName().isEmpty()) { |
|
return aboutData.displayName(); |
|
} |
|
if (!aboutData.componentName().isEmpty()) { |
|
return aboutData.componentName(); |
|
} |
|
// FIXME: why was this not localized? |
|
return QLatin1String("Qt Application"); |
|
} |
|
|
|
// Phonon4Qt5 internally implements backend lookup an creation. Driving it |
|
// through KService is not practical because Phonon4Qt5 lacks appropriate |
|
// wiring to frameworks. |
|
|
|
QObject *KdePlatformPlugin::createBackend() |
|
{ |
|
return nullptr; |
|
} |
|
|
|
QObject *KdePlatformPlugin::createBackend(const QString & /*library*/, const QString & /*version*/) |
|
{ |
|
return nullptr; |
|
} |
|
|
|
bool KdePlatformPlugin::isMimeTypeAvailable(const QString & /*mimeType*/) const |
|
{ |
|
// Static mimetype based support reporting is utter nonsense, so always say |
|
// everything is supported. |
|
// In particular there's two problems |
|
// 1. mimetypes do not map well to actual formats because the majority of |
|
// files these days are containers that can contain arbitrary content |
|
// streams, so mimetypes are too generic to properly define supportedness. |
|
// 2. just about every multimedia library in the world draws format support |
|
// from a plugin based architecture which means that technically everything |
|
// can support anything as long as there is a plugin and/or the means to |
|
// install a plugin. |
|
// So, always say every mimetype is supported. |
|
// Phonon5 will do away with all mentionings of mimetypes as well. |
|
return true; |
|
} |
|
|
|
// Volume restoration is a capability that will also be removed in Phonon5. |
|
// For proper restoration capabilities the actual platform will be used (e.g. |
|
// PulseAudio on Linux will remember streams and correctly restore the volume). |
|
|
|
void KdePlatformPlugin::saveVolume(const QString &outputName, qreal volume) |
|
{ |
|
KConfigGroup config(KSharedConfig::openConfig(), "Phonon::AudioOutput"); |
|
config.writeEntry(outputName + "_Volume", volume); |
|
} |
|
|
|
qreal KdePlatformPlugin::loadVolume(const QString &outputName) const |
|
{ |
|
KConfigGroup config(KSharedConfig::openConfig(), "Phonon::AudioOutput"); |
|
return config.readEntry<qreal>(outputName + "_Volume", 1.0); |
|
} |
|
|
|
QList<int> KdePlatformPlugin::objectDescriptionIndexes(ObjectDescriptionType type) const |
|
{ |
|
switch (type) { |
|
case AudioOutputDeviceType: |
|
case AudioCaptureDeviceType: |
|
case VideoCaptureDeviceType: |
|
default: |
|
return QList<int>(); |
|
} |
|
} |
|
|
|
QHash<QByteArray, QVariant> KdePlatformPlugin::objectDescriptionProperties(ObjectDescriptionType type, int index) const |
|
{ |
|
Q_UNUSED(index); |
|
switch (type) { |
|
case AudioOutputDeviceType: |
|
case AudioCaptureDeviceType: |
|
case VideoCaptureDeviceType: |
|
default: |
|
return QHash<QByteArray, QVariant>(); |
|
} |
|
} |
|
|
|
} // namespace Phonon
|
|
|