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 241 of file KisTagSelectionWidget.cpp.

242 : QWidget(parent),
243 m_createNew(createNew)
244{
247
248 m_layout->addWidget(m_addTagButton);
249 connect(m_addTagButton, SIGNAL(sigCreateNewTag(QString)), this, SIGNAL(sigCreateNewTag(QString)), Qt::UniqueConnection);
250 connect(m_addTagButton, SIGNAL(sigAddNewTag(KoID)), this, SIGNAL(sigAddTagToSelection(KoID)), Qt::UniqueConnection);
251
252 setLayout(m_layout);
253}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void sigCreateNewTag(QString tag)
void sigAddTagToSelection(KoID tag)
Definition KoID.h:30

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

◆ ~KisTagSelectionWidget()

KisTagSelectionWidget::~KisTagSelectionWidget ( )
override

Definition at line 255 of file KisTagSelectionWidget.cpp.

256{
257
258}

Member Function Documentation

◆ setTagList() [1/2]

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

Definition at line 260 of file KisTagSelectionWidget.cpp.

261{
262 QList<KoID> semiSelected;
263 setTagList(editable, selected, notSelected, semiSelected);
264}
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 266 of file KisTagSelectionWidget.cpp.

267{
268 m_editable = editable;
269 QLayoutItem *item;
270
271 disconnect(m_addTagButton, SIGNAL(sigCreateNewTag(QString)), this, SIGNAL(sigCreateNewTag(QString)));
272 disconnect(m_addTagButton, SIGNAL(sigAddNewTag(KoID)), this, SIGNAL(sigAddTagToSelection(KoID)));
273
274 while((item = m_layout->takeAt(0))) {
275 if (item->widget()) {
276 if (!dynamic_cast<WdgAddTagButton*>(item->widget())) {
277 delete item->widget();
278 }
279 }
280 delete item;
281 }
282
283
284 WdgAddTagButton* addTagButton = dynamic_cast<WdgAddTagButton*>(m_addTagButton);
285 KIS_SAFE_ASSERT_RECOVER_RETURN(addTagButton);
286 addTagButton->setAvailableTagsList(notSelected);
287
288 Q_FOREACH(KoID tag, selected) {
289 WdgCloseableLabel* label = new WdgCloseableLabel(tag, m_editable, false, this);
290 connect(label, SIGNAL(sigRemoveTagFromSelection(KoID)), this, SLOT(slotRemoveTagFromSelection(KoID)), Qt::UniqueConnection);
291 m_layout->addWidget(label);
292 }
293
294 Q_FOREACH(KoID tag, semiSelected) {
295 WdgCloseableLabel* label = new WdgCloseableLabel(tag, m_editable, true, this);
296 connect(label, SIGNAL(sigRemoveTagFromSelection(KoID)), this, SLOT(slotRemoveTagFromSelection(KoID)), Qt::UniqueConnection);
297 m_layout->addWidget(label);
298 }
299
300 m_layout->addWidget(m_addTagButton);
301 m_addTagButton->setVisible(m_editable);
302
303
304 connect(m_addTagButton, SIGNAL(sigCreateNewTag(QString)), this, SIGNAL(sigCreateNewTag(QString)), Qt::UniqueConnection);
305 connect(m_addTagButton, SIGNAL(sigAddNewTag(KoID)), this, SIGNAL(sigAddTagToSelection(KoID)), Qt::UniqueConnection);
306
307 if (m_editable) {
308 }
309
310 if (layout()) {
311 layout()->invalidate();
312 }
313}
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 connect(), 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 315 of file KisTagSelectionWidget.cpp.

316{
317 if (!action) return;
318
319 if (!action->data().isNull()) {
320 KoID custom = action->data().value <KoID>();
321 Q_EMIT sigAddTagToSelection(custom);
322 }
323}

References sigAddTagToSelection().

◆ slotRemoveTagFromSelection

void KisTagSelectionWidget::slotRemoveTagFromSelection ( KoID tag)
privateslot

Definition at line 325 of file KisTagSelectionWidget.cpp.

326{
327 Q_EMIT sigRemoveTagFromSelection(tag);
328}

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: