File: versionlistmodel.cpp

package info (click to toggle)
kup-backup 0.10.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,576 kB
  • sloc: cpp: 8,422; xml: 311; makefile: 6; sh: 3
file content (79 lines) | stat: -rw-r--r-- 2,327 bytes parent folder | download
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// SPDX-FileCopyrightText: 2020 Simon Persson <simon.persson@mykolab.com>
//
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL

#include "versionlistmodel.h"
#include "vfshelpers.h"

#include <KFormat>
#include <KLocalizedString>

#include <QDateTime>
#include <QLocale>
#include <QMimeDatabase>
#include <QMimeType>

VersionListModel::VersionListModel(QObject *parent)
    : QAbstractListModel(parent)
{
    mVersionList = nullptr;
}

void VersionListModel::setNode(const MergedNode *pNode)
{
    beginResetModel();
    mNode = pNode;
    mVersionList = mNode->versionList();
    endResetModel();
}

int VersionListModel::rowCount(const QModelIndex &pParent) const
{
    Q_UNUSED(pParent)
    if (mVersionList != nullptr) {
        return mVersionList->count();
    }
    return 0;
}

QVariant VersionListModel::data(const QModelIndex &pIndex, int pRole) const
{
    if (!pIndex.isValid() || mVersionList == nullptr) {
        return QVariant();
    }
    QMimeDatabase db;
    KFormat lFormat;
    VersionData *lData = mVersionList->at(pIndex.row());
    switch (pRole) {
    case Qt::DisplayRole:
        return lFormat.formatRelativeDateTime(QDateTime::fromSecsSinceEpoch(static_cast<qint64>(lData->mModifiedDate)), QLocale::ShortFormat);
    case VersionBupUrlRole: {
        QUrl lUrl;
        mNode->getBupUrl(pIndex.row(), &lUrl);
        return lUrl;
    }
    case VersionMimeTypeRole:
        if (mNode->isDirectory()) {
            return QString(QStringLiteral("inode/directory"));
        }
        return db.mimeTypeForFile(mNode->objectName(), QMimeDatabase::MatchExtension).name();
    case VersionSizeRole:
        return lData->size();
    case VersionSourceInfoRole: {
        BupSourceInfo lSourceInfo;
        mNode->getBupUrl(pIndex.row(),
                         &lSourceInfo.mBupKioPath,
                         &lSourceInfo.mRepoPath,
                         &lSourceInfo.mBranchName,
                         &lSourceInfo.mCommitTime,
                         &lSourceInfo.mPathInRepo);
        lSourceInfo.mIsDirectory = mNode->isDirectory();
        lSourceInfo.mSize = lData->size();
        return QVariant::fromValue<BupSourceInfo>(lSourceInfo);
    }
    case VersionIsDirectoryRole:
        return mNode->isDirectory();
    default:
        return QVariant();
    }
}