Skip to content
This repository was archived by the owner on Apr 28, 2022. It is now read-only.

Commit 5f315b1

Browse files
committed
[nemo-storage] Expose drive map from the partition model. Contributes to JB#42943
This can be used e.g. when showing unsupported partitions.
1 parent bc99cc0 commit 5f315b1

File tree

9 files changed

+41
-17
lines changed

9 files changed

+41
-17
lines changed

src/partition.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ Partition::StorageType Partition::storageType() const
101101
return d ? d->storageType : Invalid;
102102
}
103103

104-
Partition::ConnectionBus Partition::connectionBus() const
104+
QVariantMap Partition::drive() const
105105
{
106-
return d ? d->connectionBus : UnknownBus;
106+
return d ? d->drive : QVariantMap();
107107
}
108108

109109
QString Partition::devicePath() const

src/partition.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ class SYSTEMSETTINGS_EXPORT Partition
115115
QString cryptoBackingDevicePath() const;
116116

117117
StorageType storageType() const;
118-
ConnectionBus connectionBus() const;
118+
QVariantMap drive() const;
119119

120120
QString devicePath() const;
121121
QString deviceName() const;

src/partition_p.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434

3535
#include "partition.h"
3636

37+
#include <QVariantMap>
38+
3739
class PartitionManagerPrivate;
3840

3941
class PartitionPrivate : public QSharedData
@@ -45,7 +47,6 @@ class PartitionPrivate : public QSharedData
4547
, bytesTotal(0)
4648
, bytesFree(0)
4749
, storageType(Partition::Invalid)
48-
, connectionBus(Partition::UnknownBus)
4950
, status(Partition::Unmounted)
5051
, readOnly(true)
5152
, canMount(false)
@@ -76,8 +77,8 @@ class PartitionPrivate : public QSharedData
7677
qint64 bytesTotal;
7778
qint64 bytesFree;
7879
Partition::StorageType storageType;
79-
Partition::ConnectionBus connectionBus;
8080
Partition::Status status;
81+
QVariantMap drive;
8182
bool readOnly;
8283
bool canMount;
8384
bool isEncrypted;

src/partitionmanager.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,22 @@ PartitionManagerPrivate::PartitionManagerPrivate()
6363
connect(m_udisksMonitor.data(), &UDisks2::Monitor::unmountError, this, &PartitionManagerPrivate::unmountError);
6464
connect(m_udisksMonitor.data(), &UDisks2::Monitor::formatError, this, &PartitionManagerPrivate::formatError);
6565

66+
QVariantMap defaultDrive;
67+
defaultDrive.insert(QLatin1String("model"), QString());
68+
defaultDrive.insert(QLatin1String("vendor"), QString());
69+
defaultDrive.insert(QLatin1String("connectionBus"), Partition::SDIO);
70+
6671
QExplicitlySharedDataPointer<PartitionPrivate> root(new PartitionPrivate(this));
6772
root->storageType = Partition::System;
68-
root->connectionBus = Partition::SDIO;
6973
root->mountPath = QStringLiteral("/");
74+
root->drive = defaultDrive;
7075

7176
m_partitions.append(root);
7277

7378
QExplicitlySharedDataPointer<PartitionPrivate> home(new PartitionPrivate(this));
7479
home->storageType = Partition::User;
75-
home->connectionBus = Partition::SDIO;
7680
home->mountPath = QStringLiteral("/home");
81+
home->drive = defaultDrive;
7782

7883
m_partitions.append(home);
7984
refresh(m_partitions, m_partitions);
@@ -153,7 +158,8 @@ void PartitionManagerPrivate::add(QExplicitlySharedDataPointer<PartitionPrivate>
153158
{
154159
int insertIndex = 0;
155160
for (const auto existingPartition : m_partitions) {
156-
if (existingPartition->connectionBus <= partition->connectionBus)
161+
if (existingPartition->drive.value(QLatin1String("connectionBus")).toInt()
162+
<= partition->drive.value(QLatin1String("connectionBus")).toInt())
157163
++insertIndex;
158164
else
159165
break;

src/partitionmodel.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ QHash<int, QByteArray> PartitionModel::roleNames() const
261261
{ IsSupportedFileSystemType, "isSupportedFileSystemType"},
262262
{ IsEncryptedRoles, "isEncrypted"},
263263
{ CryptoBackingDevicePath, "cryptoBackingDevicePath"},
264-
{ ConnectionBusRole, "connectionBus"},
264+
{ DriveRole, "drive"},
265265
};
266266

267267
return roleNames;
@@ -316,8 +316,8 @@ QVariant PartitionModel::data(const QModelIndex &index, int role) const
316316
return partition.isEncrypted();
317317
case CryptoBackingDevicePath:
318318
return partition.cryptoBackingDevicePath();
319-
case ConnectionBusRole:
320-
return partition.connectionBus();
319+
case DriveRole:
320+
return partition.drive();
321321
default:
322322
return QVariant();
323323
}

src/partitionmodel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class SYSTEMSETTINGS_EXPORT PartitionModel : public QAbstractListModel
6666
IsSupportedFileSystemType,
6767
IsEncryptedRoles,
6868
CryptoBackingDevicePath,
69-
ConnectionBusRole,
69+
DriveRole,
7070
};
7171

7272
// For Status role

src/udisks2block.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,16 @@ QString UDisks2::Block::drive() const
129129
return value(QStringLiteral("Drive")).toString();
130130
}
131131

132+
QString UDisks2::Block::driveModel() const
133+
{
134+
return NemoDBus::demarshallDBusArgument(m_drive.value(QStringLiteral("Model"))).toString();
135+
}
136+
137+
QString UDisks2::Block::driveVendor() const
138+
{
139+
return NemoDBus::demarshallDBusArgument(m_drive.value(QStringLiteral("Vendor"))).toString();
140+
}
141+
132142
QString UDisks2::Block::connectionBus() const
133143
{
134144
QString bus = NemoDBus::demarshallDBusArgument(m_drive.value(QStringLiteral("ConnectionBus"))).toString();

src/udisks2block_p.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,11 @@ class Block : public QObject
5757
QString device() const;
5858
QString preferredDevice() const;
5959
QString drive() const;
60+
QString driveModel() const;
61+
QString driveVendor() const;
6062
QString connectionBus() const;
61-
QString partitionTable() const;
6263

64+
QString partitionTable() const;
6365
bool isPartition() const;
6466
bool isPartitionTable() const;
6567

src/udisks2monitor.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -331,16 +331,21 @@ void UDisks2::Monitor::setPartitionProperties(QExplicitlySharedDataPointer<Parti
331331
partition->isEncrypted = blockDevice->isEncrypted();
332332
partition->cryptoBackingDevicePath = blockDevice->cryptoBackingDevicePath();
333333

334+
QVariantMap drive;
335+
334336
QString connectionBus = blockDevice->connectionBus();
335337
if (connectionBus == QLatin1String("sdio")) {
336-
partition->connectionBus = Partition::SDIO;
338+
drive.insert(QLatin1String("connectionBus"), Partition::SDIO);
337339
} else if (connectionBus == QLatin1String("usb")) {
338-
partition->connectionBus = Partition::USB;
340+
drive.insert(QLatin1String("connectionBus"), Partition::USB);
339341
} else if (connectionBus == QLatin1String("ieee1394")) {
340-
partition->connectionBus = Partition::IEEE1394;
342+
drive.insert(QLatin1String("connectionBus"), Partition::IEEE1394);
341343
} else {
342-
partition->connectionBus = Partition::UnknownBus;
344+
drive.insert(QLatin1String("connectionBus"), Partition::UnknownBus);
343345
}
346+
drive.insert(QLatin1String("model"), blockDevice->driveModel());
347+
drive.insert(QLatin1String("vendor"), blockDevice->driveVendor());
348+
partition->drive = drive;
344349
}
345350

346351
void UDisks2::Monitor::updatePartitionProperties(const UDisks2::Block *blockDevice)

0 commit comments

Comments
 (0)