22 #include <KAcceleratorManager>
24 #include <QStyleOptionToolButton>
25 #include <QStylePainter>
29 #include <QVBoxLayout>
42 setFocusPolicy(Qt::NoFocus);
43 KAcceleratorManager::setNoAccel(
this);
46 setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
58 QStyleOptionToolButton option;
59 initStyleOption(&option);
61 QFontMetrics fm = fontMetrics();
64 const int charWidth = fm.width(QLatin1Char(
'x'));
68 textSize = fm.size(Qt::TextShowMnemonic, option.text);
69 textSize.rwidth() += 2 * charWidth;
72 const int spacing = 2;
73 int iconwidth = 0, iconheight = 0;
74 iconwidth = option.iconSize.height();
75 iconheight = option.iconSize.width();
78 int width = 4 + textSize.width() + iconwidth + spacing;
79 int height = 4 + qMax(textSize.height(), iconheight) + spacing;
81 return QSize(height, width);
89 QStylePainter painter(
this);
90 QStyleOptionToolButton option;
91 initStyleOption(&option);
95 option.icon = QIcon();
96 painter.drawComplexControl(QStyle::CC_ToolButton, option);
99 QSize size(option.rect.size());
101 option.rect.setSize(size);
104 painter.translate(width(), 0);
108 option.text = text();
109 QIcon::Mode iconMode = (option.state & QStyle::State_MouseOver) ? QIcon::Active : QIcon::Normal;
110 QPixmap ic = icon().pixmap(option.iconSize, iconMode, QIcon::On);
111 QTransform transform;
112 transform = transform.rotate(-90);
113 option.icon = ic.transformed(transform, Qt::SmoothTransformation);
114 painter.drawControl(QStyle::CE_ToolButtonLabel, option);
125 _toolBar =
new QToolBar(i18nc(
"@title",
"Side Toolbar"),
this);
126 _toolBar->setFloatable(
false);
127 _toolBar->setMovable(
false);
128 _toolBar->setObjectName(
"sidebar");
129 _toolBar->setIconSize(QSize(16,16));
130 _toolBar->setContextMenuPolicy(Qt::PreventContextMenu);
131 setLayout(
new QVBoxLayout);
136 widget->setVisible(
false);
137 layout()->addWidget(widget);
141 button->setText(title);
142 button->setToolTip(i18n(
"Toggle '%1' view.", title));
143 button->setIcon(icon);
144 button->setShortcut(QKeySequence());
145 button->setChecked(
false);
148 connect(button, SIGNAL(clicked(
bool)),
this, SLOT(
buttonToggled(
bool)));
151 _toolBar->addWidget(button);
152 _widgets.insert(button, widget);
161 kWarning() <<
"Wrong sender for side bar toggle action, aborting";
165 Q_ASSERT(button->isChecked() == state);
166 Q_ASSERT(_widgets.contains(button));
169 if (button->isChecked() ==
false) {
176 QHash<SideToolButton*, QWidget*>::iterator iter = _widgets.begin();
177 while (iter != _widgets.end()) {
178 if (iter.key() != button) {
179 iter.key()->setChecked(
false);
180 (*iter)->setVisible(
false);
190 widget->setVisible(
false);
191 parentWidget()->setVisible(
false);
195 widget->setVisible(
true);
196 parentWidget()->setVisible(
true);;