diff options
author | Liang Qi <liang.qi@qt.io> | 2017-09-26 16:08:55 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-09-26 16:14:54 +0200 |
commit | aadfe7d634de04519102c5827ca885dc2e2199c9 (patch) | |
tree | d92db346ca95332b177036a53f1f6beb2e24fb74 /examples/widgets/itemviews/storageview/storagemodel.cpp | |
parent | 4b6c1448047362b8c38d265e6414f0e3e59b8d37 (diff) | |
parent | a732e16d5fd9dbf8a0289fec9f948b12e9ba2c19 (diff) |
Merge remote-tracking branch 'origin/5.10' into dev
Conflicts:
src/gui/kernel/qguiapplication.cpp
src/platformsupport/input/libinput/qlibinputpointer.cpp
src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h
src/plugins/platforms/cocoa/qcocoawindow.h
src/testlib/qtestsystem.h
Change-Id: I5975ffb3261c2dd82fe02ec4e57df7c0950226c5
Diffstat (limited to 'examples/widgets/itemviews/storageview/storagemodel.cpp')
-rw-r--r-- | examples/widgets/itemviews/storageview/storagemodel.cpp | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/examples/widgets/itemviews/storageview/storagemodel.cpp b/examples/widgets/itemviews/storageview/storagemodel.cpp index 1395c9f208..063f126d86 100644 --- a/examples/widgets/itemviews/storageview/storagemodel.cpp +++ b/examples/widgets/itemviews/storageview/storagemodel.cpp @@ -54,14 +54,27 @@ #include <QDir> #include <QLocale> #include <qmath.h> +#include <algorithm> #include <cmath> StorageModel::StorageModel(QObject *parent) : - QAbstractTableModel(parent), - m_volumes(QStorageInfo::mountedVolumes()) + QAbstractTableModel(parent) { } +void StorageModel::refresh() +{ + beginResetModel(); + m_volumes = QStorageInfo::mountedVolumes(); + std::sort(m_volumes.begin(), m_volumes.end(), + [](const QStorageInfo &st1, const QStorageInfo &st2) { + static const QString rootSortString = QStringLiteral(" "); + return (st1.isRoot() ? rootSortString : st1.rootPath()) + < (st2.isRoot() ? rootSortString : st2.rootPath()); + }); + endResetModel(); +} + int StorageModel::columnCount(const QModelIndex &/*parent*/) const { return ColumnCount; @@ -74,6 +87,22 @@ int StorageModel::rowCount(const QModelIndex &parent) const return m_volumes.count(); } +Qt::ItemFlags StorageModel::flags(const QModelIndex &index) const +{ + Qt::ItemFlags result = QAbstractTableModel::flags(index); + switch (index.column()) { + case ColumnAvailable: + case ColumnIsReady: + case ColumnIsReadOnly: + case ColumnIsValid: + result |= Qt::ItemIsUserCheckable; + break; + default: + break; + } + return result; +} + QVariant StorageModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) @@ -96,6 +125,12 @@ QVariant StorageModel::data(const QModelIndex &index, int role) const return QLocale().formattedDataSize(volume.bytesFree()); case ColumnAvailable: return QLocale().formattedDataSize(volume.bytesAvailable()); + default: + break; + } + } else if (role == Qt::CheckStateRole) { + const QStorageInfo &volume = m_volumes.at(index.row()); + switch (index.column()) { case ColumnIsReady: return volume.isReady(); case ColumnIsReadOnly: @@ -105,6 +140,16 @@ QVariant StorageModel::data(const QModelIndex &index, int role) const default: break; } + } else if (role == Qt::TextAlignmentRole) { + switch (index.column()) { + case ColumnTotal: + case ColumnFree: + case ColumnAvailable: + return Qt::AlignTrailing; + default: + break; + } + return Qt::AlignLeading; } else if (role == Qt::ToolTipRole) { QLocale locale; const QStorageInfo &volume = m_volumes.at(index.row()); @@ -147,13 +192,13 @@ QVariant StorageModel::headerData(int section, Qt::Orientation orientation, int switch (section) { case ColumnRootPath: - return tr("Root path"); + return tr("Root Path"); case ColumnName: return tr("Volume Name"); case ColumnDevice: return tr("Device"); case ColumnFileSystemName: - return tr("File system"); + return tr("File System"); case ColumnTotal: return tr("Total"); case ColumnFree: |