File indexing completed on 2024-05-12 05:17:26
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "documentmodel.h" 0008 0009 #include <KItinerary/ExtractorDocumentNode> 0010 0011 #include <KLocalizedString> 0012 0013 #include <QIcon> 0014 #include <QMimeDatabase> 0015 0016 using namespace KItinerary; 0017 0018 DocumentModel::DocumentModel(QObject *parent) 0019 : QStandardItemModel(parent) 0020 { 0021 } 0022 0023 void DocumentModel::setRootNode(const ExtractorDocumentNode &root) 0024 { 0025 clear(); 0026 addNode(root, nullptr); 0027 setHorizontalHeaderLabels({i18n("Type"), i18n("Context Time")}); 0028 } 0029 0030 void DocumentModel::addNode(const ExtractorDocumentNode& node, QStandardItem *parent) 0031 { 0032 auto i1 = new QStandardItem; 0033 i1->setText(node.mimeType()); 0034 i1->setData(QVariant::fromValue(node), Qt::UserRole); 0035 i1->setFlags(i1->flags() & ~Qt::ItemIsEditable); 0036 if (!node.location().isNull()) { 0037 i1->setToolTip(i18n("Location: %1", node.location().toString())); 0038 } 0039 0040 QMimeDatabase db; 0041 const auto mt = db.mimeTypeForName(node.mimeType()); 0042 if (mt.isValid()) { 0043 i1->setIcon(QIcon::fromTheme(mt.iconName(), QIcon::fromTheme(mt.genericIconName()))); 0044 } 0045 0046 auto i2 = new QStandardItem; 0047 i2->setText(node.contextDateTime().toString(Qt::ISODate)); 0048 i2->setFlags(i1->flags() & ~Qt::ItemIsEditable); 0049 0050 if (parent) 0051 parent->appendRow({i1, i2}); 0052 else 0053 appendRow({i1, i2}); 0054 0055 for (const auto &child : node.childNodes()) 0056 addNode(child, i1); 0057 }