Skip to content

Latest commit

 

History

History
182 lines (154 loc) · 6.68 KB

partitionmodel.h

File metadata and controls

182 lines (154 loc) · 6.68 KB
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
* Copyright (C) 2016 Jolla Ltd. <andrew.den.exter@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 PARTITIONMODEL_H
#define PARTITIONMODEL_H
#include <QAbstractListModel>
#include <partitionmanager.h>
class SYSTEMSETTINGS_EXPORT PartitionModel : public QAbstractListModel
{
Q_OBJECT
Q_ENUMS(Status)
Q_ENUMS(StorageType)
Q_FLAGS(StorageTypes)
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
Q_PROPERTY(StorageTypes storageTypes READ storageTypes WRITE setStorageTypes NOTIFY storageTypesChanged)
Aug 21, 2018
Aug 21, 2018
47
Q_PROPERTY(QStringList supportedFormatTypes READ supportedFormatTypes CONSTANT)
Aug 22, 2019
Aug 22, 2019
48
Q_PROPERTY(bool externalStoragesPopulated READ externalStoragesPopulated NOTIFY externalStoragesPopulatedChanged)
Aug 21, 2018
Aug 21, 2018
49
50
51
52
53
54
55
56
57
public:
enum {
ReadOnlyRole,
StatusRole,
CanMountRole,
MountFailedRole,
StorageTypeRole,
FilesystemTypeRole,
Aug 21, 2018
Aug 21, 2018
58
DeviceLabelRole,
Feb 6, 2018
Feb 6, 2018
60
DeviceNameRole,
61
62
63
64
MountPathRole,
BytesAvailableRole,
BytesTotalRole,
BytesFreeRole,
Aug 31, 2018
Aug 31, 2018
65
66
PartitionModelRole,
IsCryptoDeviceRoles,
Sep 4, 2018
Sep 4, 2018
67
IsSupportedFileSystemType,
Sep 12, 2018
Sep 12, 2018
68
IsEncryptedRoles,
Oct 31, 2018
Oct 31, 2018
69
CryptoBackingDevicePath,
Nov 28, 2018
Nov 28, 2018
70
DriveRole,
Aug 21, 2018
Aug 21, 2018
73
// For Status role
74
75
76
77
enum Status {
Unmounted = Partition::Unmounted,
Mounting = Partition::Mounting,
Mounted = Partition::Mounted,
Aug 21, 2018
Aug 21, 2018
78
79
Unmounting = Partition::Unmounting,
Formatting = Partition::Formatting,
Aug 29, 2018
Aug 29, 2018
80
81
82
83
84
Formatted = Partition::Formatted,
Unlocking = Partition::Unlocking,
Unlocked = Partition::Unlocked,
Locking = Partition::Locking,
Locked = Partition::Locked,
85
86
87
88
89
90
91
92
93
};
enum StorageType {
Invalid = Partition::Invalid,
System = Partition::System,
User = Partition::User,
Mass = Partition::Mass,
External = Partition::External,
Aug 21, 2018
Aug 21, 2018
94
ExcludeParents = Partition::ExcludeParents,
95
96
97
98
99
Internal = Partition::Internal,
Any = Partition::Any
};
Oct 31, 2018
Oct 31, 2018
100
101
102
103
104
105
106
107
enum ConnectionBus {
SDIO = Partition::SDIO,
USB = Partition::USB,
IEEE1394 = Partition::IEEE1394,
UnknownBus = Partition::UnknownBus
};
Q_ENUM(ConnectionBus)
Aug 21, 2018
Aug 21, 2018
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
enum Error {
ErrorFailed = Partition::ErrorFailed,
ErrorCancelled = Partition::ErrorCancelled,
ErrorAlreadyCancelled = Partition::ErrorAlreadyCancelled,
ErrorNotAuthorized = Partition::ErrorNotAuthorized,
ErrorNotAuthorizedCanObtain = Partition::ErrorNotAuthorizedCanObtain,
ErrorNotAuthorizedDismissed = Partition::ErrorNotAuthorizedDismissed,
ErrorAlreadyMounted = Partition::ErrorAlreadyMounted,
ErrorNotMounted = Partition::ErrorNotMounted,
ErrorOptionNotPermitted = Partition::ErrorOptionNotPermitted,
ErrorMountedByOtherUser = Partition::ErrorMountedByOtherUser,
ErrorAlreadyUnmounting = Partition::ErrorAlreadyUnmounting,
ErrorNotSupported = Partition::ErrorNotSupported,
ErrorTimedout = Partition::ErrorTimedout,
ErrorWouldWakeup = Partition::ErrorWouldWakeup,
ErrorDeviceBusy = Partition::ErrorDeviceBusy
};
Q_ENUM(Error)
127
128
129
130
131
132
133
134
Q_DECLARE_FLAGS(StorageTypes, StorageType)
explicit PartitionModel(QObject *parent = 0);
~PartitionModel();
StorageTypes storageTypes() const;
void setStorageTypes(StorageTypes storageTypes);
Aug 21, 2018
Aug 21, 2018
135
QStringList supportedFormatTypes() const;
Aug 22, 2019
Aug 22, 2019
136
bool externalStoragesPopulated() const;
Aug 21, 2018
Aug 21, 2018
137
138
139
140
Q_INVOKABLE void refresh();
Q_INVOKABLE void refresh(int index);
Sep 19, 2018
Sep 19, 2018
141
142
143
144
Q_INVOKABLE void lock(const QString &devicePath);
Q_INVOKABLE void unlock(const QString &devicePath, const QString &passphrase);
Q_INVOKABLE void mount(const QString &devicePath);
Q_INVOKABLE void unmount(const QString &devicePath);
Sep 26, 2018
Sep 26, 2018
145
Q_INVOKABLE void format(const QString &devicePath, const QVariantMap &arguments);
Aug 21, 2018
Aug 21, 2018
146
Sep 19, 2018
Sep 19, 2018
147
Q_INVOKABLE QString objectPath(const QString &devicePath) const;
Sep 4, 2018
Sep 4, 2018
148
149
150
151
152
153
154
155
156
QHash<int, QByteArray> roleNames() const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
QVariant data(const QModelIndex &index, int role) const;
signals:
void countChanged();
void storageTypesChanged();
Aug 22, 2019
Aug 22, 2019
157
void externalStoragesPopulatedChanged();
Aug 21, 2018
Aug 21, 2018
159
void errorMessage(const QString &objectPath, const QString &errorName);
Aug 29, 2018
Aug 29, 2018
160
161
void lockError(Error error);
void unlockError(Error error);
Aug 21, 2018
Aug 21, 2018
162
163
164
165
void mountError(Error error);
void unmountError(Error error);
void formatError(Error error);
166
167
168
private:
void update();
Sep 19, 2018
Sep 19, 2018
169
const Partition *getPartition(const QString &devicePath) const;
Sep 4, 2018
Sep 4, 2018
170
171
172
173
174
175
176
177
178
179
180
181
182
void partitionChanged(const Partition &partition);
void partitionAdded(const Partition &partition);
void partitionRemoved(const Partition &partition);
QExplicitlySharedDataPointer<PartitionManagerPrivate> m_manager;
QVector<Partition> m_partitions;
StorageTypes m_storageTypes;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(PartitionModel::StorageTypes)
#endif