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 }