You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libcutefish/mpris/mprisplayerinterface.cpp

160 lines
5.6 KiB
C++

// -*- c++ -*-
/*!
*
* Copyright (C) 2015 Jolla Ltd.
*
* Contact: Valerio Valerio <valerio.valerio@jolla.com>
* Author: Andres Gomez <andres.gomez@jolla.com>
*
* 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) any later version.
*
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "mpriscontroller_p.h"
#include "mpris.h"
#include <QtCore/QtDebug>
/*
* Implementation of interface class MprisPlayerInterface
*/
MprisPlayerInterface::MprisPlayerInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent)
: DBusExtendedAbstractInterface(service, path, staticInterfaceName(), connection, parent)
, m_canControl(false)
, m_canGoNext(false)
, m_canGoPrevious(false)
, m_canPause(false)
, m_canPlay(false)
, m_canSeek(false)
, m_loopStatus(Mpris::None)
, m_maximumRate(1)
, m_minimumRate(1)
, m_playbackStatus(Mpris::Stopped)
, m_position(0)
, m_rate(1)
, m_shuffle(false)
, m_volume(0)
{
connect(this, SIGNAL(propertyChanged(QString, QVariant)), this, SLOT(onPropertyChanged(QString, QVariant)));
}
MprisPlayerInterface::~MprisPlayerInterface()
{
}
void MprisPlayerInterface::onPropertyChanged(const QString &propertyName, const QVariant &value)
{
if (propertyName == QStringLiteral("CanControl")) {
bool canControl = value.toBool();
if (m_canControl != canControl) {
m_canControl = canControl;
Q_EMIT canControlChanged(m_canControl);
}
} else if (propertyName == QStringLiteral("CanGoNext")) {
bool canGoNext = value.toBool();
if (m_canGoNext != canGoNext) {
m_canGoNext = canGoNext;
Q_EMIT canGoNextChanged(m_canGoNext);
}
} else if (propertyName == QStringLiteral("CanGoPrevious")) {
bool canGoPrevious = value.toBool();
if (m_canGoPrevious != canGoPrevious) {
m_canGoPrevious = canGoPrevious;
Q_EMIT canGoPreviousChanged(m_canGoPrevious);
}
} else if (propertyName == QStringLiteral("CanPause")) {
bool canPause = value.toBool();
if (m_canPause != canPause) {
m_canPause = canPause;
Q_EMIT canPauseChanged(m_canPause);
}
} else if (propertyName == QStringLiteral("CanPlay")) {
bool canPlay = value.toBool();
if (m_canPlay != canPlay) {
m_canPlay = canPlay;
Q_EMIT canPlayChanged(m_canPlay);
}
} else if (propertyName == QStringLiteral("CanSeek")) {
bool canSeek = value.toBool();
if (m_canSeek != canSeek) {
m_canSeek = canSeek;
Q_EMIT canSeekChanged(m_canSeek);
}
} else if (propertyName == QStringLiteral("LoopStatus")) {
QString loopStatus = value.toString();
if (m_loopStatus != loopStatus) {
m_loopStatus = loopStatus;
Q_EMIT loopStatusChanged(m_loopStatus);
}
} else if (propertyName == QStringLiteral("MaximumRate")) {
bool maximumRate = value.toDouble();
if (m_maximumRate != maximumRate) {
m_maximumRate = maximumRate;
Q_EMIT maximumRateChanged(m_maximumRate);
}
} else if (propertyName == QStringLiteral("Metadata")) {
QVariantMap metadata = value.toMap();
if (m_metadata != metadata) {
m_metadata = metadata;
Q_EMIT metadataChanged(m_metadata);
}
} else if (propertyName == QStringLiteral("MinimumRate")) {
double minimumRate = value.toDouble();
if (m_minimumRate != minimumRate) {
m_minimumRate = minimumRate;
Q_EMIT minimumRateChanged(m_minimumRate);
}
} else if (propertyName == QStringLiteral("PlaybackStatus")) {
QString playbackStatus = value.toString();
if (m_playbackStatus != playbackStatus) {
m_playbackStatus = playbackStatus;
Q_EMIT playbackStatusChanged(m_playbackStatus);
}
} else if (propertyName == QStringLiteral("Position")) {
qlonglong position = value.toLongLong();
if (m_position != position) {
m_position = position;
Q_EMIT positionChanged(m_position);
}
} else if (propertyName == QStringLiteral("Rate")) {
double rate = value.toDouble();
if (m_rate != rate) {
m_rate = rate;
Q_EMIT rateChanged(m_rate);
}
} else if (propertyName == QStringLiteral("Shuffle")) {
bool shuffle = value.toBool();
if (m_shuffle != shuffle) {
m_shuffle = shuffle;
Q_EMIT shuffleChanged(m_shuffle);
}
} else if (propertyName == QStringLiteral("Volume")) {
double volume = value.toDouble();
if (m_volume != volume) {
m_volume = volume;
Q_EMIT volumeChanged(m_volume);
}
} else {
qWarning() << Q_FUNC_INFO
<< "Received PropertyChanged signal from unknown property: "
<< propertyName;
}
}