1 #include "heatmapverticalaxiswidget.h"
7 HeatmapVerticalAxisWidget::HeatmapVerticalAxisWidget(QWidget* parent) :
8 GraphAxisWidget(parent),
14 void HeatmapVerticalAxisWidget::setDataProvider(HeatmapDataProvider* data)
20 m_valueMax = (data->dataRows() + data->headerRows()) * m_rowHeight;
22 m_valueBegin = m_valueMin;
23 m_valueEnd = m_valueMax;
28 void HeatmapVerticalAxisWidget::mouseDoubleClickEvent(QMouseEvent *e)
30 if (e->pos().y() < m_data->headerRows() * m_rowHeight) {
31 m_selectionState->type = SelectionState::None;
32 emit selectionChanged();
34 int row = e->pos().y();
35 row -= m_data->headerRows() * m_rowHeight;
39 if (row >= m_data->dataRows()) {
40 m_selectionState->type = SelectionState::None;
41 emit selectionChanged();
43 m_selectionState->type = SelectionState::Vertical;
44 m_selectionState->start = m_data->dataRowAt(row);
45 m_selectionState->end = m_selectionState->start;
46 emit selectionChanged();
51 void HeatmapVerticalAxisWidget::paintEvent(QPaintEvent *)
57 QPainter painter(this);
58 painter.setPen(Qt::black);
59 painter.setBrush(Qt::lightGray);
60 painter.drawRect(0, 0, width() - 1, height() - 1);
62 /* Draw scrollable rows */
63 painter.translate(0, m_data->headerRows() * m_rowHeight - m_valueBegin % m_rowHeight);
64 int rowStart = m_valueBegin / m_rowHeight;
65 int rowEnd = qMin<int>(qCeil(m_valueEnd / (double)m_rowHeight), m_data->dataRows());
67 for (unsigned i = rowStart; i < rowEnd; ++i) {
68 painter.drawText(0, 0, width(), m_rowHeight, Qt::AlignHCenter | Qt::AlignVCenter, m_data->dataLabel(i));
69 painter.drawLine(0, m_rowHeight, width(), m_rowHeight);
70 painter.translate(0, m_rowHeight);
73 /* Draw fixed position headers */
74 painter.resetTransform();
75 painter.drawRect(0, 0, width() - 1, m_data->headerRows() * m_rowHeight);
77 for (unsigned i = 0; i < m_data->headerRows(); ++i) {
78 painter.drawText(0, 0, width(), m_rowHeight, Qt::AlignHCenter | Qt::AlignVCenter, m_data->headerLabel(i));
79 painter.drawLine(0, m_rowHeight, width(), m_rowHeight);
80 painter.translate(0, m_rowHeight);