summaryrefslogtreecommitdiffstats
path: root/graphbarwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'graphbarwidget.cpp')
-rw-r--r--graphbarwidget.cpp125
1 files changed, 0 insertions, 125 deletions
diff --git a/graphbarwidget.cpp b/graphbarwidget.cpp
deleted file mode 100644
index c6f9b0e..0000000
--- a/graphbarwidget.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version
- 2 of the License, or (at your option) any later version.
-*/
-
-#include <QFontMetrics>
-#include <QPainter>
-
-#include "graphbarwidget.h"
-
-GraphBarWidget::GraphBarWidget(const QList<QList<QVariant> > data, QWidget *parent) : QWidget(parent), mMargin(10), mData(data) {
- mBarHeight = fontMetrics().height();
-}
-
-int GraphBarWidget::maxValue() const {
- int retval = -1;
- foreach(QList<QVariant> l, mData){
- if(l.at(1).toInt() > retval){
- retval = l.at(1).toInt();
- }
- }
- return retval;
-}
-
-QSize GraphBarWidget::maxDescr() const {
- QFont f = font();
- f.setBold(true);
- QFontMetrics fm(f);
- QSize retval(0,0);
- foreach(QList<QVariant> l, mData){
- QString descr = l.at(0).toString();
- QSize curSize = fm.size(Qt::TextSingleLine, descr);
- if(curSize.width() > retval.width()){
- retval = curSize;
- }
- }
- return retval;
-}
-
-QSize GraphBarWidget::maxCount() const {
- QFontMetrics fm = fontMetrics();
- QSize retval(0,0);
- foreach(QList<QVariant> l, mData){
- QString curCount = QString("(%1)").arg(l.at(2).toString());
- QSize curSize = fm.size(Qt::TextSingleLine, curCount);
- if(curSize.width() > retval.width()){
- retval = curSize;
- }
- }
- return retval;
-}
-
-QSize GraphBarWidget::sizeHint() const {
- int height = mData.count() * mBarHeight;
- height += mData.count() * mMargin;
- height += mBarHeight + mMargin;
- return QSize(400, height);
-}
-
-void GraphBarWidget::paintEvent(QPaintEvent *){
- QPainter p(this);
- QHash<QString, qreal> length; //int
- QList<QList<QVariant> >::const_iterator it;
-
- //draw background
- QPen pen(Qt::red, 2);
- p.setPen(pen);
- QLinearGradient bgGradient(QPointF(0.0, height() / 2), QPointF(width(), height() / 2));
- bgGradient.setColorAt(0, QColor(221, 107, 80));
- bgGradient.setColorAt(1, QColor(251, 179, 150));
- QBrush brush(bgGradient);
- p.setBrush(brush);
- p.drawRect(contentsRect());
-
- //draw caption
- QFont f = font();
- f.setUnderline(true);
- f.setBold(true);
- p.setFont(f);
- QString cap(caption());
- QFontMetrics fm(f);
- int captionStartx = (width() - fm.width(cap)) / 2;
- int captionStarty = fm.height();
- p.drawText(captionStartx, captionStarty, cap);
-
- //prepare drawing data
- int barsStarty = fm.height() + 2 * mMargin + 10;
- f.setUnderline(false);
- f.setBold(true);
- p.setFont(f);
- int maxdescr = maxDescr().width();
- int maxcount = maxCount().width();
-
- int barsStartx = maxdescr + 2 * mMargin;
- int marginRight = maxcount + 2 * mMargin;
- int maxWidth = width() - barsStartx - marginRight;
- p.setRenderHints(QPainter::Antialiasing);
- p.setPen(QPen(Qt::red, 1));
-
- //calculate real lengths based on widget width
- for(it = mData.constBegin(); it != mData.constEnd(); ++it){
- qreal value = it->at(1).toDouble();
- value = value / maxValue() * maxWidth;
- length[it->at(0).toString()] = value;
- }
-
- //draw the bars and numbers
- int ctr(0);
- for(QList<QList<QVariant> >::const_iterator itr = mData.constBegin(); itr != mData.constEnd() ; ++itr, ++ctr){
- int starty = barsStarty + ctr * p.fontMetrics().height() + ctr * mMargin;
- p.drawText(mMargin, starty, itr->at(0).toString());
- QLinearGradient barGradient(QPointF(barsStartx, starty), QPointF(width(), starty));
- barGradient.setColorAt(0, QColor(0, 128, 170));
- barGradient.setColorAt(1, QColor(131, 205, 214));
- QBrush b(barGradient);
- p.setBrush(b);
- qreal len = length.value(itr->at(0).toString());
- QRect bar(barsStartx, starty - p.fontMetrics().height() + p.fontMetrics().descent(), len, p.fontMetrics().height());
- p.drawRect(bar);
- int nStartx = barsStartx + len + mMargin;
- p.drawText(nStartx, starty, QString(tr("(%1)")).arg(itr->at(2).toString()));
- }
-}