2 #include "myreportdialog.h"
11 MyReportDialog::MyReportDialog(QWidget
*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";
37 void MyReportDialog::drawMyPie(QPainter
*painter
)
39 std::cout
<< "MyReportDialog::drawMyPie()\n";
42 painter
->setBrush(QBrush(Qt::red
, Qt::SolidPattern
));
43 painter
->drawPie(0, 0,
45 this->size().height() / 2,
47 ((float) m_daysLeft
/ m_totalDays
) * 16 * 360);
50 painter
->setBrush(QBrush(Qt::blue
, Qt::SolidPattern
));
51 painter
->drawPie(0, 0,
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,
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
;
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
;
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";
95 // painter->drawImage(QPoint(this->size().width() / 2,
96 // this->size().height(),
100 void MyReportDialog::drawPixmap(void)
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);
119 drawMyLegend(&painter
);
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.
130 void MyReportDialog::setDaysLeft(unsigned int daysLeft
)
132 m_daysLeft
= daysLeft
;
135 void MyReportDialog::setDaysOff(unsigned int daysOff
)
140 void MyReportDialog::setDaysTotal(unsigned int totalDays
)
142 m_totalDays
= totalDays
;