1/*
2 SPDX-FileCopyrightText: 2006 Michaƫl Larouche <michael.larouche@kdemail.net>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#ifndef SOLID_BACKENDS_FAKEHW_FAKEMANAGER_H
8#define SOLID_BACKENDS_FAKEHW_FAKEMANAGER_H
9
10#include <solid/devices/ifaces/devicemanager.h>
11
12class QDomElement;
13
14using namespace Solid::Ifaces;
15
16namespace Solid
17{
18namespace Backends
19{
20namespace Fake
21{
22class FakeDevice;
23
24/*!
25 * A Fake manager that read a device list from a XML file.
26 * This fake manager is used for unit tests and developers.
27 *
28 * \internal
29 */
30class FakeManager : public Solid::Ifaces::DeviceManager
31{
32 Q_OBJECT
33public:
34 FakeManager(QObject *parent, const QString &xmlFile);
35 ~FakeManager() override;
36
37 QString udiPrefix() const override;
38 QSet<Solid::DeviceInterface::Type> supportedInterfaces() const override;
39
40 /*!
41 * Return the list of UDI of all available devices.
42 */
43 QStringList allDevices() override;
44
45 QStringList devicesFromQuery(const QString &parentUdi, Solid::DeviceInterface::Type type) override;
46
47 QObject *createDevice(const QString &udi) override;
48 virtual FakeDevice *findDevice(const QString &udi);
49
50public Q_SLOTS:
51 void plug(const QString &udi);
52 void unplug(const QString &udi);
53
54private Q_SLOTS:
55 /*!
56 * @internal
57 * Parse the XML file that represent the fake machine.
58 */
59 void parseMachineFile();
60 /*!
61 * @internal
62 * Parse a device node and the return the device.
63 */
64 FakeDevice *parseDeviceElement(const QDomElement &element);
65
66private:
67 QStringList findDeviceStringMatch(const QString &key, const QString &value);
68 QStringList findDeviceByDeviceInterface(Solid::DeviceInterface::Type type);
69
70 class Private;
71 Private *d;
72};
73}
74}
75}
76
77#endif // SOLID_BACKENDS_FAKEHW_FAKEMANAGER_H
78

source code of solid/src/solid/devices/backends/fakehw/fakemanager.h