File indexing completed on 2024-09-22 05:16:04

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2008 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "versionview.hpp"
0010 
0011 // tool
0012 #include "versiontablemodel.hpp"
0013 #include "versionviewtool.hpp"
0014 // Kasten core
0015 #include <Kasten/Versionable>
0016 #include <Kasten/AbstractModel>
0017 // Qt
0018 #include <QVBoxLayout>
0019 #include <QTreeView>
0020 
0021 namespace Kasten {
0022 
0023 VersionView::VersionView(VersionViewTool* tool, QWidget* parent)
0024     : QWidget(parent)
0025     , mTool(tool)
0026 {
0027     mVersionTableModel = new VersionTableModel(nullptr, nullptr, this);
0028 
0029     auto* baseLayout = new QVBoxLayout(this);
0030     baseLayout->setContentsMargins(0, 0, 0, 0);
0031 
0032     mVersionTableView = new QTreeView(this);
0033     mVersionTableView->setObjectName(QStringLiteral("VersionsTable"));
0034     mVersionTableView->setRootIsDecorated(false);
0035     mVersionTableView->setItemsExpandable(false);
0036     mVersionTableView->setUniformRowHeights(true);
0037     mVersionTableView->setAllColumnsShowFocus(true);
0038     mVersionTableView->setModel(mVersionTableModel);
0039 
0040     baseLayout->addWidget(mVersionTableView, 10);
0041 
0042     connect(mTool, &Kasten::VersionViewTool::modelChanged,
0043             this, &VersionView::setModel);
0044 
0045     setModel(mTool->model());
0046 }
0047 
0048 VersionView::~VersionView() = default;
0049 
0050 void VersionView::setModel(AbstractModel* model)
0051 {
0052     If::Versionable* versionControl = model ? qobject_cast<If::Versionable*>(model) : nullptr;
0053 
0054     mVersionTableModel->setModel(model, versionControl);
0055 
0056     for (int c = 0; c < VersionTableModel::NoOfColumnIds; ++c) {
0057         mVersionTableView->resizeColumnToContents(c);
0058     }
0059 }
0060 
0061 }
0062 
0063 #include "moc_versionview.cpp"