Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_filter_selector_widget.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007-2008 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef _KIS_FILTER_SELECTOR_WIDGET_H_
8#define _KIS_FILTER_SELECTOR_WIDGET_H_
9
10#include <QWidget>
11#include <QTreeView>
12#include <QHeaderView>
13#include <QResizeEvent>
14#include <QSize>
15
16#include <kis_debug.h>
17#include <KisKineticScroller.h>
18#include <kis_types.h>
19
20class QModelIndex;
22class KisViewManager;
23class QAbstractItemModel;
24class QHideEvent;
25class QShowEvent;
26
30class KisFilterSelectorWidget : public QWidget
31{
32 Q_OBJECT
33public:
34 KisFilterSelectorWidget(QWidget* parent);
35 ~KisFilterSelectorWidget() override;
36 void setFilter(KisFilterSP f, KisFilterConfigurationSP overrideDefaultConfig);
37 void setView(KisViewManager *view);
38 void setPaintDevice(bool showAll, KisPaintDeviceSP);
40 bool isFilterGalleryVisible() const;
42public Q_SLOTS:
43 void setVisible(bool visible) override;
44 void showFilterGallery(bool visible);
45protected Q_SLOTS:
48 void setFilterIndex(const QModelIndex&);
49 void editConfigurations();
50 void update();
51 void showXMLdialog();
52Q_SIGNALS:
54 void sigFilterGalleryToggled(bool visible);
56private:
57 struct Private;
58 Private* const d {nullptr};
59};
60
61
62class KisFilterTree: public QTreeView
63{
64 Q_OBJECT
65
66public:
67
68 KisFilterTree(QWidget *parent) : QTreeView(parent) {
69 QScroller *scroller = KisKineticScroller::createPreconfiguredScroller(this);
70 if (scroller) {
71 connect(scroller, SIGNAL(stateChanged(QScroller::State)),
72 this, SLOT(slotScrollerStateChanged(QScroller::State)));
73 }
74
75 connect(this, SIGNAL(expanded(QModelIndex)), this, SLOT(update_scroll_area(QModelIndex)));
76 connect(this, SIGNAL(collapsed(QModelIndex)), this, SLOT(update_scroll_area(QModelIndex)));
77 }
78
79 void setFilterModel(QAbstractItemModel * model);
80 void activateFilter(QModelIndex idx);
81
82 QSize minimumSizeHint() const override
83 {
84 return QSize(200, QTreeView::sizeHint().height());
85 }
86
87 QSize sizeHint() const override
88 {
89 return QSize(header()->width(), QTreeView::sizeHint().height());
90 }
91
92 void setModel(QAbstractItemModel *model) override
93 {
94 QTreeView::setModel(model);
95 if (header()->visualIndex(0) != -1) {
96 header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
97 }
98 }
99
100protected:
101
102 void resizeEvent(QResizeEvent *event) override
103 {
104 if (event->size().width() > 10) {
106
107 }
108 else {
109 setModel(0);
110 }
111 QTreeView::resizeEvent(event);
112 }
113
114 void showEvent(QShowEvent * event) override
115 {
117 QTreeView::showEvent(event);
118 }
119
120 void hideEvent(QHideEvent * event) override
121 {
122 setModel(0);
123 QTreeView::hideEvent(event);
124 }
125
126private Q_SLOTS:
127 void update_scroll_area(const QModelIndex& i)
128 {
129 resizeColumnToContents(i.column());
130 }
131
132public Q_SLOTS:
133 void slotScrollerStateChanged(QScroller::State state){ KisKineticScroller::updateCursor(this, state); }
134
135private:
136
137 QAbstractItemModel *m_model {nullptr};
138
139};
140
141#endif
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void setView(KisViewManager *view)
void setPaintDevice(bool showAll, KisPaintDeviceSP)
KisFilterConfigurationSP configuration()
void setFilter(KisFilterSP f, KisFilterConfigurationSP overrideDefaultConfig)
void setVisible(bool visible) override
void sigFilterGalleryToggled(bool visible)
void setFilterIndex(const QModelIndex &)
void setFilterModel(QAbstractItemModel *model)
QAbstractItemModel * m_model
void slotScrollerStateChanged(QScroller::State state)
QSize sizeHint() const override
QSize minimumSizeHint() const override
void hideEvent(QHideEvent *event) override
void resizeEvent(QResizeEvent *event) override
void showEvent(QShowEvent *event) override
void activateFilter(QModelIndex idx)
void setModel(QAbstractItemModel *model) override
KisFilterTree(QWidget *parent)
void update_scroll_area(const QModelIndex &i)
KRITAWIDGETUTILS_EXPORT void updateCursor(QWidget *source, QScroller::State state)
KRITAWIDGETUTILS_EXPORT QScroller * createPreconfiguredScroller(QAbstractScrollArea *target)