You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.1 KiB
67 lines
2.1 KiB
/* |
|
SPDX-FileCopyrightText: 2014 Marco Martin <mart@kde.org> |
|
|
|
SPDX-License-Identifier: LGPL-2.1-or-later |
|
*/ |
|
|
|
#include "placesproxymodel.h" |
|
|
|
#include <QDebug> |
|
#include <QIcon> |
|
#include <QStorageInfo> |
|
|
|
PlacesProxyModel::PlacesProxyModel(QObject *parent, KFilePlacesModel *model) |
|
: QIdentityProxyModel(parent) |
|
, m_placesModel(model) |
|
{ |
|
setSourceModel(model); |
|
} |
|
|
|
QHash<int, QByteArray> PlacesProxyModel::roleNames() const |
|
{ |
|
QHash<int, QByteArray> roles; |
|
roles.insert(Qt::DisplayRole, "display"); |
|
roles.insert(Qt::DecorationRole, "decoration"); |
|
roles.insert(KFilePlacesModel::UrlRole, "url"); |
|
roles.insert(KFilePlacesModel::HiddenRole, "hidden"); |
|
roles.insert(KFilePlacesModel::SetupNeededRole, "setupNeeded"); |
|
roles.insert(KFilePlacesModel::FixedDeviceRole, "fixedDevice"); |
|
roles.insert(KFilePlacesModel::CapacityBarRecommendedRole, "capacityBarRecommended"); |
|
roles.insert(PlaceIndexRole, "placeIndex"); |
|
roles.insert(IsDeviceRole, "isDevice"); |
|
roles.insert(PathRole, "path"); |
|
roles.insert(SizeRole, "size"); |
|
roles.insert(UsedRole, "used"); |
|
roles.insert(AvailableRole, "available"); |
|
return roles; |
|
} |
|
|
|
QVariant PlacesProxyModel::data(const QModelIndex &index, int role) const |
|
{ |
|
switch (role) { |
|
case PlaceIndexRole: |
|
return index.row(); |
|
case IsDeviceRole: |
|
return m_placesModel->deviceForIndex(index).isValid(); |
|
case PathRole: |
|
return m_placesModel->url(index).path(); |
|
|
|
case SizeRole: { |
|
const QString path = m_placesModel->url(index).path(); |
|
QStorageInfo info{path}; |
|
return info.isValid() && info.isReady() ? info.bytesTotal() : QVariant{}; |
|
} |
|
case UsedRole: { |
|
const QString path = m_placesModel->url(index).path(); |
|
QStorageInfo info{path}; |
|
return info.isValid() && info.isReady() ? info.bytesTotal() - info.bytesAvailable() : QVariant{}; |
|
} |
|
case AvailableRole: { |
|
const QString path = m_placesModel->url(index).path(); |
|
QStorageInfo info{path}; |
|
return info.isValid() && info.isReady() ? info.bytesAvailable() : QVariant{}; |
|
} |
|
default: |
|
return QIdentityProxyModel::data(index, role); |
|
} |
|
}
|
|
|