diff options
Diffstat (limited to 'qt-ui/starwidget.cpp')
-rw-r--r-- | qt-ui/starwidget.cpp | 70 |
1 files changed, 34 insertions, 36 deletions
diff --git a/qt-ui/starwidget.cpp b/qt-ui/starwidget.cpp index 866fb5834..4d1fa066c 100644 --- a/qt-ui/starwidget.cpp +++ b/qt-ui/starwidget.cpp @@ -5,32 +5,29 @@ #include <QDebug> #include <QMouseEvent> -int StarWidget::currentStars() const -{ - return current; -} +QPixmap* StarWidget::activeStar = 0; +QPixmap* StarWidget::inactiveStar = 0; -void StarWidget::enableHalfStars(bool enabled) +QPixmap StarWidget::starActive() { - halfStar = enabled; - update(); + return (*activeStar); } -bool StarWidget::halfStarsEnabled() const +QPixmap StarWidget::starInactive() { - return halfStar; + return (*inactiveStar); } -int StarWidget::maxStars() const +int StarWidget::currentStars() const { - return stars; + return current; } void StarWidget::mouseReleaseEvent(QMouseEvent* event) { int starClicked = event->pos().x() / IMG_SIZE + 1; - if (starClicked > stars) - starClicked = stars; + if (starClicked > TOTALSTARS) + starClicked = TOTALSTARS; if (current == starClicked) current -= 1; @@ -45,10 +42,10 @@ void StarWidget::paintEvent(QPaintEvent* event) QPainter p(this); for(int i = 0; i < current; i++) - p.drawPixmap(i * IMG_SIZE + SPACING, 0, activeStar); + p.drawPixmap(i * IMG_SIZE + SPACING, 0, starActive()); - for(int i = current; i < stars; i++) - p.drawPixmap(i * IMG_SIZE + SPACING, 0, inactiveStar); + for(int i = current; i < TOTALSTARS; i++) + p.drawPixmap(i * IMG_SIZE + SPACING, 0, starInactive()); } void StarWidget::setCurrentStars(int value) @@ -58,27 +55,25 @@ void StarWidget::setCurrentStars(int value) Q_EMIT valueChanged(current); } -void StarWidget::setMaximumStars(int maximum) -{ - stars = maximum; - update(); -} - StarWidget::StarWidget(QWidget* parent, Qt::WindowFlags f): QWidget(parent, f), - stars(5), - current(0), - halfStar(false) + current(0) { - QSvgRenderer render(QString(":star")); - QPixmap renderedStar(IMG_SIZE, IMG_SIZE); + if(!activeStar){ + activeStar = new QPixmap(); + QSvgRenderer render(QString(":star")); + QPixmap renderedStar(IMG_SIZE, IMG_SIZE); - renderedStar.fill(Qt::transparent); - QPainter painter(&renderedStar); + renderedStar.fill(Qt::transparent); + QPainter painter(&renderedStar); - render.render(&painter, QRectF(0, 0, IMG_SIZE, IMG_SIZE)); - activeStar = renderedStar; - inactiveStar = grayImage(&renderedStar); + render.render(&painter, QRectF(0, 0, IMG_SIZE, IMG_SIZE)); + (*activeStar) = renderedStar; + } + if(!inactiveStar){ + inactiveStar = new QPixmap(); + (*inactiveStar) = grayImage(activeStar); + } } QPixmap StarWidget::grayImage(QPixmap* coloredImg) @@ -86,17 +81,20 @@ QPixmap StarWidget::grayImage(QPixmap* coloredImg) QImage img = coloredImg->toImage(); for (int i = 0; i < img.width(); ++i) { for (int j = 0; j < img.height(); ++j) { - QRgb col = img.pixel(i, j); - if (!col) + QRgb rgb = img.pixel(i, j); + if (!rgb) continue; - int gray = QColor(Qt::darkGray).rgb(); + + QColor c(rgb); + int gray = (c.red() + c.green() + c.blue()) / 3; img.setPixel(i, j, qRgb(gray, gray, gray)); } } + return QPixmap::fromImage(img); } QSize StarWidget::sizeHint() const { - return QSize(IMG_SIZE * stars + SPACING * (stars-1), IMG_SIZE); + return QSize(IMG_SIZE * TOTALSTARS + SPACING * (TOTALSTARS-1), IMG_SIZE); } |