annotate widgets/ConfidenceWidget.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents c107866fd387
children
rev   line source
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 }