File indexing completed on 2024-05-12 16:01:46

0001 /* This file is part of the KDE project
0002    SPDX-FileCopyrightText: 2005 Peter Simonsson <psn@linux.se>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "KisDetailsPane.h"
0008 
0009 #include <QStandardItemModel>
0010 #include <QKeyEvent>
0011 
0012 ////////////////////////////////////
0013 // class KisDetailsPane
0014 ///////////////////////////////////
0015 
0016 struct KisDetailsPanePrivate
0017 {
0018     QStandardItemModel m_model;
0019 };
0020 
0021 KisDetailsPane::KisDetailsPane(QWidget* parent, const QString& header)
0022         : QWidget(parent),
0023         Ui_KisDetailsPaneBase(),
0024         d(new KisDetailsPanePrivate())
0025 {
0026     d->m_model.setHorizontalHeaderItem(0, new QStandardItem(header));
0027 
0028     setupUi(this);
0029 
0030     m_documentList->installEventFilter(this);
0031     m_documentList->setIconSize(QSize(IconExtent, IconExtent));
0032     m_documentList->setModel(&d->m_model);
0033     m_splitter->setSizes(QList<int>() << 2 << 1);
0034 
0035     changePalette();
0036 
0037     connect(m_documentList->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
0038             this, SLOT(selectionChanged(QModelIndex)));
0039     connect(m_documentList, SIGNAL(doubleClicked(QModelIndex)),
0040             this, SLOT(openFile(QModelIndex)));
0041     connect(m_openButton, SIGNAL(clicked()), this, SLOT(openFile()));
0042 }
0043 
0044 KisDetailsPane::~KisDetailsPane()
0045 {
0046     delete d;
0047 }
0048 
0049 bool KisDetailsPane::eventFilter(QObject* watched, QEvent* e)
0050 {
0051     if (watched == m_documentList) {
0052         if ((e->type() == QEvent::Resize) && isVisible()) {
0053             emit splitterResized(this, m_splitter->sizes());
0054         }
0055 
0056         if ((e->type() == QEvent::KeyPress)) {
0057             QKeyEvent* keyEvent = static_cast<QKeyEvent*>(e);
0058 
0059             if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return) {
0060                 openFile();
0061             }
0062         }
0063     }
0064 
0065     return false;
0066 }
0067 
0068 void KisDetailsPane::resizeSplitter(KisDetailsPane* sender, const QList<int>& sizes)
0069 {
0070     if (sender == this)
0071         return;
0072 
0073     m_splitter->setSizes(sizes);
0074 }
0075 
0076 void KisDetailsPane::openFile()
0077 {
0078     QModelIndex index = m_documentList->selectionModel()->currentIndex();
0079     openFile(index);
0080 }
0081 
0082 void KisDetailsPane::changePalette()
0083 {
0084     QPalette p = palette();
0085     p.setBrush(QPalette::Base, QColor(Qt::transparent));
0086     p.setColor(QPalette::Text, p.color(QPalette::Normal, QPalette::Foreground));
0087     m_detailsLabel->setPalette(p);
0088 }
0089 
0090 QStandardItemModel* KisDetailsPane::model() const
0091 {
0092     return &d->m_model;
0093 }