1 | /* |
2 | SPDX-FileCopyrightText: 2009 Pino Toscano <pino@kde.org> |
3 | SPDX-FileCopyrightText: 2009-2012 Lukáš Tinkl <ltinkl@redhat.com> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL |
6 | */ |
7 | |
8 | #ifndef UDISKSSTORAGEACCESS_H |
9 | #define UDISKSSTORAGEACCESS_H |
10 | |
11 | #include "udisksdeviceinterface.h" |
12 | #include <solid/devices/ifaces/storageaccess.h> |
13 | |
14 | #include <QDBusError> |
15 | #include <QDBusMessage> |
16 | |
17 | namespace Solid |
18 | { |
19 | namespace Backends |
20 | { |
21 | namespace UDisks2 |
22 | { |
23 | class StorageAccess : public DeviceInterface, virtual public Solid::Ifaces::StorageAccess |
24 | { |
25 | Q_OBJECT |
26 | Q_INTERFACES(Solid::Ifaces::StorageAccess) |
27 | |
28 | public: |
29 | StorageAccess(Device *device); |
30 | ~StorageAccess() override; |
31 | |
32 | bool isAccessible() const override; |
33 | QString filePath() const override; |
34 | bool isIgnored() const override; |
35 | bool setup() override; |
36 | bool teardown() override; |
37 | bool isEncrypted() const override; |
38 | |
39 | bool canCheck() const override; |
40 | bool check() override; |
41 | bool canRepair() const override; |
42 | bool repair() override; |
43 | |
44 | Q_SIGNALS: |
45 | void accessibilityChanged(bool accessible, const QString &udi) override; |
46 | void setupDone(Solid::ErrorType error, QVariant errorData, const QString &udi) override; |
47 | void teardownDone(Solid::ErrorType error, QVariant errorData, const QString &udi) override; |
48 | void setupRequested(const QString &udi) override; |
49 | void teardownRequested(const QString &udi) override; |
50 | void checkRequested(const QString &udi) override; |
51 | void checkDone(Solid::ErrorType error, QVariant errorData, const QString &udi) override; |
52 | void repairRequested(const QString &udi) override; |
53 | void repairDone(Solid::ErrorType error, QVariant errorData, const QString &udi) override; |
54 | |
55 | public Q_SLOTS: |
56 | Q_SCRIPTABLE Q_NOREPLY void passphraseReply(const QString &passphrase); |
57 | |
58 | private Q_SLOTS: |
59 | void slotDBusReply(const QDBusMessage &reply); |
60 | void slotDBusError(const QDBusError &error); |
61 | |
62 | void connectDBusSignals(); |
63 | |
64 | void slotSetupRequested(); |
65 | void slotSetupDone(int error, const QString &errorString); |
66 | void slotTeardownRequested(); |
67 | void slotTeardownDone(int error, const QString &errorString); |
68 | void slotCheckRequested(); |
69 | void slotCheckDone(int error, const QString &errorString); |
70 | void slotRepairRequested(); |
71 | void slotRepairDone(int error, const QString &errorString); |
72 | |
73 | void checkAccessibility(); |
74 | |
75 | private: |
76 | /// @return true if this device is luks and unlocked |
77 | bool isLuksDevice() const; |
78 | |
79 | void updateCache(); |
80 | |
81 | bool mount(); |
82 | bool unmount(); |
83 | |
84 | bool requestPassphrase(); |
85 | void callCryptoSetup(const QString &passphrase); |
86 | bool callCryptoTeardown(bool actOnParent = false); |
87 | |
88 | QString generateReturnObjectPath(); |
89 | QString clearTextPath() const; |
90 | |
91 | QString dbusPath() const; |
92 | |
93 | private: |
94 | bool m_isAccessible; |
95 | bool m_setupInProgress; |
96 | bool m_teardownInProgress; |
97 | bool m_checkInProgress; |
98 | bool m_repairInProgress; |
99 | bool m_passphraseRequested; |
100 | QString m_lastReturnObject; |
101 | |
102 | static const int s_unmountTimeout = 0x7fffffff; |
103 | }; |
104 | } |
105 | } |
106 | } |
107 | |
108 | #endif // UDISKSSTORAGEACCESS_H |
109 | |