dde-dock/plugins/system-tray/system-trays/abstracttrayloader.cpp
listenerri 6224d76f98 refacotr: merge other plugins to system-tray
merge sound, shutdown, network plugins to system-tray

Change-Id: Iab7aef4c56d3e1c24b408c323ef03a8276ff43f2
2018-10-24 14:12:46 +08:00

43 lines
1.1 KiB
C++

#include "abstracttrayloader.h"
#include <QDebug>
AbstractTrayLoader::AbstractTrayLoader(const QString &waitService, QObject *parent)
: QObject(parent),
m_dbusDaemonInterface(QDBusConnection::sessionBus().interface()),
m_waitingService(waitService)
{
}
bool AbstractTrayLoader::serviceExist()
{
bool exist = m_dbusDaemonInterface->isServiceRegistered(m_waitingService).value();
if (!exist) {
qDebug() << m_waitingService << "daemon has not started";
}
return exist;
}
void AbstractTrayLoader::waitServiceForLoad()
{
connect(m_dbusDaemonInterface, &QDBusConnectionInterface::serviceOwnerChanged, this, &AbstractTrayLoader::onServiceOwnerChanged, Qt::UniqueConnection);
}
void AbstractTrayLoader::onServiceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner)
{
Q_UNUSED(oldOwner);
if (m_waitingService.isEmpty() || newOwner.isEmpty()) {
return;
}
if (m_waitingService == name) {
qDebug() << m_waitingService << "daemon started, load tray and disconnect";
load();
disconnect(m_dbusDaemonInterface);
m_waitingService = QString();
}
}