2014-11-19 02:23:05 +00:00
|
|
|
/*
|
|
|
|
* KMix -- KDE's full featured mini mixer
|
|
|
|
*
|
|
|
|
* Copyright 2011 Igor Poboiko <igor.poboiko@gmail.com>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program 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
|
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
|
|
|
* License along with this program; if not, write to the Free
|
|
|
|
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "dbusmixsetwrapper.h"
|
|
|
|
|
|
|
|
#include "core/mixdevice.h"
|
|
|
|
#include "core/ControlManager.h"
|
|
|
|
#include "mixsetadaptor.h"
|
|
|
|
|
|
|
|
DBusMixSetWrapper* DBusMixSetWrapper::instanceSingleton;
|
|
|
|
|
|
|
|
void DBusMixSetWrapper::initialize(QObject* parent, const QString& path)
|
|
|
|
{
|
|
|
|
/* This should not happen! */
|
|
|
|
if (instanceSingleton)
|
|
|
|
delete instanceSingleton;
|
|
|
|
instanceSingleton = new DBusMixSetWrapper(parent, path);
|
|
|
|
}
|
|
|
|
|
|
|
|
DBusMixSetWrapper* DBusMixSetWrapper::instance() {
|
|
|
|
return instanceSingleton;
|
|
|
|
}
|
|
|
|
|
|
|
|
DBusMixSetWrapper::DBusMixSetWrapper(QObject* parent, const QString& path)
|
|
|
|
: QObject(parent)
|
|
|
|
, m_dbusPath( path )
|
|
|
|
{
|
|
|
|
new MixSetAdaptor( this );
|
|
|
|
QDBusConnection::sessionBus().registerObject( m_dbusPath, this );
|
|
|
|
|
|
|
|
ControlManager::instance().addListener(
|
|
|
|
QString(),
|
|
|
|
ControlChangeType::MasterChanged,
|
|
|
|
this,
|
|
|
|
QString("DBusMixSetWrapper"));
|
|
|
|
}
|
|
|
|
|
|
|
|
DBusMixSetWrapper::~DBusMixSetWrapper()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void DBusMixSetWrapper::controlsChange(int changeType)
|
|
|
|
{
|
|
|
|
ControlChangeType::Type type = ControlChangeType::fromInt(changeType);
|
|
|
|
switch (type)
|
|
|
|
{
|
|
|
|
case ControlChangeType::MasterChanged:
|
|
|
|
signalMasterChanged();
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
ControlManager::warnUnexpectedChangeType(type, this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
QStringList DBusMixSetWrapper::mixers() const
|
|
|
|
{
|
|
|
|
QStringList result;
|
|
|
|
Q_FOREACH(Mixer* mixer, Mixer::mixers())
|
|
|
|
result.append( mixer->dbusPath() );
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
QString DBusMixSetWrapper::currentMasterMixer() const
|
|
|
|
{
|
|
|
|
Mixer* masterMixer = Mixer::getGlobalMasterMixer();
|
|
|
|
return masterMixer ? masterMixer->id() : QString();
|
|
|
|
}
|
|
|
|
|
|
|
|
QString DBusMixSetWrapper::currentMasterControl() const
|
|
|
|
{
|
2020-02-19 16:13:43 +00:00
|
|
|
std::shared_ptr<MixDevice> masterControl = Mixer::getGlobalMasterMD();
|
2014-11-19 02:23:05 +00:00
|
|
|
return masterControl ? masterControl->id() : QString();
|
|
|
|
}
|
|
|
|
|
|
|
|
QString DBusMixSetWrapper::preferredMasterMixer() const
|
|
|
|
{
|
|
|
|
return Mixer::getGlobalMasterPreferred().getCard();
|
|
|
|
}
|
|
|
|
|
|
|
|
QString DBusMixSetWrapper::preferredMasterControl() const
|
|
|
|
{
|
|
|
|
return Mixer::getGlobalMasterPreferred().getControl();
|
|
|
|
}
|
|
|
|
|
|
|
|
void DBusMixSetWrapper::setCurrentMaster(const QString &mixer, const QString &control)
|
|
|
|
{
|
|
|
|
Mixer::setGlobalMaster(mixer, control, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void DBusMixSetWrapper::setPreferredMaster(const QString &mixer, const QString &control)
|
|
|
|
{
|
|
|
|
Mixer::setGlobalMaster(mixer, control, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
void DBusMixSetWrapper::signalMixersChanged()
|
|
|
|
{
|
|
|
|
QDBusMessage signal = QDBusMessage::createSignal( m_dbusPath,
|
|
|
|
"org.kde.KMix.MixSet", "mixersChanged" );
|
|
|
|
QDBusConnection::sessionBus().send( signal );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DBusMixSetWrapper::signalMasterChanged()
|
|
|
|
{
|
|
|
|
QDBusMessage signal = QDBusMessage::createSignal( m_dbusPath,
|
|
|
|
"org.kde.KMix.MixSet", "masterChanged" );
|
|
|
|
QDBusConnection::sessionBus().send( signal );
|
|
|
|
}
|
|
|
|
|
2015-02-27 11:02:43 +00:00
|
|
|
#include "moc_dbusmixsetwrapper.cpp"
|