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 }