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