- added settingsdialog
[buliscores] / src / scoretable.cpp
1 #include <QHeaderView>
2 #include <QDebug>
3 #include <QRect>
4
5 #include "scoretable.h"
6 #include "matchdaymodel.h"
7
8 ScoreTable::ScoreTable(QWidget *parent, MatchDayModel* model) :
9     QTableView(parent)
10 {
11     this->setAttribute(Qt::WA_TranslucentBackground);
12     this->setModel(model);
13     this->setSelectionMode(QAbstractItemView::NoSelection);
14
15     this->verticalHeader()->hide();
16     this->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
17     this->verticalHeader()->setMinimumSectionSize(1);
18
19     this->horizontalHeader()->hide();
20     this->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
21     this->horizontalHeader()->setMinimumSectionSize(1);
22
23     qDebug() << "Min VertHeaderSize: " << this->verticalHeader()->minimumSectionSize();
24
25     this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
26     this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
27
28     this->viewport()->setAutoFillBackground(true);
29     this->setShowGrid(false);
30 }
31
32 QSize ScoreTable::sizeHint() const
33 {
34     QSize s;
35
36     for (int i = 0; i < horizontalHeader()->count(); i++) {
37         s.setWidth(s.width() + horizontalHeader()->sectionSize(i));
38     }
39     // add missing few pixels (from borders mabye?)
40     // TODO: find better solution!
41     s.setWidth(s.width());
42     for (int i = 0; i < verticalHeader()->count(); i++) {
43         s.setHeight(s.height() + verticalHeader()->sectionSize(i));
44     }
45     // add missing few pixels (from borders mabye?)
46     // TODO: find better solution!
47     s.setHeight(s.height() + 3);
48
49     return s;
50 }
51
52 void ScoreTable::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
53 {
54     QSize s;
55
56     // this will recalculate section sizes
57     QTableView::dataChanged(topLeft, bottomRight);
58
59     for (int i = 0; i < horizontalHeader()->count(); i++) {
60         s.setWidth(s.width() + horizontalHeader()->sectionSize(i));
61     }
62     // add missing few pixels (from borders mabye?)
63     // TODO: find better solution!
64     s.setWidth(s.width());
65     for (int i = 0; i < verticalHeader()->count(); i++) {
66         s.setHeight(s.height() + verticalHeader()->sectionSize(i));
67     }
68     // add missing few pixels (from borders mabye?)
69     // TODO: find better solution!
70     s.setHeight(s.height() + 3);
71
72     this->resize(s);
73     this->parentWidget()->resize(s);
74
75     qDebug() << s;
76
77     updateGeometry();
78 }
79
80 void ScoreTable::mousePressEvent(QMouseEvent* event)
81 {
82     event->ignore();
83 }
84