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 #include "ConfidenceWidget.h"
|
benoitrigolleau@108
|
16 #include <QPainter>
|
benoitrigolleau@108
|
17 #include <QString>
|
benoitrigolleau@108
|
18
|
benoitrigolleau@108
|
19 ConfidenceWidget::ConfidenceWidget(QWidget *parent, int confidence):QWidget(parent){
|
benoitrigolleau@108
|
20 setConfidence(confidence);
|
benoitrigolleau@108
|
21 }
|
benoitrigolleau@108
|
22
|
benoitrigolleau@108
|
23 void ConfidenceWidget::setConfidence(int confidence){
|
benoitrigolleau@108
|
24 m_confidence=confidence;
|
benoitrigolleau@108
|
25 }
|
benoitrigolleau@108
|
26 int ConfidenceWidget::confidence(){
|
benoitrigolleau@108
|
27 return m_confidence;
|
benoitrigolleau@108
|
28 }
|
benoitrigolleau@108
|
29
|
benoitrigolleau@108
|
30 void ConfidenceWidget::paintEvent(QPaintEvent *event){
|
benoitrigolleau@108
|
31 QPainter painter(this);
|
benoitrigolleau@108
|
32 painter.setRenderHint(QPainter::Antialiasing, false);
|
benoitrigolleau@108
|
33 draw(&painter);
|
benoitrigolleau@108
|
34
|
benoitrigolleau@108
|
35 }
|
benoitrigolleau@108
|
36
|
benoitrigolleau@108
|
37 void ConfidenceWidget::draw(QPainter *painter){
|
benoitrigolleau@108
|
38 int marging = 2;
|
benoitrigolleau@108
|
39 int confidenceHeight = 12;
|
benoitrigolleau@108
|
40 int labelHeight = confidenceHeight/3;
|
benoitrigolleau@108
|
41
|
benoitrigolleau@108
|
42 QColor niceGreen(QRgb(0xffdbf756));
|
benoitrigolleau@108
|
43 QLinearGradient rectRadian(0,0,0,confidenceHeight);
|
benoitrigolleau@108
|
44 rectRadian.setColorAt(0.0,Qt::black);
|
benoitrigolleau@108
|
45 rectRadian.setColorAt(0.2,niceGreen);
|
benoitrigolleau@108
|
46 rectRadian.setColorAt(0.5,Qt::lightGray);
|
benoitrigolleau@108
|
47 rectRadian.setColorAt(0.8,Qt::white);
|
benoitrigolleau@108
|
48 rectRadian.setColorAt(1.0,Qt::black);
|
benoitrigolleau@108
|
49 //painter->setBrush(rectRadian);
|
benoitrigolleau@108
|
50
|
benoitrigolleau@108
|
51 painter->translate(0,height()/2-confidenceHeight/2-labelHeight/2+4);
|
benoitrigolleau@108
|
52
|
benoitrigolleau@108
|
53 // the green rectangle
|
benoitrigolleau@108
|
54 painter->setPen(QPen(palette().foreground(),1,Qt::NoPen,Qt::RoundCap));
|
benoitrigolleau@108
|
55 //painter->setBrush(QBrush(palette().highlight().color(),Qt::SolidPattern));
|
benoitrigolleau@108
|
56 painter->setBrush(rectRadian);
|
benoitrigolleau@108
|
57 painter->drawRect(marging,0,(width()-2*marging)*(m_confidence/100.0),confidenceHeight);
|
benoitrigolleau@108
|
58
|
benoitrigolleau@108
|
59 //the empty rectangle
|
benoitrigolleau@108
|
60 QPen(palette().foreground(),1,Qt::SolidLine,Qt::RoundCap);
|
benoitrigolleau@108
|
61 painter->setPen(QPen(palette().foreground(),1,Qt::SolidLine,Qt::RoundCap));
|
benoitrigolleau@108
|
62 painter->setBrush(QBrush(palette().highlight().color(),Qt::NoBrush));
|
benoitrigolleau@108
|
63 painter->drawRect(marging,0,width()-2*marging,confidenceHeight);
|
benoitrigolleau@108
|
64
|
benoitrigolleau@108
|
65 //the text
|
benoitrigolleau@108
|
66 QString text_integer;
|
benoitrigolleau@108
|
67 text_integer = text_integer.setNum(m_confidence);
|
benoitrigolleau@108
|
68 painter->drawText(marging,-1,QString(text_integer+"%"));
|
benoitrigolleau@108
|
69
|
benoitrigolleau@108
|
70 painter->setPen(QPen(palette().foreground(),1,Qt::SolidLine,Qt::RoundCap));
|
benoitrigolleau@108
|
71 int step = (width()-2*marging)/4;
|
benoitrigolleau@108
|
72 for(int i=1;i<4;i++){
|
benoitrigolleau@108
|
73 painter->drawLine(marging+i*step,confidenceHeight,marging+i*step,confidenceHeight+labelHeight);
|
benoitrigolleau@108
|
74 }
|
benoitrigolleau@108
|
75 } |