Add support for rank list plus minor changes here and there
[agianapa.git] / qt / leleja / myreportdialog.cpp
blob69705bcd1c98c32550e9198ec316eef4092d2f9b
1 #include <iostream>
2 #include "myreportdialog.h"
3 #include "myrank.h"
5 #include <QPainter>
6 #include <QPixmap>
7 #include <QString>
8 #include <QTextStream>
9 #include <QTextCodec>
11 MyReportDialog::MyReportDialog(QWidget *parent)
12 : QDialog(parent)
14 std::cout << "MyReportDialog::MyReportDialog()\n";
17 MyReportDialog::~MyReportDialog()
19 std::cout << "MyReportDialog::~MyReportDialog()\n";
22 void MyReportDialog::paintEvent(QPaintEvent *event)
24 std::cout << "MyReportDialog::paintEvent()\n";
26 QPainter painter(this);
27 painter.drawPixmap(0, 0, m_pixmap);
30 void MyReportDialog::resizeEvent(QResizeEvent *event)
32 std::cout << "MyReportDialog::resizeEvent()\n";
34 drawPixmap();
37 void MyReportDialog::drawMyPie(QPainter *painter)
39 std::cout << "MyReportDialog::drawMyPie()\n";
41 // Days remaining
42 painter->setBrush(QBrush(Qt::red, Qt::SolidPattern));
43 painter->drawPie(0, 0,
44 this->size().width(),
45 this->size().height() / 2,
47 ((float) m_daysLeft / m_totalDays) * 16 * 360);
49 // Days off
50 painter->setBrush(QBrush(Qt::blue, Qt::SolidPattern));
51 painter->drawPie(0, 0,
52 this->size().width(),
53 this->size().height() / 2,
54 ((float) m_daysLeft / m_totalDays) * 16 * 360,
55 ((float) m_daysOff / m_totalDays) * 16 * 360);
57 // Days that have been served
58 painter->setBrush(QBrush(Qt::green, Qt::SolidPattern));
59 painter->drawPie(0, 0,
60 this->size().width(),
61 this->size().height() / 2,
62 ((float) (m_daysLeft + m_daysOff) / m_totalDays) * 16 * 360,
63 ((float) (m_totalDays - m_daysLeft - m_daysOff) / m_totalDays) * 16 * 360);
66 void MyReportDialog::drawMyLegend(QPainter *painter)
68 float percentDaysServed;
69 float percentDaysLeft;
70 float percentDaysOff;
72 std::cout << "MyReportDialog::drawMyLabel\n";
74 percentDaysServed = 100.0 * (m_totalDays - m_daysLeft) / m_totalDays;
75 percentDaysLeft = 100.0 * m_daysLeft / m_totalDays;
76 percentDaysOff = 100.0 * m_daysOff / m_totalDays;
78 QString result;
79 QTextStream out(&result);
80 out.setRealNumberPrecision(2);
82 out << QString::fromUtf8("Υπηρετήθηκε = ") << percentDaysServed << "%\n";
83 out << QString::fromUtf8("Και σήμερα = ") << percentDaysLeft << "%\n";
84 out << QString::fromUtf8("Άδεια = ") << percentDaysOff << "%\n";
86 painter->setPen(QPen(Qt::white));
87 painter->drawText(contentsRect(), Qt::AlignCenter, result);
90 void MyReportDialog::drawMyRank(QPainter *painter)
92 std::cout << "MyReportDialog::drawMyRank()\n";
94 // Draw rank image
95 // painter->drawImage(QPoint(this->size().width() / 2,
96 // this->size().height(),
97 // m_rank.m_image));
100 void MyReportDialog::drawPixmap(void)
102 // Create a pixmap
103 m_pixmap = QPixmap(size());
104 m_pixmap.fill(this, 0, 0);
106 // Create a QPainter to draw on the pixmap
107 QPainter painter(&m_pixmap);
109 // Set the painter's pen and backround to be the same as the parent window
110 painter.initFrom(this);
112 // Enable antialiasing mode
113 painter.setRenderHint(QPainter::Antialiasing, true);
115 // Draw pie
116 drawMyPie(&painter);
118 // Draw label
119 drawMyLegend(&painter);
121 // Draw rank image
122 drawMyRank(&painter);
124 // This function won't invoke an immediate repaint,
125 // instead it will schedule a paint event that will be processed,
126 // whenever Qt returns to the main event loop.
127 update();
130 void MyReportDialog::setDaysLeft(unsigned int daysLeft)
132 m_daysLeft = daysLeft;
135 void MyReportDialog::setDaysOff(unsigned int daysOff)
137 m_daysOff = daysOff;
140 void MyReportDialog::setDaysTotal(unsigned int totalDays)
142 m_totalDays = totalDays;