Solid

udisksstorageaccess.h
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
17namespace Solid
18{
19namespace Backends
20{
21namespace UDisks2
22{
23class StorageAccess : public DeviceInterface, virtual public Solid::Ifaces::StorageAccess
24{
26 Q_INTERFACES(Solid::Ifaces::StorageAccess)
27
28public:
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
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
55public Q_SLOTS:
56 Q_SCRIPTABLE Q_NOREPLY void passphraseReply(const QString &passphrase);
57
58private 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
75private:
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
93private:
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
Q_INTERFACES(...)
Q_OBJECTQ_OBJECT
Q_SIGNALSQ_SIGNALS
Q_SLOTSQ_SLOTS
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Feb 28 2025 11:49:37 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.