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

#include <KisTagSelectionWidget.h>

+ Inheritance diagram for WdgAddTagButton:

Public Slots

void slotFinishLastAction ()
 

Signals

void sigAddNewTag (KoID tag)
 
void sigCreateNewTag (QString tagName)
 

Public Member Functions

void setAddNewTagAvailable (bool addNewTagAvailable)
 
void setAvailableTagsList (QList< KoID > &notSelected)
 
 WdgAddTagButton (QWidget *parent, bool createNew=true)
 
 ~WdgAddTagButton () override
 

Protected Types

enum  LastAction { AddNewTag , CreateNewTag }
 

Protected Member Functions

void paintEvent (QPaintEvent *event) override
 

Private Slots

void slotAddNewTag (QAction *action)
 
void slotCreateNewTag (QString tagName)
 

Private Attributes

bool m_addNewTagAvailable { true }
 
bool m_createNew
 
UserInputTagActionm_createNewTagAction {0}
 
LastAction m_lastAction { CreateNewTag }
 
KoID m_lastTagToAdd
 
QString m_lastTagToCreate {""}
 
QAction * m_noTags {0}
 
int m_size { 18 }
 

Friends

class TestKisTagSelectionWidget
 

Detailed Description

Definition at line 50 of file KisTagSelectionWidget.h.

Member Enumeration Documentation

◆ LastAction

Enumerator
AddNewTag 
CreateNewTag 

Definition at line 78 of file KisTagSelectionWidget.h.

Constructor & Destructor Documentation

◆ WdgAddTagButton()

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

Definition at line 114 of file KisTagSelectionWidget.cpp.

115 : QToolButton(parent),
116 m_createNew(createNew)
117{
118 setPopupMode(QToolButton::InstantPopup);
119 setIcon(KisIconUtils::loadIcon("list-add"));
120 setToolTip(i18n("Assign to tag"));
121 setContentsMargins(0, 0, 0, 0);
122 QSize defaultSize = QSize(1, 1)*m_size;
123 setMinimumSize(defaultSize);
124 setMaximumSize(defaultSize);
125
126 connect(this, SIGNAL(triggered(QAction*)), SLOT(slotAddNewTag(QAction*)));
127
128 if (m_createNew) {
129 UserInputTagAction *newTag = new UserInputTagAction(this);
130 newTag->setCloseParentOnTrigger(false);
131
132 connect(newTag, SIGNAL(triggered(QString)), this, SLOT(slotCreateNewTag(QString)), Qt::UniqueConnection);
133 m_createNewTagAction = newTag;
134 } else {
135 m_noTags = new QAction("No tags present");
136 QFont font = m_noTags->font();
137 font.setItalic(true);
138 m_noTags->setFont(font);
139 }
140
141}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void setCloseParentOnTrigger(bool closeParent)
The UserInputTagAction class defines an action with user text input that sends a signal with a simple...
Definition TagActions.h:131
void slotAddNewTag(QAction *action)
void slotCreateNewTag(QString tagName)
UserInputTagAction * m_createNewTagAction
QIcon loadIcon(const QString &name)

References connect(), KisIconUtils::loadIcon(), m_createNew, m_createNewTagAction, m_noTags, m_size, LineEditAction::setCloseParentOnTrigger(), slotAddNewTag(), and slotCreateNewTag().

◆ ~WdgAddTagButton()

WdgAddTagButton::~WdgAddTagButton ( )
override

Definition at line 143 of file KisTagSelectionWidget.cpp.

144{
145
146}

Member Function Documentation

◆ paintEvent()

void WdgAddTagButton::paintEvent ( QPaintEvent * event)
overrideprotected

Definition at line 218 of file KisTagSelectionWidget.cpp.

219{
220 Q_UNUSED(event);
221
222 QPainter painter(this);
223 painter.setRenderHint(QPainter::Antialiasing);
224 QPainterPath path;
225 path.addRoundedRect(this->rect(), 6, 6);
226 painter.fillPath(path, qApp->palette().light());
227 painter.setPen(QPen(qApp->palette().windowText(), painter.pen().widthF()));
228 QIcon icon = this->icon();
229 QSize size = this->rect().size()*0.6;
230
231 QSize iconSize = icon.actualSize(size);
232 QPixmap pix = icon.pixmap(iconSize);
233 QSize realSize = iconSize.scaled(iconSize, Qt::KeepAspectRatio);//pix.rect().size();
234 qreal hack = 0.5;
235 QPointF p = this->rect().topLeft() + QPointF(this->rect().width()/2 - realSize.width()/2 - hack, this->rect().height()/2 - realSize.height()/2 - hack);
236 painter.setOpacity(!isEnabled() ? 0.3 : 1.0);
237 painter.drawPixmap(p, pix);
238 painter.setOpacity(1.0);
239}
const Params2D p
int iconSize(qreal width, qreal height)
int size(const Forest< T > &forest)
Definition KisForest.h:1232

References iconSize(), and p.

◆ setAddNewTagAvailable()

void WdgAddTagButton::setAddNewTagAvailable ( bool addNewTagAvailable)

◆ setAvailableTagsList()

void WdgAddTagButton::setAvailableTagsList ( QList< KoID > & notSelected)

Definition at line 148 of file KisTagSelectionWidget.cpp.

149{
150 QList<QAction*> actionsToRemove = actions();
151 Q_FOREACH(QAction* action, actionsToRemove) {
152 removeAction(action);
153 }
154
155 Q_FOREACH(KoID tag, notSelected) {
156 QAction* action = new QAction(tag.name());
157 action->setData(QVariant::fromValue<KoID>(tag));
158 addAction(action);
159 }
160
161 QAction *separator = new QAction(this);
162 separator->setSeparator(true);
163 addAction(separator);
164
165 if (m_createNew) {
166 addAction(m_createNewTagAction);
167 setDefaultAction(0);
168 } else {
169 if (notSelected.count() == 0) {
170 addAction(m_noTags);
171 }
172 }
173}
Definition KoID.h:30
QString name() const
Definition KoID.cpp:68

References m_createNew, m_createNewTagAction, m_noTags, and KoID::name().

◆ sigAddNewTag

void WdgAddTagButton::sigAddNewTag ( KoID tag)
signal

◆ sigCreateNewTag

void WdgAddTagButton::sigCreateNewTag ( QString tagName)
signal

◆ slotAddNewTag

void WdgAddTagButton::slotAddNewTag ( QAction * action)
privateslot

Definition at line 184 of file KisTagSelectionWidget.cpp.

185{
186 if (action == m_createNewTagAction) {
187 m_lastTagToCreate = action->data().toString();
192 } else if (!action->data().isNull() && action->data().canConvert<KoID>()) {
193 m_lastTagToAdd = action->data().value<KoID>();
196 }
197
198
199 if (this->menu()) {
200 this->menu()->close();
201 }
202}
void setText(const QString &text)

References AddNewTag, CreateNewTag, m_createNewTagAction, m_lastAction, m_lastTagToAdd, m_lastTagToCreate, LineEditAction::setText(), and slotFinishLastAction().

◆ slotCreateNewTag

void WdgAddTagButton::slotCreateNewTag ( QString tagName)
privateslot

Definition at line 204 of file KisTagSelectionWidget.cpp.

205{
206 m_lastTagToCreate = tagName;
211
212
213 if (this->menu()) {
214 this->menu()->close();
215 }
216}

References CreateNewTag, m_createNewTagAction, m_lastAction, m_lastTagToCreate, LineEditAction::setText(), and slotFinishLastAction().

◆ slotFinishLastAction

void WdgAddTagButton::slotFinishLastAction ( )
slot

Definition at line 175 of file KisTagSelectionWidget.cpp.

176{
177 if (m_lastAction == CreateNewTag) {
179 } else {
181 }
182}
void sigAddNewTag(KoID tag)
void sigCreateNewTag(QString tagName)

References CreateNewTag, m_lastAction, m_lastTagToAdd, m_lastTagToCreate, sigAddNewTag(), and sigCreateNewTag().

Friends And Related Symbol Documentation

◆ TestKisTagSelectionWidget

friend class TestKisTagSelectionWidget
friend

Definition at line 96 of file KisTagSelectionWidget.h.

Member Data Documentation

◆ m_addNewTagAvailable

bool WdgAddTagButton::m_addNewTagAvailable { true }
private

Definition at line 86 of file KisTagSelectionWidget.h.

86{ true };

◆ m_createNew

bool WdgAddTagButton::m_createNew
private

Definition at line 94 of file KisTagSelectionWidget.h.

◆ m_createNewTagAction

UserInputTagAction* WdgAddTagButton::m_createNewTagAction {0}
private

Definition at line 92 of file KisTagSelectionWidget.h.

92{0};

◆ m_lastAction

LastAction WdgAddTagButton::m_lastAction { CreateNewTag }
private

Definition at line 88 of file KisTagSelectionWidget.h.

88{ CreateNewTag };

◆ m_lastTagToAdd

KoID WdgAddTagButton::m_lastTagToAdd
private

Definition at line 89 of file KisTagSelectionWidget.h.

◆ m_lastTagToCreate

QString WdgAddTagButton::m_lastTagToCreate {""}
private

Definition at line 90 of file KisTagSelectionWidget.h.

90{""};

◆ m_noTags

QAction* WdgAddTagButton::m_noTags {0}
private

Definition at line 93 of file KisTagSelectionWidget.h.

93{0};

◆ m_size

int WdgAddTagButton::m_size { 18 }
private

Definition at line 85 of file KisTagSelectionWidget.h.

85{ 18 };

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