17#include "URLDispatcher.h"
19#include <QDBusConnection>
22class URLDispatcherInterface :
public QObject
25 Q_CLASSINFO(
"D-Bus Interface",
"com.lomiri.URLDispatcher")
28 explicit URLDispatcherInterface(URLDispatcher *parent);
30 Q_SCRIPTABLE
void DispatchURL(const QString &url, const QString &package);
33URLDispatcherInterface::URLDispatcherInterface(URLDispatcher *parent)
38void URLDispatcherInterface::DispatchURL(
const QString &url,
const QString &package)
41 Q_EMIT
static_cast<URLDispatcher *
>(parent())->urlRequested(url);
44URLDispatcher::URLDispatcher(QObject *parent)
46 , m_dispatcher(nullptr)
50bool URLDispatcher::active()
const
52 return m_dispatcher !=
nullptr;
55void URLDispatcher::setActive(
bool value)
57 if (value == active())
60 QDBusConnection connection = QDBusConnection::sessionBus();
63 URLDispatcherInterface *dispatcher =
new URLDispatcherInterface(
this);
64 connection.registerObject(QStringLiteral(
"/com/lomiri/URLDispatcher"),
66 QDBusConnection::ExportScriptableContents);
67 if (!connection.registerService(QStringLiteral(
"com.lomiri.URLDispatcher"))) {
68 qWarning() <<
"Unable to register DBus service com.lomiri.URLDispatcher";
70 m_dispatcher = dispatcher;
72 connection.unregisterService(QStringLiteral(
"com.lomiri.URLDispatcher"));
74 m_dispatcher =
nullptr;
77 Q_EMIT activeChanged();
80#include "URLDispatcher.moc"