File indexing completed on 2024-05-05 03:50:35

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2009 Eckhart Wörner <ewoerner@kde.org>
0004 //
0005 
0006 #include "MasterClient_p.h"
0007 
0008 #include <QString>
0009 #include <QDBusMessage>
0010 #include <QDBusReply>
0011 #include <QDBusObjectPath>
0012 
0013 #include "PositionProvider.h"
0014 
0015 
0016 
0017 using namespace GeoCute;
0018 
0019 static QString createClientPath()
0020 {
0021     SimpleDBusInterface masterInterface(serviceName, masterPathName,
0022         masterInterfaceName);
0023     QDBusReply<QDBusObjectPath> reply = masterInterface.call("Create");
0024     if (reply.isValid())
0025         return reply.value().path();
0026     else
0027     return QString();
0028 }
0029 
0030 MasterClient::Private::Private()
0031     : interface(serviceName, createClientPath(), interfaceName)
0032 {
0033 }
0034 
0035 MasterClient::MasterClient(QObject* parent)
0036     : QObject(parent), d(new Private)
0037 {
0038 }
0039 
0040 MasterClient::~MasterClient()
0041 {
0042     delete d;
0043 }
0044 
0045 void MasterClient::setRequirements(AccuracyLevel accuracy, int min_time,
0046     SignallingFlags signalling, ResourceFlags resources)
0047 {
0048     if (!d->interface.path().isEmpty()) {
0049         d->interface.call("SetRequirements", accuracy, min_time,
0050         signalling == SignallingRequired, resources);
0051     }
0052 }
0053 
0054 PositionProvider* MasterClient::positionProvider()
0055 {
0056     if (!d->interface.path().isEmpty()) {
0057         d->interface.call("PositionStart");
0058         return new PositionProvider(d->interface.service(), d->interface.path());
0059     } else
0060         return 0;
0061 }
0062 
0063 
0064 
0065 #include "moc_MasterClient.cpp"