1 /***************************************************************************
2 statsfieldperbandwidget.cpp - description
3 -------------------
4 begin : jul 2021
5 copyright : (C) 2021 by Jaime Robles
6 email : jaime@robles.es
7 ***************************************************************************/
8
9 /*****************************************************************************
10 * This file is part of KLog. *
11 * *
12 * KLog is free software: you can redistribute it and/or modify *
13 * it under the terms of the GNU General Public License as published by *
14 * the Free Software Foundation, either version 3 of the License, or *
15 * (at your option) any later version. *
16 * *
17 * KLog is distributed in the hope that it will be useful, *
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
20 * GNU General Public License for more details. *
21 * *
22 * You should have received a copy of the GNU General Public License *
23 * along with KLog. If not, see <https://www.gnu.org/licenses/>. *
24 * *
25 *****************************************************************************/
26 #include "statsfieldperbandwidget.h"
27
StatsFieldPerBandWidget(DataProxy_SQLite * dp,ValidFieldsForStats _field,QWidget * parent)28 StatsFieldPerBandWidget::StatsFieldPerBandWidget(DataProxy_SQLite *dp, ValidFieldsForStats _field, QWidget *parent)
29 {
30 //qDebug() << "StatsFieldPerBandWidget::StatsFieldPerBandWidget" << QT_ENDL;
31
32 dataProxy = dp;
33 util = new Utilities;
34 selectedField = _field;
35 modeComboBox = new QComboBox;
36
37 createUI();
38 //prepareChart();
39 }
40
createUI()41 void StatsFieldPerBandWidget::createUI()
42 {
43 modeInUse = "ALL";
44 log = -1;
45 QString allString = tr("All");
46 modeComboBox->clear ();
47 modeComboBox->addItem (allString);
48 modeComboBox->addItems (dataProxy->getModesInLog (-1));
49
50 dataProxy->getModesInLog (-1);
51
52 tableWidget = new QTableWidget(this);
53 tableWidget->setRowCount(0);
54 tableWidget->setColumnCount(3);
55
56 tableWidget->resizeRowsToContents();
57 tableWidget->sortByColumn(0, Qt::AscendingOrder);
58 tableWidget->horizontalHeader()->setStretchLastSection(true);
59
60 QLabel *textLabel = new QLabel;
61 textLabel->setText(tr("Mode: "));
62 textLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
63
64 QHBoxLayout *labelLayout = new QHBoxLayout;
65 labelLayout->addWidget(textLabel);
66 labelLayout->addWidget(modeComboBox);
67
68 QVBoxLayout *layout = new QVBoxLayout;
69 layout->addLayout(labelLayout);
70 layout->addWidget(tableWidget);
71 setLayout(layout);
72
73 connect(modeComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(slotModeComboBoxChanged() ) ) ;
74
75 }
76
prepareChart(const int _log)77 void StatsFieldPerBandWidget::prepareChart(const int _log)
78 {
79 //qDebug() << Q_FUNC_INFO << "Log = " << QString::number(_log) << QT_ENDL;
80
81 while(tableWidget->rowCount()>0)
82 {
83 tableWidget->removeRow(tableWidget->rowCount()-1);
84 }
85
86 log = _log;
87
88 tableWidget->setHorizontalHeaderItem(0, new QTableWidgetItem(tr("Band")));
89 tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem(tr("Worked")));
90 tableWidget->setHorizontalHeaderItem(2, new QTableWidgetItem(tr("Confirmed")));
91 tableWidget->setStyleSheet("QHeaderView::section { background-color:cornflowerblue }");
92
93 QStringList bands;
94 bands << dataProxy->getBandsInLog (_log);
95 QString aux;
96 int gridsCount;
97 foreach (aux, bands)
98 {
99 tableWidget->insertRow(tableWidget->rowCount());
100 tableWidget->setItem(tableWidget->rowCount()-1, 0, new QTableWidgetItem((aux)) );
101 QTableWidgetItem *item = tableWidget->item (tableWidget->rowCount()-1, 0);
102 item->setTextAlignment( Qt::AlignCenter );
103 gridsCount = dataProxy->getFieldInBand (selectedField, aux, false, modeInUse, _log);
104 tableWidget->setItem(tableWidget->rowCount()-1, 1, new QTableWidgetItem(QString::number(gridsCount)) );
105 item = tableWidget->item (tableWidget->rowCount()-1, 1);
106 item->setTextAlignment( Qt::AlignCenter );
107 gridsCount = dataProxy->getFieldInBand (selectedField, aux, true, modeInUse, _log);
108 tableWidget->setItem(tableWidget->rowCount()-1, 2, new QTableWidgetItem(QString::number(gridsCount)) );
109 item = tableWidget->item (tableWidget->rowCount()-1, 2);
110 item->setTextAlignment( Qt::AlignCenter );
111 }
112 // Now we add the "All" row.
113 tableWidget->insertRow(tableWidget->rowCount());
114 tableWidget->setItem(tableWidget->rowCount()-1, 0, new QTableWidgetItem(tr("All")) );
115 QTableWidgetItem *item = tableWidget->item (tableWidget->rowCount()-1, 0);
116 item->setTextAlignment( Qt::AlignCenter );
117 gridsCount = dataProxy->getFieldInBand (selectedField, "ALL", false, modeInUse, _log);
118 tableWidget->setItem(tableWidget->rowCount()-1, 1, new QTableWidgetItem(QString::number(gridsCount)) );
119 item = tableWidget->item (tableWidget->rowCount()-1, 1);
120 item->setTextAlignment( Qt::AlignCenter );
121 gridsCount = dataProxy->getFieldInBand (selectedField, "ALL", true, modeInUse, _log);
122 tableWidget->setItem(tableWidget->rowCount()-1, 2, new QTableWidgetItem(QString::number(gridsCount)) );
123 item = tableWidget->item (tableWidget->rowCount()-1, 2);
124 item->setTextAlignment( Qt::AlignCenter );
125 }
126
slotConfirmedClicked()127 void StatsFieldPerBandWidget::slotConfirmedClicked()
128 {
129 prepareChart(log);
130 }
131
slotModeComboBoxChanged()132 void StatsFieldPerBandWidget::slotModeComboBoxChanged()
133 {
134 //qDebug() << Q_FUNC_INFO << ": " << modeComboBox->currentText() << "/" << QString::number(modeComboBox->currentIndex ());
135 if (modeComboBox->currentIndex ()==0)
136 {
137 modeInUse = "ALL";
138 }
139 else
140 {
141 modeInUse = modeComboBox->currentText ();
142 }
143
144 prepareChart (log);
145 }
146