summaryrefslogtreecommitdiffstats
path: root/qt-ui/starwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui/starwidget.cpp')
-rw-r--r--qt-ui/starwidget.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/qt-ui/starwidget.cpp b/qt-ui/starwidget.cpp
index 508d9a746..d959ed3b9 100644
--- a/qt-ui/starwidget.cpp
+++ b/qt-ui/starwidget.cpp
@@ -17,6 +17,25 @@ const QImage& StarWidget::starInactive()
return inactiveStar;
}
+QImage focusedImage(const QImage& coloredImg)
+{
+ QImage img = coloredImg;
+ for (int i = 0; i < img.width(); ++i) {
+ for (int j = 0; j < img.height(); ++j) {
+ QRgb rgb = img.pixel(i, j);
+ if (!rgb)
+ continue;
+
+ QColor c(rgb);
+ c = c.dark();
+ img.setPixel(i, j, c.rgb());
+ }
+ }
+
+ return img;
+}
+
+
int StarWidget::currentStars() const
{
return current;
@@ -44,13 +63,14 @@ void StarWidget::mouseReleaseEvent(QMouseEvent *event)
void StarWidget::paintEvent(QPaintEvent *event)
{
QPainter p(this);
- QPixmap active = QPixmap::fromImage(starActive());
+ QImage star = hasFocus() ? focusedImage(starActive()) : starActive();
+ QPixmap selected = QPixmap::fromImage(star);
QPixmap inactive = QPixmap::fromImage(starInactive());
-
const IconMetrics& metrics = defaultIconMetrics();
+
for (int i = 0; i < current; i++)
- p.drawPixmap(i * metrics.sz_small + metrics.spacing, 0, active);
+ p.drawPixmap(i * metrics.sz_small + metrics.spacing, 0, selected);
for (int i = current; i < TOTALSTARS; i++)
p.drawPixmap(i * metrics.sz_small + metrics.spacing, 0, inactive);
@@ -132,16 +152,13 @@ void StarWidget::focusOutEvent(QFocusEvent *event)
QWidget::focusOutEvent(event);
}
-
void StarWidget::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Up || event->key() == Qt::Key_Right) {
- if (currentStars() < TOTALSTARS) {
+ if (currentStars() < TOTALSTARS)
setCurrentStars(currentStars() + 1);
- }
} else if (event->key() == Qt::Key_Down || event->key() == Qt::Key_Left) {
- if (currentStars() > 0) {
+ if (currentStars() > 0)
setCurrentStars(currentStars() - 1);
- }
}
}