mirror of
https://bitbucket.org/smil3y/katie.git
synced 2025-02-25 19:32:57 +00:00
157 lines
4.8 KiB
C++
157 lines
4.8 KiB
C++
/* This file is part of the KDE project
|
|
Copyright (C) 2007 Matthias Kretz <kretz@kde.org>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) version 3, or any
|
|
later version accepted by the membership of KDE e.V. (or its
|
|
successor approved by the membership of KDE e.V.), Nokia Corporation
|
|
(or its successors, if any) and the KDE Free Qt Foundation, which shall
|
|
act as a proxy defined in Section 6 of version 3 of the license.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
#include "platform_p.h"
|
|
#include "platformplugin.h"
|
|
#include "factory_p.h"
|
|
#include <QtCore/QCoreApplication>
|
|
#include <QtCore/QUrl>
|
|
#include <QIcon>
|
|
#include <QStyle>
|
|
#include <QApplication>
|
|
|
|
namespace Phonon
|
|
{
|
|
|
|
void Platform::saveVolume(const QString &outputName, qreal volume)
|
|
{
|
|
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
|
|
PlatformPlugin *f = Factory::platformPlugin();
|
|
if (f) {
|
|
f->saveVolume(outputName, volume);
|
|
}
|
|
#else
|
|
Q_UNUSED(outputName);
|
|
Q_UNUSED(volume);
|
|
#endif //QT_NO_PHONON_PLATFORMPLUGIN
|
|
}
|
|
|
|
qreal Platform::loadVolume(const QString &outputName)
|
|
{
|
|
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
|
|
const PlatformPlugin *f = Factory::platformPlugin();
|
|
if (f) {
|
|
return f->loadVolume(outputName);
|
|
}
|
|
#else
|
|
Q_UNUSED(outputName);
|
|
#endif //QT_NO_PHONON_PLATFORMPLUGIN
|
|
return 1.0;
|
|
}
|
|
|
|
AbstractMediaStream *Platform::createMediaStream(const QUrl &url, QObject *parent)
|
|
{
|
|
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
|
|
PlatformPlugin *f = Factory::platformPlugin();
|
|
if (f) {
|
|
return f->createMediaStream(url, parent);
|
|
}
|
|
#else
|
|
Q_UNUSED(url);
|
|
Q_UNUSED(parent);
|
|
#endif //QT_NO_PHONON_PLATFORMPLUGIN
|
|
return 0;
|
|
}
|
|
|
|
QIcon Platform::icon(const QString &name, QStyle *style)
|
|
{
|
|
QIcon ret;
|
|
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
|
|
if (const PlatformPlugin *f = Factory::platformPlugin()) {
|
|
ret = f->icon(name);
|
|
}
|
|
#endif //QT_NO_PHONON_PLATFORMPLUGIN
|
|
|
|
// No platform plugin present. Use internal versions.
|
|
if (ret.isNull()) {
|
|
if (!style) {
|
|
style = QApplication::style();
|
|
}
|
|
if (name == QLatin1String("player-volume")) {
|
|
ret = style->standardPixmap(QStyle::SP_MediaVolume);
|
|
} else if (name == QLatin1String("player-volume-muted")) {
|
|
ret = style->standardPixmap(QStyle::SP_MediaVolumeMuted);
|
|
}
|
|
}
|
|
|
|
// Still no icon set. Use QIcon to access the platform theme.
|
|
if (ret.isNull())
|
|
ret = QIcon::fromTheme(name);
|
|
|
|
// Now we are getting angry... keep dropping '-foo' parts from the end of
|
|
// the name until we get something usable or run out of substrings.
|
|
// (this is a simplified version of fallback lookup as done by KIconLoader;
|
|
// essentially audio-card-pci can also be provided by audio-card which is
|
|
// the more generic version).
|
|
QString choppedName = name;
|
|
while (ret.isNull() && !choppedName.isEmpty()) {
|
|
choppedName.resize(choppedName.lastIndexOf(QChar('-')));
|
|
ret = QIcon::fromTheme(choppedName);
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
void Platform::notification(const char *notificationName, const QString &text,
|
|
const QStringList &actions, QObject *receiver,
|
|
const char *actionSlot)
|
|
{
|
|
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
|
|
const PlatformPlugin *f = Factory::platformPlugin();
|
|
if (f) {
|
|
f->notification(notificationName, text, actions, receiver, actionSlot);
|
|
}
|
|
#else
|
|
Q_UNUSED(notificationName);
|
|
Q_UNUSED(text);
|
|
Q_UNUSED(actions);
|
|
Q_UNUSED(receiver);
|
|
Q_UNUSED(actionSlot);
|
|
#endif //QT_NO_PHONON_PLATFORMPLUGIN
|
|
}
|
|
|
|
QString Platform::applicationName()
|
|
{
|
|
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
|
|
const PlatformPlugin *f = Factory::platformPlugin();
|
|
if (f) {
|
|
return f->applicationName();
|
|
}
|
|
#endif //QT_NO_PHONON_PLATFORMPLUGIN
|
|
QString ret = QCoreApplication::applicationName();
|
|
if (ret.isEmpty())
|
|
ret = QCoreApplication::applicationFilePath();
|
|
return ret;
|
|
}
|
|
|
|
QList<QPair<QByteArray, QString> > Platform::deviceAccessListFor(const Phonon::AudioOutputDevice &deviceDesc)
|
|
{
|
|
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
|
|
const PlatformPlugin *f = Factory::platformPlugin();
|
|
if (f) {
|
|
return f->deviceAccessListFor(deviceDesc);
|
|
}
|
|
#endif //QT_NO_PHONON_PLATFORMPLUGIN
|
|
return QList<QPair<QByteArray, QString> >();
|
|
}
|
|
|
|
} // namespace Phonon
|