25 #include <QStyleOptionToolButton>
26 #include <QStylePainter>
27 #include <QToolButton>
30 #include <KLocalizedString>
32 class Q_DECL_HIDDEN KoGroupButton::Private
35 Private(KoGroupButton *qq,
const GroupPosition position) : groupPosition(position)
39 qq->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
41 GroupPosition groupPosition;
44 KoGroupButton::KoGroupButton(GroupPosition position,
QWidget* parent)
45 :
QToolButton(parent), d(new Private(this, position))
49 KoGroupButton::KoGroupButton(
QWidget* parent)
50 :
QToolButton(parent), d(new Private(this, NoGroup))
54 KoGroupButton::~KoGroupButton()
59 void KoGroupButton::setGroupPosition(KoGroupButton::GroupPosition groupPosition)
61 d->groupPosition = groupPosition;
62 emit groupPositionChanged();
65 KoGroupButton::GroupPosition KoGroupButton::groupPosition()
const
67 return d->groupPosition;
72 if (groupPosition() == NoGroup) {
78 initStyleOption(&opt);
82 QRect& panelRect = panelOpt.rect;
83 switch (groupPosition()) {
98 if (!isChecked() && !isDown() && !(panelOpt.state & QStyle::State_MouseOver)) {
101 panelOpt.state |= (QStyle::State_On | QStyle::State_Sunken);
102 QPalette panelPal(panelOpt.palette);
104 c = panelPal.color(QPalette::Button);
106 panelPal.setColor(QPalette::Button, c);
107 c = panelPal.color(QPalette::Window);
109 panelPal.setColor(QPalette::Window, c);
110 panelOpt.palette = panelPal;
111 painter.setOpacity(0.5);
114 painter.drawPrimitive(QStyle::PE_PanelButtonTool, panelOpt);
115 painter.setOpacity(1.0);
119 const int y1 = opt.rect.top() + 1;
120 const int y2 = opt.rect.bottom() - 1;
121 painter.setOpacity(0.4);
122 if (d->groupPosition != GroupRight) {
123 const int x = opt.rect.right();
124 painter.setPen(
QPen(opt.palette.color(QPalette::Dark), 0));
125 painter.drawLine(x, y1, x, y2);
127 painter.setOpacity(1.0);
130 painter.drawControl(QStyle::CE_ToolButtonLabel, opt);
141 if (!actions().isEmpty()) {
142 QAction* action = actions().constFirst();
143 setToolTip(i18nc(
"@info:tooltip of custom triple button",
"%1", action->
toolTip()));