Krita Source Code Documentation
Loading...
Searching...
No Matches
KisResourceItemListView Class Reference

#include <KisResourceItemListView.h>

+ Inheritance diagram for KisResourceItemListView:

Public Slots

void slotScrollerStateChange (QScroller::State state)
 

Signals

void contextMenuRequested (const QPoint &)
 
void currentResourceChanged (const QModelIndex &)
 
void currentResourceClicked (const QModelIndex &)
 
void sigSizeChanged ()
 

Public Member Functions

 KisResourceItemListView (QWidget *parent=nullptr)
 
 Private (KisResourceItemListView *_q)
 
void setFixedToolTipThumbnailSize (const QSize &size)
 
void setItemSize (QSize size)
 setItemSize convenience function which sets both the icon and the grid size to the same value.
 
void setListViewMode (ListViewMode layout)
 
void setStrictSelectionMode (bool enable)
 setStrictSelectionMode sets additional restrictions on the selection.
 
void setToolTipShouldRenderCheckers (bool value)
 
 ~KisResourceItemListView () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

Public Attributes

QString prev_scrollbar_style
 
QSize requestedItemSize = QSize(56, 56)
 
QScroller * scroller {0}
 
bool strictSelectionMode {false}
 
KisIconToolTip tip
 
ListViewMode viewMode = ListViewMode::IconGrid
 
- Public Attributes inherited from Private
KisCanvas2 * canvas
 
int displayedFrame
 
int intendedFrame
 

Protected Slots

void rowsAboutToBeRemoved (const QModelIndex &parent, int start, int end) override
 
void selectionChanged (const QItemSelection &selected, const QItemSelection &deselected) override
 

Protected Member Functions

void contextMenuEvent (QContextMenuEvent *event) override
 
QItemSelectionModel::SelectionFlags selectionCommand (const QModelIndex &index, const QEvent *event=nullptr) const override
 
bool viewportEvent (QEvent *event) override
 

Private Member Functions

void resizeEvent (QResizeEvent *event) override
 

Private Attributes

const QScopedPointer< Private > m_d
 

Detailed Description

Definition at line 17 of file KisResourceItemListView.cpp.

Constructor & Destructor Documentation

◆ KisResourceItemListView()

KisResourceItemListView::KisResourceItemListView ( QWidget * parent = nullptr)

Definition at line 31 of file KisResourceItemListView.cpp.

32 : QListView(parent)
33 , m_d(new Private(this))
34{
35 setSelectionMode(QAbstractItemView::SingleSelection);
36 setContextMenuPolicy(Qt::DefaultContextMenu);
37 setResizeMode(QListView::Adjust);
38 setUniformItemSizes(true);
39
40 // Default configuration
41 setViewMode(QListView::IconMode);
42 setGridSize(QSize(56, 56));
43 setIconSize(QSize(56, 56));
44 setResizeMode(QListView::Adjust);
45 setUniformItemSizes(true);
46
48 if (m_d->scroller) {
49 connect(m_d->scroller, SIGNAL(stateChanged(QScroller::State)), this, SLOT(slotScrollerStateChange(QScroller::State)));
50 }
51
52 connect(this, SIGNAL(clicked(QModelIndex)), SIGNAL(currentResourceClicked(const QModelIndex &)));
53
54 m_d->prev_scrollbar_style = horizontalScrollBar()->styleSheet();
55}
KRITAWIDGETUTILS_EXPORT QScroller * createPreconfiguredScroller(QAbstractScrollArea *target)
void currentResourceClicked(const QModelIndex &)
void slotScrollerStateChange(QScroller::State state)
const QScopedPointer< Private > m_d

References KisKineticScroller::createPreconfiguredScroller(), currentResourceClicked(), m_d, and slotScrollerStateChange().

◆ ~KisResourceItemListView()

KisResourceItemListView::~KisResourceItemListView ( )
override

Definition at line 57 of file KisResourceItemListView.cpp.

58{
59}

Member Function Documentation

◆ contextMenuEvent()

void KisResourceItemListView::contextMenuEvent ( QContextMenuEvent * event)
overrideprotected

Definition at line 188 of file KisResourceItemListView.cpp.

189{
190 QListView::contextMenuEvent(event);
191 Q_EMIT contextMenuRequested(event->globalPos());
192}
void contextMenuRequested(const QPoint &)

References contextMenuRequested().

◆ contextMenuRequested

void KisResourceItemListView::contextMenuRequested ( const QPoint & )
signal

◆ currentResourceChanged

void KisResourceItemListView::currentResourceChanged ( const QModelIndex & )
signal

◆ currentResourceClicked

void KisResourceItemListView::currentResourceClicked ( const QModelIndex & )
signal

◆ Private()

KisResourceItemListView::Private ( KisResourceItemListView * _q)
inline

Definition at line 19 of file KisResourceItemListView.cpp.

19: tip(_q) {}

◆ resizeEvent()

void KisResourceItemListView::resizeEvent ( QResizeEvent * event)
overrideprivate

Definition at line 218 of file KisResourceItemListView.cpp.

219{
220 QListView::resizeEvent(event);
221
222 switch (m_d->viewMode) {
224 const int height = event->size().height();
225 setGridSize(QSize(height, height));
226 setIconSize(QSize(height, height));
227 break;
228 }
230 setItemSize(m_d->requestedItemSize);
231 break;
232 }
234 break;
235 }
236 }
237 scrollTo(currentIndex(), QAbstractItemView::PositionAtCenter);
238}
void setItemSize(QSize size)
setItemSize convenience function which sets both the icon and the grid size to the same value.

References Detail, IconGrid, IconStripHorizontal, m_d, and setItemSize().

◆ rowsAboutToBeRemoved

void KisResourceItemListView::rowsAboutToBeRemoved ( const QModelIndex & parent,
int start,
int end )
overrideprotectedslot

Definition at line 145 of file KisResourceItemListView.cpp.

146{
147 // QAbstractItemView moves the current index if the row it points to is removed,
148 // which we don't want for strict selections
149 QModelIndex current = currentIndex();
150 if (selectionMode() == SingleSelection
151 && m_d->strictSelectionMode
152 && current.isValid()
153 && current.row() >= start
154 && current.row() <= end) {
155
156 selectionModel()->clear();
157 }
158 QListView::rowsAboutToBeRemoved(parent, start, end);
159}

References m_d.

◆ selectionChanged

void KisResourceItemListView::selectionChanged ( const QItemSelection & selected,
const QItemSelection & deselected )
overrideprotectedslot

Definition at line 161 of file KisResourceItemListView.cpp.

162{
163 // base class takes care of viewport updates
164 QListView::selectionChanged(selected, deselected);
165
166 if (selected.isEmpty()) {
167 Q_EMIT currentResourceChanged(QModelIndex());
168 }
169 else {
170 Q_EMIT currentResourceChanged(selected.indexes().first());
171 }
172}
void currentResourceChanged(const QModelIndex &)

References currentResourceChanged().

◆ selectionCommand()

QItemSelectionModel::SelectionFlags KisResourceItemListView::selectionCommand ( const QModelIndex & index,
const QEvent * event = nullptr ) const
overrideprotected

Definition at line 174 of file KisResourceItemListView.cpp.

175{
176 QItemSelectionModel::SelectionFlags cmd = QListView::selectionCommand(index, event);
177
178 // avoid deselecting the current item by Ctrl-clicking in single selection mode
179 if (selectionMode() == SingleSelection
180 && m_d->strictSelectionMode
181 && cmd.testFlag(QItemSelectionModel::Deselect)) {
182
183 cmd = QItemSelectionModel::NoUpdate;
184 }
185 return cmd;
186}

References m_d.

◆ setFixedToolTipThumbnailSize()

void KisResourceItemListView::setFixedToolTipThumbnailSize ( const QSize & size)

Definition at line 135 of file KisResourceItemListView.cpp.

136{
137 m_d->tip.setFixedToolTipThumbnailSize(size);
138}

References m_d.

◆ setItemSize()

void KisResourceItemListView::setItemSize ( QSize size)

setItemSize convenience function which sets both the icon and the grid size to the same value.

Parameters
size- the size you wish either to be.

Definition at line 106 of file KisResourceItemListView.cpp.

107{
108 m_d->requestedItemSize = size;
109
110 switch (m_d->viewMode) {
112 setGridSize(size);
113 setIconSize(size);
114 break;
115 }
117 // you can not set the item size in strip mode
118 // it is configured automatically based on size
119 break;
120 }
122 const int w = width() - horizontalScrollBar()->width();
123 setGridSize(QSize(w, size.height()));
124 setIconSize(QSize(size));
125 break;
126 }
127 }
128}
int size(const Forest< T > &forest)
Definition KisForest.h:1232

References Detail, IconGrid, IconStripHorizontal, and m_d.

◆ setListViewMode()

void KisResourceItemListView::setListViewMode ( ListViewMode layout)

Definition at line 61 of file KisResourceItemListView.cpp.

62{
63 m_d->viewMode = viewMode;
64
65 auto restoreScrollbar = [&, this] () {
66 horizontalScrollBar()->setStyleSheet(m_d->prev_scrollbar_style);
67 setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
68 };
69
70 switch (viewMode) {
72 setViewMode(ViewMode::IconMode);
73 setFlow(Flow::LeftToRight);
74 setWrapping(true);
75 restoreScrollbar();
76
77 setItemSize(m_d->requestedItemSize);
78 break;
79 }
81 setViewMode(ViewMode::IconMode);
82 setFlow(Flow::LeftToRight);
83 setWrapping(false);
84
85 // this is the only way to hide it and not have it occupy space
86 horizontalScrollBar()->setStyleSheet("QScrollBar::horizontal {height: 0px;}");
87 setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
88
89 setItemSize(m_d->requestedItemSize);
90 break;
91 }
93 setViewMode(ViewMode::ListMode);
94 setFlow(Flow::TopToBottom);
95 setWrapping(false);
96 restoreScrollbar();
97 setItemSize(m_d->requestedItemSize);
98 // horizontalScrollBar()->setStyleSheet(m_d->prev_scrollbar_style);
99 setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
100 setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
101 break;
102 }
103 }
104}

References Detail, IconGrid, IconStripHorizontal, m_d, setItemSize(), and viewMode.

◆ setStrictSelectionMode()

void KisResourceItemListView::setStrictSelectionMode ( bool enable)

setStrictSelectionMode sets additional restrictions on the selection.

When in QAbstractItemView::SingleSelection mode, this ensures that the selection never gets transferred to another item. Instead, the selection is cleared if the current item gets removed (filtered) from the model. Furthermore, it prevents users from deselecting the current item with Ctrl+click. This behavior is important for resource selectors.

Parameters
enableDetermines if strict mode is enabled.

Definition at line 130 of file KisResourceItemListView.cpp.

131{
132 m_d->strictSelectionMode = enable;
133}

References m_d.

◆ setToolTipShouldRenderCheckers()

void KisResourceItemListView::setToolTipShouldRenderCheckers ( bool value)

Definition at line 140 of file KisResourceItemListView.cpp.

141{
142 m_d->tip.setToolTipShouldRenderCheckers(value);
143}
float value(const T *src, size_t ch)

References m_d, and value().

◆ sigSizeChanged

void KisResourceItemListView::sigSizeChanged ( )
signal

◆ slotScrollerStateChange

void KisResourceItemListView::slotScrollerStateChange ( QScroller::State state)
inlineslot

Definition at line 53 of file KisResourceItemListView.h.

KRITAWIDGETUTILS_EXPORT void updateCursor(QWidget *source, QScroller::State state)

References KisKineticScroller::updateCursor().

◆ viewportEvent()

bool KisResourceItemListView::viewportEvent ( QEvent * event)
overrideprotected

Definition at line 194 of file KisResourceItemListView.cpp.

195{
196 if (!model()) return true;
197
198 if (event->type() == QEvent::ToolTip) {
199 QHelpEvent *he = static_cast<QHelpEvent *>(event);
200#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
201 QStyleOptionViewItem option = viewOptions();
202#else
203 QStyleOptionViewItem option;
204 initViewItemOption(&option);
205#endif
206 QModelIndex index = model()->buddy(indexAt(he->pos()));
207 if (index.isValid()) {
208 option.rect = visualRect(index);
209 m_d->tip.showTip(he->pos(), option, index);
210 return true;
211 }
212 m_d->tip.hide();
213 }
214
215 return QListView::viewportEvent(event);
216}

References m_d.

Member Data Documentation

◆ m_d

const QScopedPointer<Private> KisResourceItemListView::m_d
private

Definition at line 79 of file KisResourceItemListView.h.

◆ prev_scrollbar_style

QString KisResourceItemListView::prev_scrollbar_style

Definition at line 26 of file KisResourceItemListView.cpp.

◆ requestedItemSize

QSize KisResourceItemListView::requestedItemSize = QSize(56, 56)

Definition at line 28 of file KisResourceItemListView.cpp.

◆ scroller

QScroller* KisResourceItemListView::scroller {0}

Definition at line 25 of file KisResourceItemListView.cpp.

25{0};

◆ strictSelectionMode

bool KisResourceItemListView::strictSelectionMode {false}

Definition at line 22 of file KisResourceItemListView.cpp.

22{false};

◆ tip

KisIconToolTip KisResourceItemListView::tip

Definition at line 23 of file KisResourceItemListView.cpp.

◆ viewMode

ListViewMode KisResourceItemListView::viewMode = ListViewMode::IconGrid

Definition at line 21 of file KisResourceItemListView.cpp.


The documentation for this class was generated from the following files: