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

The resource view. More...

#include <KisResourceItemView.h>

+ Inheritance diagram for KisResourceItemView:

Public Types

enum  ViewMode { FIXED_COLUMNS , FIXED_ROWS }
 

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

 KisResourceItemView (QWidget *parent=0)
 

Protected Member Functions

void contextMenuEvent (QContextMenuEvent *event) override
 
void mousePressEvent (QMouseEvent *event) override
 
void resizeEvent (QResizeEvent *event) override
 
void selectionChanged (const QItemSelection &selected, const QItemSelection &deselected) override
 
void setViewMode (ViewMode mode)
 
void updateView ()
 
bool viewportEvent (QEvent *event) override
 

Private Slots

void slotItemClicked (const QModelIndex &index)
 

Private Attributes

QModelIndex m_beforeClickIndex
 
KisIconToolTip m_tip
 
ViewMode m_viewMode
 

Friends

class KisResourceItemChooser
 

Detailed Description

The resource view.

Definition at line 25 of file KisResourceItemView.h.

Member Enumeration Documentation

◆ ViewMode

Enumerator
FIXED_COLUMNS 
FIXED_ROWS 

The number of columns is fixed.

The number of rows is fixed

Definition at line 31 of file KisResourceItemView.h.

31 {
34 };
@ FIXED_ROWS
The number of columns is fixed.

Constructor & Destructor Documentation

◆ KisResourceItemView()

KisResourceItemView::KisResourceItemView ( QWidget * parent = 0)
explicit

Definition at line 20 of file KisResourceItemView.cpp.

21 : QTableView(parent)
22 , m_tip(this)
23{
24 setSelectionMode(QAbstractItemView::SingleSelection);
25 verticalHeader()->hide();
26 horizontalHeader()->hide();
27 verticalHeader()->setDefaultSectionSize(20);
28 setContextMenuPolicy(Qt::DefaultContextMenu);
30
31 QScroller *scroller = KisKineticScroller::createPreconfiguredScroller(this);
32 if (scroller) {
33 connect(scroller, SIGNAL(stateChanged(QScroller::State)), this, SLOT(slotScrollerStateChange(QScroller::State)));
34 }
35
36 connect(this, SIGNAL(clicked(QModelIndex)), SLOT(slotItemClicked(QModelIndex)));
37}
void slotItemClicked(const QModelIndex &index)
void setViewMode(ViewMode mode)
void slotScrollerStateChange(QScroller::State state)
KRITAWIDGETUTILS_EXPORT QScroller * createPreconfiguredScroller(QAbstractScrollArea *target)

References KisKineticScroller::createPreconfiguredScroller(), FIXED_COLUMNS, setViewMode(), slotItemClicked(), and slotScrollerStateChange().

Member Function Documentation

◆ contextMenuEvent()

void KisResourceItemView::contextMenuEvent ( QContextMenuEvent * event)
overrideprotected

Definition at line 86 of file KisResourceItemView.cpp.

87{
88 QTableView::contextMenuEvent(event);
89 Q_EMIT contextMenuRequested(event->globalPos());
90}
void contextMenuRequested(const QPoint &)

References contextMenuRequested().

◆ contextMenuRequested

void KisResourceItemView::contextMenuRequested ( const QPoint & )
signal

◆ currentResourceChanged

void KisResourceItemView::currentResourceChanged ( const QModelIndex & )
signal

◆ currentResourceClicked

void KisResourceItemView::currentResourceClicked ( const QModelIndex & )
signal

◆ mousePressEvent()

void KisResourceItemView::mousePressEvent ( QMouseEvent * event)
overrideprotected

Definition at line 72 of file KisResourceItemView.cpp.

73{
74 m_beforeClickIndex = currentIndex();
75 QTableView::mousePressEvent(event);
76}

References m_beforeClickIndex.

◆ resizeEvent()

void KisResourceItemView::resizeEvent ( QResizeEvent * event)
overrideprotected

This will draw a number of rows based on the number of columns if m_viewMode is FIXED_COLUMNS And it will draw a number of columns based on the number of rows if m_viewMode is FIXED_ROWS

Definition at line 92 of file KisResourceItemView.cpp.

93{
94 QTableView::resizeEvent(event);
95 updateView();
96 Q_EMIT sigSizeChanged();
97}

References sigSizeChanged(), and updateView().

◆ selectionChanged()

void KisResourceItemView::selectionChanged ( const QItemSelection & selected,
const QItemSelection & deselected )
overrideprotected

Definition at line 62 of file KisResourceItemView.cpp.

63{
64 if (selected.isEmpty()) {
65 Q_EMIT currentResourceChanged(QModelIndex());
66 }
67 else {
68 Q_EMIT currentResourceChanged(selected.indexes().first());
69 }
70}
void currentResourceChanged(const QModelIndex &)

References currentResourceChanged().

◆ setViewMode()

void KisResourceItemView::setViewMode ( ViewMode mode)
protected

Definition at line 99 of file KisResourceItemView.cpp.

100{
101 m_viewMode = mode;
102
103 switch (m_viewMode) {
104 case FIXED_COLUMNS:
105 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // Horizontal scrollbar is never needed
106 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
107 break;
108 case FIXED_ROWS:
109 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
110 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // Vertical scrollbar is never needed
111 break;
112 default:
113 setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
114 setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
115 }
116
117}

References FIXED_COLUMNS, FIXED_ROWS, and m_viewMode.

◆ sigSizeChanged

void KisResourceItemView::sigSizeChanged ( )
signal

◆ slotItemClicked

void KisResourceItemView::slotItemClicked ( const QModelIndex & index)
privateslot

Definition at line 78 of file KisResourceItemView.cpp.

79{
80 if (m_beforeClickIndex == index) {
81 Q_EMIT currentResourceClicked(index);
82 }
83 m_beforeClickIndex = QModelIndex();
84}
void currentResourceClicked(const QModelIndex &)

References currentResourceClicked(), and m_beforeClickIndex.

◆ slotScrollerStateChange

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

Definition at line 39 of file KisResourceItemView.h.

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

References KisKineticScroller::updateCursor().

◆ updateView()

void KisResourceItemView::updateView ( )
protected

Definition at line 119 of file KisResourceItemView.cpp.

120{
121 if (!model()) return;
122
123 int columnCount = model()->columnCount(QModelIndex());
124 int rowCount = model()->rowCount(QModelIndex());
125 int rowHeight, columnWidth;
126
127 if (m_viewMode == FIXED_COLUMNS) {
128 columnWidth = qFloor(viewport()->size().width() / static_cast<double>(columnCount));
129
130 for (int i = 0; i < columnCount; ++i) {
131 setColumnWidth(i, columnWidth);
132 }
133 // keep aspect ratio always square.
134 if (columnCount > 1) {
135 for (int i = 0; i < rowCount; ++i) {
136 setRowHeight(i, columnWidth);
137 }
138 }
139 } else if (m_viewMode == FIXED_ROWS) {
140 if (rowCount == 0) return; // Don't divide by zero
141 rowHeight = qFloor(viewport()->size().height() / static_cast<double>(rowCount));
142
143 for (int i = 0; i < rowCount; ++i) {
144 setRowHeight(i, rowHeight);
145 }
146 }
147}
int size(const Forest< T > &forest)
Definition KisForest.h:1232

References FIXED_COLUMNS, FIXED_ROWS, and m_viewMode.

◆ viewportEvent()

bool KisResourceItemView::viewportEvent ( QEvent * event)
overrideprotected

Definition at line 39 of file KisResourceItemView.cpp.

40{
41 if (!model()) return true;
42
43 if (event->type() == QEvent::ToolTip) {
44 QHelpEvent *he = static_cast<QHelpEvent *>(event);
45#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
46 QStyleOptionViewItem option = viewOptions();
47#else
48 QStyleOptionViewItem option;
49 initViewItemOption(&option);
50#endif
51 QModelIndex index = model()->buddy(indexAt(he->pos()));
52 if (index.isValid()) {
53 option.rect = visualRect(index);
54 m_tip.showTip(he->pos(), option, index);
55 return true;
56 }
57 }
58
59 return QTableView::viewportEvent(event);
60}
void showTip(const QPoint &pos, const QStyleOptionViewItem &option, const QModelIndex &index)

References m_tip, and KoItemToolTip::showTip().

Friends And Related Symbol Documentation

◆ KisResourceItemChooser

friend class KisResourceItemChooser
friend

Definition at line 54 of file KisResourceItemView.h.

Member Data Documentation

◆ m_beforeClickIndex

QModelIndex KisResourceItemView::m_beforeClickIndex
private

Definition at line 78 of file KisResourceItemView.h.

◆ m_tip

KisIconToolTip KisResourceItemView::m_tip
private

Definition at line 77 of file KisResourceItemView.h.

◆ m_viewMode

ViewMode KisResourceItemView::m_viewMode
private

Definition at line 79 of file KisResourceItemView.h.


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