|
|
|
@ -16,15 +16,19 @@ |
|
|
|
|
|
|
|
|
|
TrackWidget::TrackWidget(QWidget *parent) : QWidget(parent) { |
|
|
|
|
setFixedSize(spinner_size); |
|
|
|
|
setAutoFillBackground(false); |
|
|
|
|
|
|
|
|
|
comma_img = QPixmap("../assets/img_spinner_comma.png").scaled(spinner_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); |
|
|
|
|
setAutoFillBackground(true); |
|
|
|
|
setPalette(Qt::black); |
|
|
|
|
|
|
|
|
|
// pre-compute all the track imgs. make this a gif instead?
|
|
|
|
|
QTransform transform; |
|
|
|
|
QPixmap comma_img = QPixmap("../assets/img_spinner_comma.png").scaled(spinner_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); |
|
|
|
|
QTransform transform(1, 0, 0, 1, width() / 2, height() / 2); |
|
|
|
|
QPixmap track_img = QPixmap("../assets/img_spinner_track.png").scaled(spinner_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); |
|
|
|
|
for (auto &img : track_imgs) { |
|
|
|
|
img = track_img.transformed(transform.rotate(360/spinner_fps), Qt::SmoothTransformation); |
|
|
|
|
for (QPixmap &img : track_imgs) { |
|
|
|
|
img = comma_img; |
|
|
|
|
QPainter p(&img); |
|
|
|
|
p.setRenderHint(QPainter::SmoothPixmapTransform); |
|
|
|
|
p.setTransform(transform.rotate(360 / spinner_fps)); |
|
|
|
|
p.drawPixmap(-width() / 2, -height() / 2, track_img); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
m_anim.setDuration(1000); |
|
|
|
@ -37,18 +41,7 @@ TrackWidget::TrackWidget(QWidget *parent) : QWidget(parent) { |
|
|
|
|
|
|
|
|
|
void TrackWidget::paintEvent(QPaintEvent *event) { |
|
|
|
|
QPainter painter(this); |
|
|
|
|
QRect bg(0, 0, painter.device()->width(), painter.device()->height()); |
|
|
|
|
QBrush bgBrush("#000000"); |
|
|
|
|
painter.fillRect(bg, bgBrush); |
|
|
|
|
|
|
|
|
|
int track_idx = m_anim.currentValue().toInt(); |
|
|
|
|
QRect rect(track_imgs[track_idx].rect()); |
|
|
|
|
rect.moveCenter(bg.center()); |
|
|
|
|
painter.drawPixmap(rect.topLeft(), track_imgs[track_idx]); |
|
|
|
|
|
|
|
|
|
rect = comma_img.rect(); |
|
|
|
|
rect.moveCenter(bg.center()); |
|
|
|
|
painter.drawPixmap(rect.topLeft(), comma_img); |
|
|
|
|
painter.drawPixmap(0, 0, track_imgs[m_anim.currentValue().toInt()]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Spinner
|
|
|
|
@ -75,12 +68,10 @@ Spinner::Spinner(QWidget *parent) : QWidget(parent) { |
|
|
|
|
Spinner { |
|
|
|
|
background-color: black; |
|
|
|
|
} |
|
|
|
|
* { |
|
|
|
|
background-color: transparent; |
|
|
|
|
} |
|
|
|
|
QLabel { |
|
|
|
|
color: white; |
|
|
|
|
font-size: 80px; |
|
|
|
|
background-color: transparent; |
|
|
|
|
} |
|
|
|
|
QProgressBar { |
|
|
|
|
background-color: #373737; |
|
|
|
@ -114,11 +105,7 @@ void Spinner::update(int n) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int main(int argc, char *argv[]) { |
|
|
|
|
setQtSurfaceFormat(); |
|
|
|
|
|
|
|
|
|
Hardware::set_display_power(true); |
|
|
|
|
Hardware::set_brightness(65); |
|
|
|
|
|
|
|
|
|
initApp(); |
|
|
|
|
QApplication a(argc, argv); |
|
|
|
|
Spinner spinner; |
|
|
|
|
setMainWindow(&spinner); |
|
|
|
|