File indexing completed on 2024-04-28 15:51:45
0001 /* 0002 SPDX-FileCopyrightText: 2015 Saheb Preet Singh <saheb.preet@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "layers.h" 0008 #include "settings.h" 0009 0010 // qt/kde includes 0011 #include <KLocalizedString> 0012 #include <KTitleWidget> 0013 #include <QHeaderView> 0014 #include <QTreeView> 0015 #include <QVBoxLayout> 0016 0017 #include <kwidgetsaddons_version.h> 0018 0019 // local includes 0020 #include "core/document.h" 0021 #include "ktreeviewsearchline.h" 0022 #include "pageview.h" 0023 0024 Layers::Layers(QWidget *parent, Okular::Document *document) 0025 : QWidget(parent) 0026 , m_document(document) 0027 { 0028 QVBoxLayout *const mainlay = new QVBoxLayout(this); 0029 mainlay->setSpacing(6); 0030 0031 m_document->addObserver(this); 0032 0033 KTitleWidget *titleWidget = new KTitleWidget(this); 0034 titleWidget->setLevel(4); 0035 titleWidget->setText(i18n("Layers")); 0036 mainlay->addWidget(titleWidget); 0037 mainlay->setAlignment(titleWidget, Qt::AlignHCenter); 0038 m_searchLine = new KTreeViewSearchLine(this); 0039 mainlay->addWidget(m_searchLine); 0040 m_searchLine->setCaseSensitivity(Okular::Settings::self()->layersSearchCaseSensitive() ? Qt::CaseSensitive : Qt::CaseInsensitive); 0041 m_searchLine->setRegularExpression(Okular::Settings::self()->layersSearchRegularExpression()); 0042 connect(m_searchLine, &KTreeViewSearchLine::searchOptionsChanged, this, &Layers::saveSearchOptions); 0043 0044 m_treeView = new QTreeView(this); 0045 mainlay->addWidget(m_treeView); 0046 0047 m_treeView->setSortingEnabled(false); 0048 m_treeView->setRootIsDecorated(true); 0049 m_treeView->setAlternatingRowColors(true); 0050 m_treeView->header()->hide(); 0051 } 0052 0053 Layers::~Layers() 0054 { 0055 m_document->removeObserver(this); 0056 } 0057 0058 void Layers::notifySetup(const QVector<Okular::Page *> & /*pages*/, int /*setupFlags*/) 0059 { 0060 QAbstractItemModel *layersModel = m_document->layersModel(); 0061 0062 if (layersModel) { 0063 m_treeView->setModel(layersModel); 0064 m_searchLine->setTreeView(m_treeView); 0065 Q_EMIT hasLayers(true); 0066 connect(layersModel, &QAbstractItemModel::dataChanged, m_document, &Okular::Document::reloadDocument); 0067 connect(layersModel, &QAbstractItemModel::dataChanged, m_pageView, &PageView::reloadForms); 0068 } else { 0069 Q_EMIT hasLayers(false); 0070 } 0071 } 0072 0073 void Layers::setPageView(PageView *pageView) 0074 { 0075 m_pageView = pageView; 0076 } 0077 0078 void Layers::saveSearchOptions() 0079 { 0080 Okular::Settings::setLayersSearchRegularExpression(m_searchLine->regularExpression()); 0081 Okular::Settings::setLayersSearchCaseSensitive(m_searchLine->caseSensitivity() == Qt::CaseSensitive ? true : false); 0082 Okular::Settings::self()->save(); 0083 }