File indexing completed on 2024-04-21 05:46:29
0001 // SPDX-FileCopyrightText: 2020 Simon Persson <simon.persson@mykolab.com> 0002 // 0003 // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 0005 #include "versionlistmodel.h" 0006 #include "vfshelpers.h" 0007 0008 #include <KFormat> 0009 #include <KLocalizedString> 0010 0011 #include <QDateTime> 0012 #include <QLocale> 0013 #include <QMimeDatabase> 0014 #include <QMimeType> 0015 0016 VersionListModel::VersionListModel(QObject *parent) : 0017 QAbstractListModel(parent) 0018 { 0019 mVersionList = nullptr; 0020 } 0021 0022 void VersionListModel::setNode(const MergedNode *pNode) { 0023 beginResetModel(); 0024 mNode = pNode; 0025 mVersionList = mNode->versionList(); 0026 endResetModel(); 0027 } 0028 0029 int VersionListModel::rowCount(const QModelIndex &pParent) const { 0030 Q_UNUSED(pParent) 0031 if(mVersionList != nullptr) { 0032 return mVersionList->count(); 0033 } 0034 return 0; 0035 } 0036 0037 QVariant VersionListModel::data(const QModelIndex &pIndex, int pRole) const { 0038 if(!pIndex.isValid() || mVersionList == nullptr) { 0039 return QVariant(); 0040 } 0041 QMimeDatabase db; 0042 KFormat lFormat; 0043 VersionData *lData = mVersionList->at(pIndex.row()); 0044 switch (pRole) { 0045 case Qt::DisplayRole: 0046 return lFormat.formatRelativeDateTime(QDateTime::fromSecsSinceEpoch(static_cast<qint64>(lData->mModifiedDate)), QLocale::ShortFormat); 0047 case VersionBupUrlRole: { 0048 QUrl lUrl; 0049 mNode->getBupUrl(pIndex.row(), &lUrl); 0050 return lUrl; 0051 } 0052 case VersionMimeTypeRole: 0053 if(mNode->isDirectory()) { 0054 return QString(QStringLiteral("inode/directory")); 0055 } 0056 return db.mimeTypeForFile(mNode->objectName(), QMimeDatabase::MatchExtension).name(); 0057 case VersionSizeRole: 0058 return lData->size(); 0059 case VersionSourceInfoRole: { 0060 BupSourceInfo lSourceInfo; 0061 mNode->getBupUrl(pIndex.row(), &lSourceInfo.mBupKioPath, &lSourceInfo.mRepoPath, &lSourceInfo.mBranchName, 0062 &lSourceInfo.mCommitTime, &lSourceInfo.mPathInRepo); 0063 lSourceInfo.mIsDirectory = mNode->isDirectory(); 0064 lSourceInfo.mSize = lData->size(); 0065 return QVariant::fromValue<BupSourceInfo>(lSourceInfo); 0066 } 0067 case VersionIsDirectoryRole: 0068 return mNode->isDirectory(); 0069 default: 0070 return QVariant(); 0071 } 0072 }