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)
 
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
KisCanvas2canvas
 
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< Privatem_d
 

Detailed Description

Definition at line 17 of file KisResourceItemListView.cpp.

Constructor & Destructor Documentation

◆ KisResourceItemListView()

KisResourceItemListView::KisResourceItemListView ( QWidget * parent = nullptr)

Definition at line 29 of file KisResourceItemListView.cpp.

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

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

◆ ~KisResourceItemListView()

KisResourceItemListView::~KisResourceItemListView ( )
override

Definition at line 55 of file KisResourceItemListView.cpp.

56{
57}

Member Function Documentation

◆ contextMenuEvent()

void KisResourceItemListView::contextMenuEvent ( QContextMenuEvent * event)
overrideprotected

Definition at line 186 of file KisResourceItemListView.cpp.

187{
188 QListView::contextMenuEvent(event);
189 Q_EMIT contextMenuRequested(event->globalPos());
190}
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

◆ resizeEvent()

void KisResourceItemListView::resizeEvent ( QResizeEvent * event)
overrideprivate

Definition at line 216 of file KisResourceItemListView.cpp.

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

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

◆ rowsAboutToBeRemoved

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

Definition at line 143 of file KisResourceItemListView.cpp.

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

References m_d.

◆ selectionChanged

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

Definition at line 159 of file KisResourceItemListView.cpp.

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

References currentResourceChanged().

◆ selectionCommand()

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

Definition at line 172 of file KisResourceItemListView.cpp.

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

References m_d.

◆ setFixedToolTipThumbnailSize()

void KisResourceItemListView::setFixedToolTipThumbnailSize ( const QSize & size)

Definition at line 133 of file KisResourceItemListView.cpp.

134{
135 m_d->tip.setFixedToolTipThumbnailSize(size);
136}

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 104 of file KisResourceItemListView.cpp.

105{
106 m_d->requestedItemSize = size;
107
108 switch (m_d->viewMode) {
110 setGridSize(size);
111 setIconSize(size);
112 break;
113 }
115 // you can not set the item size in strip mode
116 // it is configured automatically based on size
117 break;
118 }
120 const int w = width() - horizontalScrollBar()->width();
121 setGridSize(QSize(w, size.height()));
122 setIconSize(QSize(size));
123 break;
124 }
125 }
126}
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 59 of file KisResourceItemListView.cpp.

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

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 128 of file KisResourceItemListView.cpp.

129{
130 m_d->strictSelectionMode = enable;
131}

References m_d.

◆ setToolTipShouldRenderCheckers()

void KisResourceItemListView::setToolTipShouldRenderCheckers ( bool value)

Definition at line 138 of file KisResourceItemListView.cpp.

139{
140 m_d->tip.setToolTipShouldRenderCheckers(value);
141}
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 192 of file KisResourceItemListView.cpp.

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

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 24 of file KisResourceItemListView.cpp.

◆ requestedItemSize

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

Definition at line 26 of file KisResourceItemListView.cpp.

◆ scroller

QScroller* KisResourceItemListView::scroller {0}

Definition at line 23 of file KisResourceItemListView.cpp.

23{0};

◆ strictSelectionMode

bool KisResourceItemListView::strictSelectionMode {false}

Definition at line 20 of file KisResourceItemListView.cpp.

20{false};

◆ tip

KisIconToolTip KisResourceItemListView::tip

Definition at line 21 of file KisResourceItemListView.cpp.

◆ viewMode

ListViewMode KisResourceItemListView::viewMode = ListViewMode::IconGrid

Definition at line 19 of file KisResourceItemListView.cpp.


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