Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDetailsPane.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 SPDX-FileCopyrightText: 2005 Peter Simonsson <psn@linux.se>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#include "KisDetailsPane.h"
8
9#include <QStandardItemModel>
10#include <QKeyEvent>
11
13// class KisDetailsPane
15
17{
18 QStandardItemModel m_model;
19};
20
21KisDetailsPane::KisDetailsPane(QWidget* parent, const QString& header)
22 : QWidget(parent),
23 Ui_KisDetailsPaneBase(),
25{
26 d->m_model.setHorizontalHeaderItem(0, new QStandardItem(header));
27
28 setupUi(this);
29
30 m_documentList->installEventFilter(this);
31 m_documentList->setIconSize(QSize(IconExtent, IconExtent));
32 m_documentList->setModel(&d->m_model);
33 m_splitter->setSizes(QList<int>() << 2 << 1);
34
36
37 connect(m_documentList->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
38 this, SLOT(selectionChanged(QModelIndex)));
39 connect(m_documentList, SIGNAL(doubleClicked(QModelIndex)),
40 this, SLOT(openFile(QModelIndex)));
41 connect(m_openButton, SIGNAL(clicked()), this, SLOT(openFile()));
42}
43
48
49bool KisDetailsPane::eventFilter(QObject* watched, QEvent* e)
50{
51 if (watched == m_documentList) {
52 if ((e->type() == QEvent::Resize) && isVisible()) {
53 Q_EMIT splitterResized(this, m_splitter->sizes());
54 }
55
56 if ((e->type() == QEvent::KeyPress)) {
57 QKeyEvent* keyEvent = static_cast<QKeyEvent*>(e);
58
59 if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return) {
60 openFile();
61 }
62 }
63 }
64
65 return false;
66}
67
69{
70 if (sender == this)
71 return;
72
73 m_splitter->setSizes(sizes);
74}
75
77{
78 QModelIndex index = m_documentList->selectionModel()->currentIndex();
79 openFile(index);
80}
81
83{
84 QPalette p = palette();
85 p.setBrush(QPalette::Base, QColor(Qt::transparent));
86 p.setColor(QPalette::Text, p.color(QPalette::Normal, QPalette::WindowText));
87 m_detailsLabel->setPalette(p);
88}
89
90QStandardItemModel* KisDetailsPane::model() const
91{
92 return &d->m_model;
93}
const Params2D p
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisDetailsPane(QWidget *parent, const QString &header)
void resizeSplitter(KisDetailsPane *sender, const QList< int > &sizes)
This is used to keep all splitters in different details panes synced.
QStandardItemModel * model() const
~KisDetailsPane() override
bool eventFilter(QObject *watched, QEvent *e) override
virtual void selectionChanged(const QModelIndex &index)=0
This is called when the selection in the listview changed.
void splitterResized(KisDetailsPane *sender, const QList< int > &sizes)
This is used to keep all splitters in different details panes synced.
virtual void openFile()
KisDetailsPanePrivate *const d
rgba palette[MAX_PALETTE]
Definition palette.c:35
QStandardItemModel m_model