Krita Source Code Documentation
Loading...
Searching...
No Matches
rcombobox.cpp
Go to the documentation of this file.
1
27#include "rcombobox.h"
28
29// Qt includes
30
31#include <QApplication>
32#include <QStyle>
33#include <QToolButton>
34#include <QHBoxLayout>
35
36// KDE includes
37
38#include <klocalizedstring.h>
39
40#include <kis_icon_utils.h>
41
42namespace KDcrawIface
43{
44
45class Q_DECL_HIDDEN RComboBox::Private
46{
47
48public:
49
51 {
52 defaultIndex = 0;
53 resetButton = 0;
54 combo = 0;
55 }
56
58
59 QToolButton* resetButton;
60
61 QComboBox* combo;
62};
63
64RComboBox::RComboBox(QWidget* const parent)
65 : QWidget(parent), d(new Private)
66{
67 QHBoxLayout* const hlay = new QHBoxLayout(this);
68 d->combo = new QComboBox(this);
69 d->resetButton = new QToolButton(this);
70 d->resetButton->setAutoRaise(true);
71 d->resetButton->setFocusPolicy(Qt::NoFocus);
72 d->resetButton->setIcon(KisIconUtils::loadIcon("document-revert").pixmap(16, 16));
73 d->resetButton->setToolTip(i18nc("@info:tooltip", "Reset to default value"));
74
75 hlay->addWidget(d->combo);
76 hlay->addWidget(d->resetButton);
77 hlay->setStretchFactor(d->combo, 10);
78 hlay->setContentsMargins(0, 0, 0, 0);
79 hlay->setSpacing(QApplication::style()->pixelMetric(QStyle::PM_LayoutHorizontalSpacing));
80
81 // -------------------------------------------------------------
82
83 connect(d->resetButton, &QToolButton::clicked,
85
86 connect(d->combo, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated),
88
89 connect(d->combo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
91}
92
94{
95 delete d;
96}
97
98QComboBox* RComboBox::combo() const
99{
100 return d->combo;
101}
102
103void RComboBox::addItem(const QString& t, int index)
104{
105 d->combo->addItem(t, index);
106}
107
108void RComboBox::insertItem(int index, const QString& t)
109{
110 d->combo->insertItem(index, t);
111}
112
114{
115 return d->combo->currentIndex();
116}
117
119{
120 d->combo->setCurrentIndex(v);
121}
122
123int RComboBox::defaultIndex() const
124{
125 return d->defaultIndex;
126}
127
129{
130 d->defaultIndex = v;
131 d->combo->setCurrentIndex(d->defaultIndex);
133}
134
136{
137 d->combo->setCurrentIndex(d->defaultIndex);
138 d->resetButton->setEnabled(false);
139 slotItemActivated(d->defaultIndex);
140 Q_EMIT reset();
141}
142
144{
145 d->resetButton->setEnabled(v != d->defaultIndex);
146 Q_EMIT activated(v);
147}
148
150{
151 d->resetButton->setEnabled(v != d->defaultIndex);
152 Q_EMIT currentIndexChanged(v);
153}
154
155} // namespace KDcrawIface
qreal v
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void insertItem(int index, const QString &t)
void setCurrentIndex(int d)
Private *const d
Definition rcombobox.h:81
RComboBox(QWidget *const parent=0)
Definition rcombobox.cpp:64
void setDefaultIndex(int d)
QToolButton * resetButton
Definition rcombobox.cpp:59
void currentIndexChanged(int)
void addItem(const QString &t, int index=-1)
void slotCurrentIndexChanged(int)
QIcon loadIcon(const QString &name)
a combo box widget re-implemented with a reset button to switch to a default item