benoitrigolleau@108
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
benoitrigolleau@108
|
2
|
benoitrigolleau@108
|
3 /*
|
benoitrigolleau@108
|
4 Sound Access
|
benoitrigolleau@108
|
5 EASAIER client application.
|
benoitrigolleau@108
|
6 Silogic 2007. Benoit Rigolleau.
|
benoitrigolleau@108
|
7
|
benoitrigolleau@108
|
8 This program is free software; you can redistribute it and/or
|
benoitrigolleau@108
|
9 modify it under the terms of the GNU General Public License as
|
benoitrigolleau@108
|
10 published by the Free Software Foundation; either version 2 of the
|
benoitrigolleau@108
|
11 License, or (at your option) any later version. See the file
|
benoitrigolleau@108
|
12 COPYING included with this distribution for more information.
|
benoitrigolleau@108
|
13 */
|
benoitrigolleau@108
|
14
|
benoitrigolleau@108
|
15
|
benoitrigolleau@108
|
16 #include "WaitingWidget.h"
|
benoitrigolleau@108
|
17 #include <QPainter>
|
benoitrigolleau@108
|
18 #include <QLayout>
|
benoitrigolleau@108
|
19 #include <QPalette>
|
benoitrigolleau@108
|
20
|
benoitrigolleau@108
|
21 WaitingWidget::WaitingWidget(QWidget *parent):QWidget(parent){
|
benoitrigolleau@108
|
22 m_ind=0;
|
benoitrigolleau@220
|
23 colors[0]=QRgb(0xfffec000);
|
benoitrigolleau@220
|
24 colors[1]=QRgb(0xffdbf756);
|
benoitrigolleau@220
|
25 colors[2]=QRgb(0xffb7f151);
|
benoitrigolleau@220
|
26 colors[3]=QRgb(0xffb6d1aa);
|
benoitrigolleau@220
|
27 colors[4]=QRgb(0xff71b19d);
|
benoitrigolleau@220
|
28 colors[5]=QRgb(0xff9dd8ec);
|
benoitrigolleau@220
|
29 colors[6]=QRgb(0xff808080);
|
benoitrigolleau@220
|
30 colors[7]=QRgb(0xffcccccc);
|
benoitrigolleau@220
|
31
|
benoitrigolleau@108
|
32 }
|
benoitrigolleau@108
|
33
|
benoitrigolleau@108
|
34 void WaitingWidget::paintEvent(QPaintEvent *event){
|
benoitrigolleau@108
|
35
|
benoitrigolleau@108
|
36 QWidget::paintEvent(event);
|
benoitrigolleau@108
|
37 if(timer.isActive()){
|
benoitrigolleau@108
|
38 QPainter painter(this);
|
benoitrigolleau@108
|
39 painter.setRenderHint(QPainter::Antialiasing, false);
|
benoitrigolleau@108
|
40 draw(&painter);
|
benoitrigolleau@108
|
41 }
|
benoitrigolleau@108
|
42 }
|
benoitrigolleau@108
|
43 void WaitingWidget::draw(QPainter *painter){
|
benoitrigolleau@112
|
44
|
benoitrigolleau@216
|
45 QColor color1(QRgb(0x000000));
|
benoitrigolleau@216
|
46 color1.setAlpha(60);
|
benoitrigolleau@216
|
47 painter->setBrush(QBrush(color1, Qt::SolidPattern));
|
benoitrigolleau@216
|
48 painter->drawRect(0,0,this->width(), this->height());
|
benoitrigolleau@216
|
49
|
benoitrigolleau@220
|
50 painter->setRenderHint (QPainter::Antialiasing, true );
|
benoitrigolleau@216
|
51 int xm = this->width()/2;
|
benoitrigolleau@216
|
52 int ym = this->height()/2;
|
benoitrigolleau@216
|
53 painter->translate(xm,ym);
|
benoitrigolleau@216
|
54 for(int i=0; i < 8; i++){
|
benoitrigolleau@220
|
55 //QColor penColor(colors[(m_ind+i)%8]);
|
benoitrigolleau@220
|
56 QColor penColor(colors[1]);
|
benoitrigolleau@220
|
57 penColor.setAlpha(((m_ind+i)%8+1)*30);
|
benoitrigolleau@216
|
58 painter->setPen(QPen(penColor,8,Qt::SolidLine,Qt::RoundCap));
|
benoitrigolleau@216
|
59 float angle = (360.0f/8.0f);
|
benoitrigolleau@216
|
60 painter->rotate(-angle);
|
benoitrigolleau@216
|
61 painter->drawLine(20,0,35,0);
|
benoitrigolleau@112
|
62 }
|
benoitrigolleau@108
|
63 }
|
benoitrigolleau@108
|
64
|
benoitrigolleau@108
|
65
|
benoitrigolleau@108
|
66 void WaitingWidget::setAnimation(bool animate)
|
benoitrigolleau@108
|
67 {
|
benoitrigolleau@108
|
68 timer.stop();
|
benoitrigolleau@108
|
69 if (animate)
|
benoitrigolleau@216
|
70 timer.start(50, this);
|
benoitrigolleau@108
|
71 }
|
benoitrigolleau@108
|
72
|
benoitrigolleau@108
|
73 void WaitingWidget::timerEvent(QTimerEvent *e)
|
benoitrigolleau@108
|
74 {
|
benoitrigolleau@108
|
75 if (e->timerId() == timer.timerId()) {
|
benoitrigolleau@108
|
76 setUpdatesEnabled(false);
|
benoitrigolleau@216
|
77 m_ind = (m_ind+1)%8;
|
benoitrigolleau@108
|
78 setUpdatesEnabled(true);
|
benoitrigolleau@108
|
79 update();
|
benoitrigolleau@108
|
80 }
|
benoitrigolleau@108
|
81 }
|
benoitrigolleau@108
|
82
|