#include "segmentedcontrol.h"
#include "mainwindow.h"
#include "painterutils.h"
+#include "fontutils.h"
-static const QColor borderColor = QColor(0x26, 0x26, 0x26);
+static const QColor borderColor = QColor(158, 157, 159);
class SegmentedControl::Private {
public:
SegmentedControl::SegmentedControl (QWidget *parent)
: QWidget(parent), d(new SegmentedControl::Private) {
+ setFont(FontUtils::small());
+
setMouseTracking(true);
d->hoveredAction = 0;
QPainter p(this);
QLinearGradient linearGrad(rect().topLeft(), rect().bottomLeft());
- linearGrad.setColorAt(0, borderColor);
- linearGrad.setColorAt(1, QColor(0x3c, 0x3c, 0x3c));
+ linearGrad.setColorAt(0, QColor(185, 183, 185));
+ linearGrad.setColorAt(1, QColor(176, 176, 178));
p.fillRect(rect(), QBrush(linearGrad));
// Calculate Buttons Size & Location
const int actionCount = d->actionList.size();
for (int i = 0; i < actionCount; i++) {
QAction *action = d->actionList.at(i);
-
if (i + 1 == actionCount) {
rect.setWidth(width - buttonWidth * (actionCount-1));
drawButton(&p, rect, action);
drawButton(&p, rect, action);
rect.moveLeft(rect.x() + rect.width());
}
-
}
-
}
void SegmentedControl::mouseMoveEvent (QMouseEvent *event) {
return(d->actionList[buttonIndex]);
}
-int SegmentedControl::calculateButtonWidth (void) const {
+int SegmentedControl::calculateButtonWidth() const {
QFontMetrics fontMetrics(font());
int tmpItemWidth, itemWidth = 0;
foreach (QAction *action, d->actionList) {
void SegmentedControl::drawUnselectedButton (QPainter *painter,
const QRect& rect,
const QAction *action) {
+ painter->setPen(QColor(0, 0, 0, 128));
paintButton(painter, rect, action);
}
QRadialGradient gradient(hCenter, 0,
width,
hCenter, 0);
- gradient.setColorAt(1, Qt::black);
- gradient.setColorAt(0, QColor(0x33, 0x33, 0x33));
+ gradient.setColorAt(1, QColor(212, 210, 212));
+ gradient.setColorAt(0, QColor(203, 203, 205));
painter->fillRect(0, 0, width, height, QBrush(gradient));
painter->restore();
+ painter->setPen(palette().windowText().color());
paintButton(painter, rect, action);
}
const int height = rect.height();
const int width = rect.width();
- if (action == d->pressedAction && action != d->checkedAction) {
- const int hCenter = width * .5;
- QRadialGradient gradient(hCenter, 0,
- width,
- hCenter, 0);
- gradient.setColorAt(1, QColor(0x00, 0x00, 0x00, 0));
- gradient.setColorAt(0, QColor(0x00, 0x00, 0x00, 16));
- painter->fillRect(0, 0, width, height, QBrush(gradient));
- } else if (action == d->hoveredAction && action != d->checkedAction) {
- const int hCenter = width * .5;
- QRadialGradient gradient(hCenter, 0,
- width,
- hCenter, 0);
- gradient.setColorAt(1, QColor(0xff, 0xff, 0xff, 0));
- gradient.setColorAt(0, QColor(0xff, 0xff, 0xff, 16));
- painter->fillRect(0, 0, width, height, QBrush(gradient));
- }
-
- painter->setPen(borderColor);
+ painter->save();
+ painter->setPen(QPen(borderColor, 1.0 / qApp->devicePixelRatio()));
#if defined(APP_MAC) | defined(APP_WIN)
painter->drawRect(-1, -1, width, height);
#else
painter->drawRect(0, 0, width, height - 1);
#endif
+ painter->restore();
const QString text = action->text();
// text shadow
+ /*
painter->setPen(QColor(0, 0, 0, 128));
painter->drawText(0, -1, width, height, Qt::AlignCenter, text);
+ */
- painter->setPen(QPen(Qt::white, 1));
painter->drawText(0, 0, width, height, Qt::AlignCenter, text);
if (action->property("notifyCount").isValid()) {
PainterUtils::paintBadge(painter, action->property("notifyCount").toString());
}
+ if (action == d->pressedAction && action != d->checkedAction) {
+ const int hCenter = width * .5;
+ QRadialGradient gradient(hCenter, 0,
+ width,
+ hCenter, 0);
+ gradient.setColorAt(1, QColor(0x00, 0x00, 0x00, 0));
+ gradient.setColorAt(0, QColor(0x00, 0x00, 0x00, 32));
+ painter->fillRect(0, 0, width, height, QBrush(gradient));
+ } else if (action == d->hoveredAction && action != d->checkedAction) {
+ const int hCenter = width * .5;
+ QRadialGradient gradient(hCenter, 0,
+ width,
+ hCenter, 0);
+ gradient.setColorAt(1, QColor(0x00, 0x00, 0x00, 0));
+ gradient.setColorAt(0, QColor(0x00, 0x00, 0x00, 16));
+ painter->fillRect(0, 0, width, height, QBrush(gradient));
+ }
+
painter->restore();
}