Commit f64de2eb authored by chriadam's avatar chriadam

[nemo-system-settings] Implement synchronous initialisation of...

[nemo-system-settings] Implement synchronous initialisation of LocationSettings. Contributes to JB#38371

The gps flight mode / power state functionality of LocationSettings is
provided by connman (libconnman-qt) via an asynchronous interface.
This commit allows the client to specify a flag which will force the
initialisation to occur synchronously.

Also encapsulate private data in private class to allow changes to be
made without affecting binary compatibility etc.

Contributes to JB#38371
parent 2f6fb25a
This diff is collapsed.
......@@ -36,15 +36,9 @@
#include <systemsettingsglobal.h>
#include <QObject>
#include <QFileSystemWatcher>
#include <QScopedPointer>
#include <QString>
#include <sailfishkeyprovider_processmutex.h>
class NetworkManager;
class NetworkTechnology;
class LocationSettingsPrivate;
class SYSTEMSETTINGS_EXPORT LocationSettings : public QObject
{
Q_OBJECT
......@@ -65,8 +59,14 @@ class SYSTEMSETTINGS_EXPORT LocationSettings : public QObject
Q_ENUMS(OnlineAGpsState)
public:
enum Mode {
AsynchronousMode,
SynchronousMode
};
explicit LocationSettings(QObject *parent = 0);
~LocationSettings();
explicit LocationSettings(Mode mode, QObject *parent = 0);
virtual ~LocationSettings();
bool locationEnabled() const;
void setLocationEnabled(bool enabled);
......@@ -101,22 +101,10 @@ signals:
void mlsEnabledChanged();
void mlsOnlineStateChanged();
private slots:
void readSettings();
void findGpsTech();
private:
void writeSettings();
QFileSystemWatcher m_watcher;
bool m_locationEnabled;
bool m_gpsEnabled;
bool m_mlsEnabled;
OnlineAGpsState m_mlsOnlineState;
OnlineAGpsState m_hereState;
NetworkManager *m_connMan;
NetworkTechnology *m_gpsTech;
mutable QScopedPointer<Sailfish::KeyProvider::ProcessMutex> m_processMutex;
LocationSettingsPrivate *d_ptr;
Q_DISABLE_COPY(LocationSettings)
Q_DECLARE_PRIVATE(LocationSettings)
};
#endif // LOCATIONSETTINGS_H
/*
* Copyright (C) 2017 Jolla Ltd.
* Contact: Chris Adams <chris.adams@jolla.com>
*
* You may use this file under the terms of the BSD license as follows:
*
* "Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Nemo Mobile nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
*/
#ifndef NEMO_SYSTEMSETTINGS_LOCATIONSETTINGS_P_H
#define NEMO_SYSTEMSETTINGS_LOCATIONSETTINGS_P_H
#include <QFileSystemWatcher>
#include <QScopedPointer>
#include <QDBusInterface>
#include <QVariant>
#include <QString>
#include <sailfishkeyprovider_processmutex.h>
#include "locationsettings.h"
class NetworkManager;
class NetworkTechnology;
class LocationSettingsPrivate : public QObject
{
Q_OBJECT
friend class LocationSettings;
LocationSettings *q;
public:
LocationSettingsPrivate(LocationSettings::Mode mode, LocationSettings *settings);
~LocationSettingsPrivate();
void writeSettings();
QFileSystemWatcher m_watcher;
bool m_locationEnabled;
bool m_gpsEnabled;
bool m_mlsEnabled;
LocationSettings::OnlineAGpsState m_mlsOnlineState;
LocationSettings::OnlineAGpsState m_hereState;
NetworkManager *m_connMan;
NetworkTechnology *m_gpsTech;
QDBusInterface *m_gpsTechInterface;
mutable QScopedPointer<Sailfish::KeyProvider::ProcessMutex> m_processMutex;
private slots:
void readSettings();
void findGpsTech();
void gpsTechPropertyChanged(const QString &propertyName, const QVariant &value);
};
#endif // NEMO_SYSTEMSETTINGS_LOCATIONSETTINGS_P_H
......@@ -59,6 +59,7 @@ HEADERS += \
qdbusxml2cpp_dbus_types.h \
batterystatus_p.h \
diskusage_p.h \
locationsettings_p.h \
partition_p.h \
partitionmanager_p.h
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment