Files
kdeconnect-kde-mirror/core/daemon.h
Carl Schwan 4c5d70b620 Do not reuse UI strings for storing configs
UI strings must be translated while config values must not be
translated. As such keep the old name for the providers in the backend
and map these names in the frontend to user friendly strings.

Basically revert two sub commits from the !733

Ammend: 7664efbdcb
2024-12-22 23:15:53 +01:00

102 lines
3.4 KiB
C++

/**
* SPDX-FileCopyrightText: 2013 Albert Vaca <albertvaka@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#ifndef KDECONNECT_DAEMON_H
#define KDECONNECT_DAEMON_H
#include <QMap>
#include <QObject>
#include <QSet>
#include "device.h"
#include "kdeconnectcore_export.h"
class NetworkPacket;
class DeviceLink;
class Device;
class QNetworkAccessManager;
class KJobTrackerInterface;
class KDECONNECTCORE_EXPORT Daemon : public QObject
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.daemon")
Q_PROPERTY(QStringList pairingRequests READ pairingRequests NOTIFY pairingRequestsChanged)
Q_PROPERTY(QStringList customDevices READ customDevices WRITE setCustomDevices NOTIFY customDevicesChanged)
public:
explicit Daemon(QObject *parent, bool testMode = false);
~Daemon() override;
static Daemon *instance();
QList<Device *> devicesList() const;
virtual void askPairingConfirmation(Device *device) = 0;
virtual void reportError(const QString &title, const QString &description) = 0;
virtual void quit() = 0;
QNetworkAccessManager *networkAccessManager();
virtual KJobTrackerInterface *jobTracker() = 0;
Device *getDevice(const QString &deviceId);
QSet<LinkProvider *> getLinkProviders() const;
QStringList pairingRequests() const;
// Custom devices
QStringList customDevices() const;
void setCustomDevices(const QStringList &addresses);
Q_SCRIPTABLE QString selfId() const;
public Q_SLOTS:
Q_SCRIPTABLE void forceOnNetworkChange();
/// don't try to turn into Q_PROPERTY, it doesn't work
Q_SCRIPTABLE QString announcedName();
Q_SCRIPTABLE void setAnnouncedName(const QString &name);
// Returns a list of ids. The respective devices can be manipulated using the dbus path: "/modules/kdeconnect/Devices/"+id
Q_SCRIPTABLE QStringList devices(bool onlyReachable = false, bool onlyPaired = false) const;
Q_SCRIPTABLE QMap<QString, QString> deviceNames(bool onlyReachable = false, bool onlyPaired = false) const;
Q_SCRIPTABLE QString deviceIdByName(const QString &name) const;
/// Return the list of link providers with their state e.g. "BluetoothLinkProvider|enabled"
Q_SCRIPTABLE QStringList linkProviders() const;
/// Set the state of a link provider.
Q_SCRIPTABLE void setLinkProviderState(const QString &linkProvider, bool enabled);
Q_SCRIPTABLE virtual void sendSimpleNotification(const QString &eventId, const QString &title, const QString &text, const QString &iconName) = 0;
Q_SIGNALS:
Q_SCRIPTABLE void deviceAdded(const QString &id);
Q_SCRIPTABLE void deviceRemoved(const QString &id); // Note that paired devices will never be removed
Q_SCRIPTABLE void deviceVisibilityChanged(const QString &id, bool isVisible);
Q_SCRIPTABLE void deviceListChanged(); // Emitted when any of deviceAdded, deviceRemoved or deviceVisibilityChanged is emitted
Q_SCRIPTABLE void announcedNameChanged(const QString &announcedName);
Q_SCRIPTABLE void pairingRequestsChanged();
Q_SCRIPTABLE void linkProvidersChanged(const QStringList &linkProviders);
Q_SCRIPTABLE void customDevicesChanged(const QStringList &customDevices);
private Q_SLOTS:
void onNewDeviceLink(DeviceLink *dl);
void onDeviceStatusChanged();
private:
void init();
protected:
void addDevice(Device *device);
void removeDevice(Device *d);
const std::unique_ptr<struct DaemonPrivate> d;
};
#endif