subsurface/qt-ui/starwidget.h
Giuseppe Bilotta 0171368b6d Dynamic StarWidget metrics
The default IMG_SIZE and SPACING in the StarWidget are not appropriate
for HiDPI displays. Replace them with StarMetrics which are
auto-computed from the (default) font size (which Qt determines from the
display DPI settings).

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-18 15:15:44 -07:00

51 lines
967 B
C++

#ifndef STARWIDGET_H
#define STARWIDGET_H
#include <QWidget>
enum StarConfig {
TOTALSTARS = 5
};
struct StarMetrics {
int size;
int spacing;
};
class StarWidget : public QWidget {
Q_OBJECT
public:
explicit StarWidget(QWidget *parent = 0, Qt::WindowFlags f = 0);
int currentStars() const;
/*reimp*/ QSize sizeHint() const;
static const QImage& starActive();
static const QImage& starInactive();
static const StarMetrics& metrics();
signals:
void valueChanged(int stars);
public
slots:
void setCurrentStars(int value);
void setReadOnly(bool readOnly);
protected:
/*reimp*/ void mouseReleaseEvent(QMouseEvent *);
/*reimp*/ void paintEvent(QPaintEvent *);
/*reimp*/ void focusInEvent(QFocusEvent *);
/*reimp*/ void focusOutEvent(QFocusEvent *);
/*reimp*/ void keyPressEvent(QKeyEvent *);
private:
int current;
bool readOnly;
static QImage activeStar;
static QImage inactiveStar;
static StarMetrics imgMetrics;
};
#endif // STARWIDGET_H