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

#include <KisResourceItemListWidget.h>

+ Inheritance diagram for KisResourceItemListWidget:

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

 KisResourceItemListWidget (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)
 
 ~KisResourceItemListWidget () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

Public Attributes

QString prev_scrollbar_style
 
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 20 of file KisResourceItemListWidget.cpp.

Constructor & Destructor Documentation

◆ KisResourceItemListWidget()

KisResourceItemListWidget::KisResourceItemListWidget ( QWidget * parent = nullptr)

Definition at line 30 of file KisResourceItemListWidget.cpp.

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

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

◆ ~KisResourceItemListWidget()

KisResourceItemListWidget::~KisResourceItemListWidget ( )
override

Definition at line 52 of file KisResourceItemListWidget.cpp.

53{
54}

Member Function Documentation

◆ contextMenuEvent()

void KisResourceItemListWidget::contextMenuEvent ( QContextMenuEvent * event)
overrideprotected

Definition at line 173 of file KisResourceItemListWidget.cpp.

174{
175 QListWidget::contextMenuEvent(event);
176 Q_EMIT contextMenuRequested(event->globalPos());
177}
void contextMenuRequested(const QPoint &)

References contextMenuRequested().

◆ contextMenuRequested

void KisResourceItemListWidget::contextMenuRequested ( const QPoint & )
signal

◆ currentResourceChanged

void KisResourceItemListWidget::currentResourceChanged ( const QModelIndex & )
signal

◆ currentResourceClicked

void KisResourceItemListWidget::currentResourceClicked ( const QModelIndex & )
signal

◆ resizeEvent()

void KisResourceItemListWidget::resizeEvent ( QResizeEvent * event)
overrideprivate

Definition at line 184 of file KisResourceItemListWidget.cpp.

185{
186 if (m_d->viewMode == ListViewMode::IconStripHorizontal) {
187 const int height = event->size().height();
188 setGridSize(QSize(height, height));
189 setIconSize(QSize(height, height));
190 }
191 // trigger relaying the items, internally here not externally
192 // by calling setItemSize
193 else {
194 setGridSize(gridSize());
195 }
196}

References IconStripHorizontal, and m_d.

◆ rowsAboutToBeRemoved

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

Definition at line 130 of file KisResourceItemListWidget.cpp.

131{
132 // QAbstractItemView moves the current index if the row it points to is removed,
133 // which we don't want for strict selections
134 QModelIndex current = currentIndex();
135 if (selectionMode() == SingleSelection
136 && m_d->strictSelectionMode
137 && current.isValid()
138 && current.row() >= start
139 && current.row() <= end) {
140
141 selectionModel()->clear();
142 }
143 QListWidget::rowsAboutToBeRemoved(parent, start, end);
144}

References m_d.

◆ selectionChanged

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

Definition at line 146 of file KisResourceItemListWidget.cpp.

147{
148 // base class takes care of viewport updates
149 QListWidget::selectionChanged(selected, deselected);
150
151 if (selected.isEmpty()) {
152 Q_EMIT currentResourceChanged(QModelIndex());
153 }
154 else {
155 Q_EMIT currentResourceChanged(selected.indexes().first());
156 }
157}
void currentResourceChanged(const QModelIndex &)

References currentResourceChanged().

◆ selectionCommand()

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

Definition at line 159 of file KisResourceItemListWidget.cpp.

160{
161 QItemSelectionModel::SelectionFlags cmd = QListWidget::selectionCommand(index, event);
162
163 // avoid deselecting the current item by Ctrl-clicking in single selection mode
164 if (selectionMode() == SingleSelection
165 && m_d->strictSelectionMode
166 && cmd.testFlag(QItemSelectionModel::Deselect)) {
167
168 cmd = QItemSelectionModel::NoUpdate;
169 }
170 return cmd;
171}

References m_d.

◆ setFixedToolTipThumbnailSize()

void KisResourceItemListWidget::setFixedToolTipThumbnailSize ( const QSize & size)

Definition at line 120 of file KisResourceItemListWidget.cpp.

121{
122 m_d->tip.setFixedToolTipThumbnailSize(size);
123}

References m_d.

◆ setItemSize()

void KisResourceItemListWidget::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 93 of file KisResourceItemListWidget.cpp.

94{
95 switch (m_d->viewMode) {
97 setGridSize(size);
98 setIconSize(size);
99 break;
100 }
102 // you can not set the item size in strip mode
103 // it is configured automatically based on size
104 break;
105 }
107 const int w = width();
108 setGridSize(QSize(w, size.height()));
109 setIconSize(QSize(size));
110 break;
111 }
112 }
113}
int size(const Forest< T > &forest)
Definition KisForest.h:1232

References Detail, IconGrid, IconStripHorizontal, and m_d.

◆ setListViewMode()

void KisResourceItemListWidget::setListViewMode ( ListViewMode layout)

Definition at line 56 of file KisResourceItemListWidget.cpp.

57{
58 m_d->viewMode = viewMode;
59
60 switch (viewMode) {
62 setViewMode(ViewMode::IconMode);
63 setFlow(Flow::LeftToRight);
64 setWrapping(true);
65 horizontalScrollBar()->setStyleSheet(m_d->prev_scrollbar_style);
66 setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
67 break;
68 }
70 setViewMode(ViewMode::IconMode);
71 setFlow(Flow::LeftToRight);
72 setWrapping(false);
73
74 // this is the only way to hide it and not have it occupy space
75 horizontalScrollBar()->setStyleSheet("QScrollBar::horizontal {height: 0px;}");
76 setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
77 break;
78 }
80 setViewMode(ViewMode::ListMode);
81 setFlow(Flow::TopToBottom);
82 setWrapping(false);
83 // horizontalScrollBar()->setStyleSheet(m_d->prev_scrollbar_style);
84 setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
85 setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
86 break;
87 }
88 }
89
91}
int iconSize(qreal width, qreal height)
void setItemSize(QSize size)
setItemSize convenience function which sets both the icon and the grid size to the same value.

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

◆ setStrictSelectionMode()

void KisResourceItemListWidget::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 115 of file KisResourceItemListWidget.cpp.

116{
117 m_d->strictSelectionMode = enable;
118}

References m_d.

◆ setToolTipShouldRenderCheckers()

void KisResourceItemListWidget::setToolTipShouldRenderCheckers ( bool value)

Definition at line 125 of file KisResourceItemListWidget.cpp.

126{
127 m_d->tip.setToolTipShouldRenderCheckers(value);
128}
float value(const T *src, size_t ch)

References m_d, and value().

◆ sigSizeChanged

void KisResourceItemListWidget::sigSizeChanged ( )
signal

◆ slotScrollerStateChange

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

Definition at line 54 of file KisResourceItemListWidget.h.

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

References KisKineticScroller::updateCursor().

◆ viewportEvent()

bool KisResourceItemListWidget::viewportEvent ( QEvent * event)
overrideprotected

Definition at line 179 of file KisResourceItemListWidget.cpp.

180{
181 return QListWidget::viewportEvent(event);
182}

Member Data Documentation

◆ m_d

const QScopedPointer<Private> KisResourceItemListWidget::m_d
private

Definition at line 80 of file KisResourceItemListWidget.h.

◆ prev_scrollbar_style

QString KisResourceItemListWidget::prev_scrollbar_style

Definition at line 27 of file KisResourceItemListWidget.cpp.

◆ scroller

QScroller* KisResourceItemListWidget::scroller {0}

Definition at line 26 of file KisResourceItemListWidget.cpp.

26{0};

◆ strictSelectionMode

bool KisResourceItemListWidget::strictSelectionMode {false}

Definition at line 23 of file KisResourceItemListWidget.cpp.

23{false};

◆ tip

KisIconToolTip KisResourceItemListWidget::tip

Definition at line 24 of file KisResourceItemListWidget.cpp.

◆ viewMode

ListViewMode KisResourceItemListWidget::viewMode = ListViewMode::IconGrid

Definition at line 22 of file KisResourceItemListWidget.cpp.


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