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

#include <KisTagSelectionWidget.h>

+ Inheritance diagram for KisTagSelectionWidget:

Signals

void sigAddTagToSelection (KoID tag)
 
void sigCreateNewTag (QString tag)
 
void sigRemoveTagFromSelection (KoID tag)
 

Public Member Functions

 KisTagSelectionWidget (QWidget *parent=0, bool createNew=true)
 
void setTagList (bool editable, QList< KoID > &selected, QList< KoID > &notSelected)
 
void setTagList (bool editable, QList< KoID > &selected, QList< KoID > &notSelected, QList< KoID > &semiSelected)
 
 ~KisTagSelectionWidget () override
 

Private Slots

void slotAddTagToSelection (QAction *action)
 
void slotRemoveTagFromSelection (KoID tag)
 

Private Attributes

QToolButton * m_addTagButton {nullptr}
 
bool m_createNew {true}
 
bool m_editable {false}
 
QLayout * m_layout {nullptr}
 

Friends

class TestKisTagSelectionWidget
 

Detailed Description

Definition at line 100 of file KisTagSelectionWidget.h.

Constructor & Destructor Documentation

◆ KisTagSelectionWidget()

KisTagSelectionWidget::KisTagSelectionWidget ( QWidget * parent = 0,
bool createNew = true )
explicit

Definition at line 246 of file KisTagSelectionWidget.cpp.

247 : QWidget(parent),
248 m_createNew(createNew)
249{
252
253 m_layout->addWidget(m_addTagButton);
254 connect(m_addTagButton, SIGNAL(sigCreateNewTag(QString)), this, SIGNAL(sigCreateNewTag(QString)), Qt::UniqueConnection);
255 connect(m_addTagButton, SIGNAL(sigAddNewTag(KoID)), this, SIGNAL(sigAddTagToSelection(KoID)), Qt::UniqueConnection);
256
257 setLayout(m_layout);
258}
void sigCreateNewTag(QString tag)
void sigAddTagToSelection(KoID tag)
Definition KoID.h:30

References m_addTagButton, m_createNew, m_layout, sigAddTagToSelection(), and sigCreateNewTag().

◆ ~KisTagSelectionWidget()

KisTagSelectionWidget::~KisTagSelectionWidget ( )
override

Definition at line 260 of file KisTagSelectionWidget.cpp.

261{
262
263}

Member Function Documentation

◆ setTagList() [1/2]

void KisTagSelectionWidget::setTagList ( bool editable,
QList< KoID > & selected,
QList< KoID > & notSelected )

Definition at line 265 of file KisTagSelectionWidget.cpp.

266{
267 QList<KoID> semiSelected;
268 setTagList(editable, selected, notSelected, semiSelected);
269}
void setTagList(bool editable, QList< KoID > &selected, QList< KoID > &notSelected)

References setTagList().

◆ setTagList() [2/2]

void KisTagSelectionWidget::setTagList ( bool editable,
QList< KoID > & selected,
QList< KoID > & notSelected,
QList< KoID > & semiSelected )

Definition at line 271 of file KisTagSelectionWidget.cpp.

272{
273 m_editable = editable;
274 QLayoutItem *item;
275
276 disconnect(m_addTagButton, SIGNAL(sigCreateNewTag(QString)), this, SIGNAL(sigCreateNewTag(QString)));
277 disconnect(m_addTagButton, SIGNAL(sigAddNewTag(KoID)), this, SIGNAL(sigAddTagToSelection(KoID)));
278
279 while((item = m_layout->takeAt(0))) {
280 if (item->widget()) {
281 if (!dynamic_cast<WdgAddTagButton*>(item->widget())) {
282 delete item->widget();
283 }
284 }
285 delete item;
286 }
287
288
289 WdgAddTagButton* addTagButton = dynamic_cast<WdgAddTagButton*>(m_addTagButton);
290 KIS_SAFE_ASSERT_RECOVER_RETURN(addTagButton);
291 addTagButton->setAvailableTagsList(notSelected);
292
293 Q_FOREACH(KoID tag, selected) {
294 WdgCloseableLabel* label = new WdgCloseableLabel(tag, m_editable, false, this);
295 connect(label, SIGNAL(sigRemoveTagFromSelection(KoID)), this, SLOT(slotRemoveTagFromSelection(KoID)), Qt::UniqueConnection);
296 m_layout->addWidget(label);
297 }
298
299 Q_FOREACH(KoID tag, semiSelected) {
300 WdgCloseableLabel* label = new WdgCloseableLabel(tag, m_editable, true, this);
301 connect(label, SIGNAL(sigRemoveTagFromSelection(KoID)), this, SLOT(slotRemoveTagFromSelection(KoID)), Qt::UniqueConnection);
302 m_layout->addWidget(label);
303 }
304
305 m_layout->addWidget(m_addTagButton);
306 m_addTagButton->setVisible(m_editable);
307
308
309 connect(m_addTagButton, SIGNAL(sigCreateNewTag(QString)), this, SIGNAL(sigCreateNewTag(QString)), Qt::UniqueConnection);
310 connect(m_addTagButton, SIGNAL(sigAddNewTag(KoID)), this, SIGNAL(sigAddTagToSelection(KoID)), Qt::UniqueConnection);
311
312 if (m_editable) {
313 }
314
315 if (layout()) {
316 layout()->invalidate();
317 }
318}
void slotRemoveTagFromSelection(KoID tag)
void sigRemoveTagFromSelection(KoID tag)
void setAvailableTagsList(QList< KoID > &notSelected)
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References KIS_SAFE_ASSERT_RECOVER_RETURN, m_addTagButton, m_editable, m_layout, WdgAddTagButton::setAvailableTagsList(), sigAddTagToSelection(), sigCreateNewTag(), sigRemoveTagFromSelection(), and slotRemoveTagFromSelection().

◆ sigAddTagToSelection

void KisTagSelectionWidget::sigAddTagToSelection ( KoID tag)
signal

◆ sigCreateNewTag

void KisTagSelectionWidget::sigCreateNewTag ( QString tag)
signal

◆ sigRemoveTagFromSelection

void KisTagSelectionWidget::sigRemoveTagFromSelection ( KoID tag)
signal

◆ slotAddTagToSelection

void KisTagSelectionWidget::slotAddTagToSelection ( QAction * action)
privateslot

Definition at line 320 of file KisTagSelectionWidget.cpp.

321{
322 if (!action) return;
323
324 if (!action->data().isNull()) {
325 KoID custom = action->data().value <KoID>();
326 Q_EMIT sigAddTagToSelection(custom);
327 }
328}

References sigAddTagToSelection().

◆ slotRemoveTagFromSelection

void KisTagSelectionWidget::slotRemoveTagFromSelection ( KoID tag)
privateslot

Definition at line 330 of file KisTagSelectionWidget.cpp.

331{
332 Q_EMIT sigRemoveTagFromSelection(tag);
333}

References sigRemoveTagFromSelection().

Friends And Related Symbol Documentation

◆ TestKisTagSelectionWidget

friend class TestKisTagSelectionWidget
friend

Definition at line 128 of file KisTagSelectionWidget.h.

Member Data Documentation

◆ m_addTagButton

QToolButton* KisTagSelectionWidget::m_addTagButton {nullptr}
private

Definition at line 124 of file KisTagSelectionWidget.h.

124{nullptr};

◆ m_createNew

bool KisTagSelectionWidget::m_createNew {true}
private

Definition at line 126 of file KisTagSelectionWidget.h.

126{true};

◆ m_editable

bool KisTagSelectionWidget::m_editable {false}
private

Definition at line 125 of file KisTagSelectionWidget.h.

125{false};

◆ m_layout

QLayout* KisTagSelectionWidget::m_layout {nullptr}
private

Definition at line 123 of file KisTagSelectionWidget.h.

123{nullptr};

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