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)
 
 ~KisResourceItemView () override
 

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{
23 setSelectionMode(QAbstractItemView::SingleSelection);
24 verticalHeader()->hide();
25 horizontalHeader()->hide();
26 verticalHeader()->setDefaultSectionSize(20);
27 setContextMenuPolicy(Qt::DefaultContextMenu);
29
30 QScroller *scroller = KisKineticScroller::createPreconfiguredScroller(this);
31 if (scroller) {
32 connect(scroller, SIGNAL(stateChanged(QScroller::State)), this, SLOT(slotScrollerStateChange(QScroller::State)));
33 }
34
35 connect(this, SIGNAL(clicked(QModelIndex)), SLOT(slotItemClicked(QModelIndex)));
36}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void slotItemClicked(const QModelIndex &index)
void setViewMode(ViewMode mode)
void slotScrollerStateChange(QScroller::State state)
KRITAWIDGETUTILS_EXPORT QScroller * createPreconfiguredScroller(QAbstractScrollArea *target)

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

◆ ~KisResourceItemView()

KisResourceItemView::~KisResourceItemView ( )
inlineoverride

Definition at line 37 of file KisResourceItemView.h.

37{ disconnect(); }

Member Function Documentation

◆ contextMenuEvent()

void KisResourceItemView::contextMenuEvent ( QContextMenuEvent * event)
overrideprotected

Definition at line 85 of file KisResourceItemView.cpp.

86{
87 QTableView::contextMenuEvent(event);
88 Q_EMIT contextMenuRequested(event->globalPos());
89}
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 71 of file KisResourceItemView.cpp.

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

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 91 of file KisResourceItemView.cpp.

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

References sigSizeChanged(), and updateView().

◆ selectionChanged()

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

Definition at line 61 of file KisResourceItemView.cpp.

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

References currentResourceChanged().

◆ setViewMode()

void KisResourceItemView::setViewMode ( ViewMode mode)
protected

Definition at line 98 of file KisResourceItemView.cpp.

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

References FIXED_COLUMNS, FIXED_ROWS, and m_viewMode.

◆ sigSizeChanged

void KisResourceItemView::sigSizeChanged ( )
signal

◆ slotItemClicked

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

Definition at line 77 of file KisResourceItemView.cpp.

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

References currentResourceClicked(), and m_beforeClickIndex.

◆ slotScrollerStateChange

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

Definition at line 40 of file KisResourceItemView.h.

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

References KisKineticScroller::updateCursor().

◆ updateView()

void KisResourceItemView::updateView ( )
protected

Definition at line 118 of file KisResourceItemView.cpp.

119{
120 if (!model()) return;
121
122 int columnCount = model()->columnCount(QModelIndex());
123 int rowCount = model()->rowCount(QModelIndex());
124 int rowHeight, columnWidth;
125
126 if (m_viewMode == FIXED_COLUMNS) {
127 columnWidth = qFloor(viewport()->size().width() / static_cast<double>(columnCount));
128
129 for (int i = 0; i < columnCount; ++i) {
130 setColumnWidth(i, columnWidth);
131 }
132 // keep aspect ratio always square.
133 if (columnCount > 1) {
134 for (int i = 0; i < rowCount; ++i) {
135 setRowHeight(i, columnWidth);
136 }
137 }
138 } else if (m_viewMode == FIXED_ROWS) {
139 if (rowCount == 0) return; // Don't divide by zero
140 rowHeight = qFloor(viewport()->size().height() / static_cast<double>(rowCount));
141
142 for (int i = 0; i < rowCount; ++i) {
143 setRowHeight(i, rowHeight);
144 }
145 }
146}
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 38 of file KisResourceItemView.cpp.

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

Member Data Documentation

◆ m_beforeClickIndex

QModelIndex KisResourceItemView::m_beforeClickIndex
private

Definition at line 79 of file KisResourceItemView.h.

◆ m_tip

KisIconToolTip KisResourceItemView::m_tip
private

Definition at line 78 of file KisResourceItemView.h.

◆ m_viewMode

ViewMode KisResourceItemView::m_viewMode
private

Definition at line 80 of file KisResourceItemView.h.


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