1 /***************************************************************************
2 setuppagesats.cpp - description
3 -------------------
4 begin : dec 2018
5 copyright : (C) 2018 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
27 //#include <QDebug>
28
29 #include "setuppages/setuppagesats.h"
30
SetupPageSats(DataProxy_SQLite * dp,QWidget * parent)31 SetupPageSats::SetupPageSats(DataProxy_SQLite *dp, QWidget *parent) : QWidget(parent){
32 //qDebug() << "SetupPageSats::SetupPageSats" << QT_ENDL;
33 dataProxy = dp;
34 arrild = QString();
35 satname = QString();
36 uplink = QString();
37 downlink = QString();
38 modes = QString();
39 newSat = new SetupPageSatsNew(dataProxy, this);
40
41 util = new Utilities;
42
43 selectedSat = -1;
44 //defaultStationCallSign.clear();
45
46 //setupD = new SetupDialog();
47
48 currentSats = new QComboBox();
49 satsAvailable.clear();
50
51 //newSat = new SetupPageSatsNew(dataProxy);
52 satsModel = new QSqlRelationalTableModel(this);
53 satsView = new QTableView;
54 satsView->setContextMenuPolicy(Qt::CustomContextMenu);
55 satsView->setSortingEnabled(true);
56
57 createSatsModel();
58 createSatsPanel();
59
60 satsView->setCurrentIndex(satsModel->index(0, 0));
61
62 lastSat = 0;
63
64 newSatPushButton = new QPushButton(tr("&New"), this);
65 editPushButton = new QPushButton(tr("&Edit"), this);
66 removePushButton = new QPushButton(tr("&Remove"), this);
67 importPushButton = new QPushButton(tr("&Import"), this);
68 exportPushButton = new QPushButton(tr("E&xport"), this);
69
70 newSatPushButton->setToolTip(tr("Add a new satellite."));
71 editPushButton->setToolTip(tr("Edit the selected satellite."));
72 removePushButton->setToolTip(tr("Remove the selected satellite."));
73 importPushButton->setToolTip(tr("Import a satellites file. It will replace the satellites you have in the current list."));
74 exportPushButton->setToolTip(tr("Export your current satellites to a file."));
75
76 currentSats->setToolTip(tr("Select the sat you want to open."));
77
78 QHBoxLayout *buttonsLayout = new QHBoxLayout;
79 buttonsLayout->addWidget(importPushButton);
80 buttonsLayout->addWidget(exportPushButton);
81 buttonsLayout->addWidget(newSatPushButton);
82 buttonsLayout->addWidget(editPushButton);
83 buttonsLayout->addWidget(removePushButton);
84
85 QVBoxLayout *widgetLayout = new QVBoxLayout;
86 widgetLayout->addWidget(satsView);
87 widgetLayout->addWidget(currentSats);
88 widgetLayout->addLayout(buttonsLayout);
89 //widgetLayout->addLayout(SatDataLayout);
90
91
92 setLayout(widgetLayout);
93
94
95
96 //connect(newSatPushButton, SIGNAL(clicked ( )), this, SLOT(slotNewButtonClicked() ) );
97 //QObject::connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(slotDownloadFinished(QNetworkReply*)));
98 //connect(setupD, SIGNAL(newSatRequested(true)), this, slotNewButtonClicked() )
99
100
101 createActions();
102 updateSelectedSats();
103
104
105 //qDebug() << "SetupPageSats::SetupPageSats - END" << QT_ENDL;
106 }
107
~SetupPageSats()108 SetupPageSats::~SetupPageSats(){
109 //qDebug() << "SetupPageSats::~SetupPageSats" << QT_ENDL;
110 }
111
112
createNewSat()113 void SetupPageSats::createNewSat()
114 {
115 //qDebug() << "SetupPageSats::createNewSat" << QT_ENDL;
116 selectedSat = -1;
117 //newSat->clear();
118 newSat->setEditing(false);
119 newSat->exec();
120 }
121
slotNewButtonClicked()122 void SetupPageSats::slotNewButtonClicked()
123 {
124 //qDebug() << "SetupPageSats::slotNewButtonClicked" << QT_ENDL;
125
126 createNewSat();
127 }
128
slotEditButtonClicked()129 void SetupPageSats::slotEditButtonClicked()
130 {
131 //qDebug() << "SetupPageSats::slotEditButtonClicked" << QT_ENDL;
132 //QSqlQuery query;
133 //int nameCol = -1;
134
135 selectedSat = getSelectedSat();
136 QString shortName = dataProxy->getSateliteArrlIdFromId(selectedSat);
137
138 newSat->clear();
139 newSat->setEditing(true);
140 newSat->setShortName(shortName);
141 newSat->setName(dataProxy->getSatelliteName(shortName));
142 newSat->setUpLink(dataProxy->getSatelliteFullUplink(shortName));
143 newSat->setDownLink(dataProxy->getSatelliteFullDownlink(shortName));
144 newSat->setModes(dataProxy->getSatelliteFullMode(shortName));
145 newSat->exec();
146 //newSat->setStationCallSign(dataProxy->getStationCallSignFromSat(selectedSat));
147 //newSat->setOperators(dataProxy->getOperatorsFromSat(selectedSat));
148 //newSat->setComment(dataProxy->getCommentsFromSat(selectedSat));
149 //newSat->setDateString(dataProxy->getSatDateFromSat(selectedSat));
150 //newSat->setTypeN(dataProxy->getSatTypeNFromSat(selectedSat).toInt());
151
152 /*
153 //qDebug() << "SetupPageSats::slotEditButtonClicked-1 (selectedlog: " << QString::number(selectedLog) << ")" << QT_ENDL;
154 QString stringQuery = QString("SELECT * FROM logs WHERE id='%1'").arg(selectedLog);
155 //qDebug() << "SetupPageSats::slotEditButtonClicked -2" << QT_ENDL;
156
157 bool sqlOk = query.exec(stringQuery);
158 QSqlRecord rec = query.record();
159 if (sqlOk)
160 {
161 //qDebug() << "SetupPageSats::slotEditButtonClicked Query OK" << QT_ENDL;
162 QSqlRecord rec = query.record();
163 if ( (query.next()) && (query.isValid()) )
164 {//id/
165 /stationcall/comment/logtype/logtypeid
166 //qDebug() << "SetupPageSats::slotEditButtonClicked Query Valid" << QT_ENDL;
167
168
169
170 //nameCol = rec.indexOf("stationcall");
171 //newLog->setStationCallSign((query.value(nameCol)).toString());
172 //nameCol = rec.indexOf("operators");
173 //newLog->setOperators((query.value(nameCol)).toString());
174
175
176
177
178 //nameCol = rec.indexOf("comment");
179 //newLog->setComment((query.value(nameCol)).toString());
180
181 //nameCol = rec.indexOf("logdate");
182 //newLog->setDateString((query.value(nameCol)).toString());
183
184 //nameCol = rec.indexOf("logtypen");
185 //qDebug() << "SetupPageSats::slotEditButtonClicked -3" << QT_ENDL;
186 //newLog->setTypeN((query.value(nameCol)).toInt());
187
188 newLog->exec();
189 }
190
191 }
192 else
193 {
194 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
195 }
196 */
197 }
198
199 /*
200 void SetupPageSats::slotSatsCancelled(const bool _q)
201 {
202 selectedSat = -1;
203 }
204 */
205
slotRemoveButtonClicked()206 void SetupPageSats::slotRemoveButtonClicked()
207 {
208 //qDebug() << "SetupPageSats::slotRemoveButtonClicked" << QT_ENDL;
209 int selectedSat = getSelectedSat();
210
211 QMessageBox::StandardButton ret;
212 ret = QMessageBox::warning(this, tr("KLog"),
213 tr("Do you really want to remove this satellite?") + "\n" +
214 tr("This satellite will no be longer available to be selected ..."),
215 QMessageBox::Yes | QMessageBox::No);
216 if (ret == QMessageBox::Yes)
217 {
218
219 QString stringQuery = QString("DELETE FROM satellites WHERE id='%1'").arg(selectedSat);
220 QSqlQuery query(stringQuery);
221
222 bool sqlOk = query.exec();
223 if (sqlOk)
224 {
225
226 satsModel->select();
227 updateSelectedSats();
228 stringQuery = QString("DELETE FROM log WHERE lognumber='%1'").arg(selectedSat);
229 query.exec(stringQuery);
230 sqlOk = query.exec();
231 //qDebug() << "SetupPageSats::slotRemoveButtonClicked: LastQuery: " << query.lastQuery() << QT_ENDL;
232 if (sqlOk)
233 {
234
235 stringQuery = QString("DELETE FROM awarddxcc WHERE lognumber='%2'").arg(selectedSat);
236 query.exec(stringQuery);
237 sqlOk = query.exec();
238 //qDebug() << "SetupPageSats::slotRemoveButtonClicked: LastQuery: " << query.lastQuery() << QT_ENDL;
239 if (sqlOk)
240 {
241 //qDebug() << "SetupPageSats::slotRemoveButtonClicked (AWARDDXCC REMOVED: " << QString::number(selectedSat) << ")" << QT_ENDL;
242 }
243 else
244 {
245 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
246 showError(tr("Sat has not been removed. (#3)"));
247 //qDebug() << "SetupPageSats::slotRemoveButtonClicked (AWARDDXCC NOT REMOVED: " << QString::number(selectedSat) << ")" << QT_ENDL;
248 }
249
250 }
251 else
252 {
253 showError(tr("Sat has not been removed. (#2)"));
254 //qDebug() << "SetupPageSats::slotRemoveButtonClicked (QSOS NOT REMOVED: " << QString::number(selectedSat) << ")" << QT_ENDL;
255 }
256 }
257 else
258 {
259 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
260 showError(tr("Sat has not been removed. (#1)"));
261 //qDebug() << "SetupPageSats::slotRemoveButtonClicked (NOT REMOVED: " << QString::number(selectedSat) << ")" << QT_ENDL;
262 }
263 }
264
265 //ASK FOR A CONFIRMATION
266
267 //DELETE ALL THE QSO IN THE REMOVED Sat
268
269 }
270
createSatsPanel()271 void SetupPageSats::createSatsPanel()
272 {
273 //qDebug() << "SetupPageSats::createSatsPanel" << QT_ENDL;
274 satsView->setModel(satsModel);
275 QString stringQuery = QString("SELECT * FROM satellites");
276 QSqlQuery query(stringQuery);
277 QSqlRecord rec = query.record(); // Number of columns
278 int columns = rec.count();
279
280 for (int i = 0; i < columns; i++ ){
281 satsView->setColumnHidden(i, true);
282 }
283
284 columns = rec.indexOf("id");
285 satsView->setColumnHidden(columns, false);
286 columns = rec.indexOf("satarrlid");
287 satsView->setColumnHidden(columns, false);
288 columns = rec.indexOf("satname");
289 satsView->setColumnHidden(columns, false);
290 columns = rec.indexOf("uplink");
291 satsView->setColumnHidden(columns, false);
292 columns = rec.indexOf("downlink");
293 satsView->setColumnHidden(columns, false);
294 columns = rec.indexOf("satmode");
295 satsView->setColumnHidden(columns, false);
296
297 satsView->setItemDelegate(new QSqlRelationalDelegate(this));
298 satsView->setSelectionMode( QAbstractItemView::SingleSelection);
299 satsView->setSelectionBehavior(QAbstractItemView::SelectRows);
300 satsView->resizeColumnsToContents();
301 satsView->horizontalHeader()->setStretchLastSection(true);
302
303 }
304
createSatsModel()305 void SetupPageSats::createSatsModel()
306 {
307 //qDebug() << "SetupPageSats::createsatsModel" << QT_ENDL;
308
309 QString stringQuery = QString("SELECT * FROM satellites");
310 QSqlQuery q(stringQuery);
311 QSqlRecord rec = q.record();
312
313 int nameCol;
314
315 //satsModel = new QSqlRelationalTableModel(this);
316 satsModel->setTable("satellites");
317
318 nameCol = rec.indexOf("id");
319 satsModel->setSort(nameCol, Qt::AscendingOrder);
320 satsModel->setHeaderData(nameCol, Qt::Horizontal, tr("ID"));
321
322 nameCol = rec.indexOf("satarrlid");
323 satsModel->setHeaderData(nameCol, Qt::Horizontal, tr("Short"));
324
325 nameCol = rec.indexOf("satname");
326 satsModel->setHeaderData(nameCol, Qt::Horizontal, tr("Name"));
327
328 nameCol = rec.indexOf("uplink");
329 satsModel->setHeaderData(nameCol, Qt::Horizontal, tr("Uplink"));
330
331 nameCol = rec.indexOf("downlink");
332 satsModel->setHeaderData(nameCol, Qt::Horizontal, tr("Downlink"));
333
334 nameCol = rec.indexOf("satmode");
335 satsModel->setHeaderData(nameCol, Qt::Horizontal, tr("Modes"));
336
337 satsModel->select();
338 }
339
slotSatselected(const QModelIndex & index)340 void SetupPageSats::slotSatselected(const QModelIndex & index)
341 {
342 //qDebug() << "SetupPageSats::slotSatselected" << QT_ENDL;
343 int row = index.row();
344 setSelectedSat((satsModel->index(row, 0)).data(0).toInt());
345
346 }
347
slotSatDoubleClicked(const QModelIndex & index)348 void SetupPageSats::slotSatDoubleClicked(const QModelIndex & index)
349 {
350 //qDebug() << "SetupPageSats::slotSatDoubleClicked" << QT_ENDL;
351
352 int row = index.row();
353 setSelectedSat((satsModel->index(row, 0)).data(0).toInt());
354 slotEditButtonClicked();
355
356 }
slotAnalyzeNewSatData(const QStringList _qs)357 void SetupPageSats::slotAnalyzeNewSatData(const QStringList _qs)
358 {
359 updateSelectedSats();
360 }
361
createActions()362 void SetupPageSats::createActions()
363 {
364 //qDebug() << "SetupPageSats::createActions" << QT_ENDL;
365 connect(importPushButton, SIGNAL(clicked()), this, SLOT(slotImportButtonClicked() ) );
366 connect(exportPushButton, SIGNAL(clicked()), this, SLOT(slotExportButtonClicked() ) );
367 connect(newSatPushButton, SIGNAL(clicked()), this, SLOT(slotNewButtonClicked() ) );
368 connect(removePushButton, SIGNAL(clicked()), this, SLOT(slotRemoveButtonClicked() ) );
369 connect(editPushButton, SIGNAL(clicked()), this, SLOT(slotEditButtonClicked() ) );
370 connect(newSat, SIGNAL(newSatData(QStringList)), this, SLOT(slotAnalyzeNewSatData(QStringList) ) );
371 connect(satsView, SIGNAL(clicked(QModelIndex)), this, SLOT(slotSatselected(QModelIndex) ) );
372 connect(satsView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(slotSatDoubleClicked(QModelIndex) ) );
373 //connect(SatView, SIGNAL(doubleClicked ( const QModelIndex& ) ), this, SLOT(slotDoubleClickSat( const QModelIndex& ) ) );
374
375 //loadAllPushButton->setToolTip(tr("Load all the Sats"));
376 //loadSelectedPushButton->setToolTip(tr("Load only the selected Sat"));
377 //clearPushButton->setToolTip(tr("Clear selection"));
378
379 }
380
381 /*
382 bool SetupPageSats::addNewSat(const QStringList _qs)
383 {
384 //qDebug() << "SetupPageSats::addNewSat: " << _qs.at(2) << QT_ENDL;
385 QString aux = QString();
386 int nameCol = -1;
387
388 QString _dateString = _qs.at(0);
389 QString _stationCallsign = _qs.at(1);
390 QString _typeContest = _qs.at(2);
391 QString _comment = _qs.at(3);
392 QString _typeContestN = _qs.at(4);
393
394
395 QString queryString = QString("SELECT * FROM logs WHERE logdate='%1' AND stationcall='%2' AND logtype='%3' AND logtypen='%4'").arg(_dateString).arg(_stationCallsign).arg(_typeContest).arg(_typeContestN);
396 //"logs"
397 //"id, logdate, stationcall, comment, logtype"
398 //qDebug() << "SetupPageSats::addNewLog query1: " << queryString << QT_ENDL;
399 QSqlQuery query;
400
401 bool sqlOK = query.exec(queryString);
402 QSqlRecord rec = query.record(); // Number of columns
403
404 while ( (query.next()) && (query.isValid()) )
405 {
406 nameCol = rec.indexOf("id");
407 aux = (query.value(nameCol)).toString();
408 //qDebug() << "SetupPageSats::addNewLog: id = " << aux << QT_ENDL;
409 return false;
410 }
411 queryString = QString("INSERT INTO logs (logdate, stationcall, comment, logtype, logtypen) values('%1','%2','%3','%4', '%5')").arg(_dateString).arg(_stationCallsign).arg(_comment).arg(_typeContest).arg(_typeContestN);
412
413 //qDebug() << "SetupPageSats::addNewSat query1: " << queryString << QT_ENDL;
414 sqlOK = query.exec(queryString);
415 if (sqlOK)
416 {
417 //qDebug() << "SetupPageSats::addNewSat ADDED! id = " << QT_ENDL;
418 satsModel->select();
419 updateSelectedSats();
420 return true;
421 }
422 else
423 {
424 return false;
425 }
426 return false;
427 }
428 */
429
updateSelectedSats()430 void SetupPageSats::updateSelectedSats()
431 {
432 //qDebug() << "SetupPageSats::updateSelectedSats" << QT_ENDL;
433 satsAvailable = readSats();
434 satsModel->select();
435
436 if (satsAvailable.length()>0)
437 {
438 currentSats->clear();
439 currentSats->addItems(satsAvailable);
440 }
441 else
442 {
443 //qDebug() << "SetupPageSats::updateSelectedSats Not selected (less than 1)" << QT_ENDL;
444 currentSats->clear();
445 }
446 }
447
readSats()448 QStringList SetupPageSats::readSats()
449 {
450 //qDebug() << "SetupPageSats::readSats" << QT_ENDL;
451
452 QString aux, aux2;
453 QStringList _sats;
454 QSqlQuery query;
455 int nameCol = -1;
456 bool sqlOk = false;
457 //QDate date = QDate::currentDate();
458 aux2.clear();
459 aux.clear();
460 _sats.clear();
461
462
463 aux = "SELECT id, satarrlid, satname, uplink, downlink, satmode FROM satellites";
464
465 sqlOk = query.exec(aux);
466 if (sqlOk)
467 {
468 QSqlRecord rec = query.record();
469
470 while ( (query.next()) && (query.isValid()) )
471 {
472 aux2.clear();
473
474 nameCol = rec.indexOf("id");
475 aux2 = (query.value(nameCol)).toString();
476
477 nameCol = rec.indexOf("satarrlid");
478 aux2 = aux2.append("-");
479 aux2.append((query.value(nameCol)).toString());
480
481 nameCol = rec.indexOf("satname");
482 aux2 = aux2.append("-");
483 aux2.append((query.value(nameCol)).toString());
484
485 nameCol = rec.indexOf("uplink");
486 aux2 = aux2.append("-");
487 aux2.append((query.value(nameCol)).toString());
488
489 nameCol = rec.indexOf("downlink");
490 aux2 = aux2.append("-");
491 aux2.append((query.value(nameCol)).toString());
492
493 nameCol = rec.indexOf("satmode");
494 aux2 = aux2.append("-");
495 aux2.append((query.value(nameCol)).toString());
496
497 _sats.append(aux2);
498
499 }
500 return _sats;
501 }
502 else
503 {
504 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
505 return _sats;
506 }
507
508
509 //_sats.clear();
510 //qDebug() << "SetupPageSats::readSats: " << QString::number(_sats.size())<< QT_ENDL;
511
512 //return _sats;
513 }
514
getSelectedSat()515 int SetupPageSats::getSelectedSat()
516 {
517 //qDebug() << "SetupPageSats::getSelectedSat: " << currentSats->currentText() << QT_ENDL;
518 QString selectedSat = currentSats->currentText();
519 int i = 0;
520 QStringList qs;
521 qs.clear();
522 qs << selectedSat.split("-");
523 i = (qs.at(0)).toInt();
524 if (i>=1)
525 {
526 return i;
527 }
528 else
529 {
530 return 0;
531 }
532 //return 0;
533 }
534
setSelectedSat(const int _i)535 void SetupPageSats::setSelectedSat(const int _i)
536 {
537 //qDebug() << "SetupPageSats::SetupPageSats::setSelectedSat: " << QString::number(_i) << QT_ENDL;
538
539 QString n = QString::number(_i) + "-";
540 int selected = currentSats->findText(n, Qt::MatchStartsWith);
541 if (selected >= 0)
542 {
543 //qDebug() << "SetupPageSats::SetupPageSats::setSelectedSat selected>0: " << QString::number(selected) << QT_ENDL;
544 currentSats->setCurrentIndex(selected);
545 }
546 else
547 {
548 //qDebug() << "SetupPageSats::SetupPageSats::setSelectedSat not selected" << QT_ENDL;
549 return;
550 }
551 }
552
553 //void SetupPageSats::readSelectedSat(const int _i)
554 //{
555
556 //}
557
showError(const QString & _errorC)558 void SetupPageSats::showError(const QString &_errorC)
559 {
560 QString text = QString(tr("An error has occurred showing the following error code:") + "\n'%1'").arg(_errorC);
561
562
563 QMessageBox::warning(this, tr("KLog - SetupPageSats"),
564 text,
565 QMessageBox::Ok);
566
567 }
568
slotImportButtonClicked()569 void SetupPageSats::slotImportButtonClicked()
570 {
571 //qDebug() << "SetupPageSats::slotImportButtonClicked" << QT_ENDL;
572
573 QString fileName = QFileDialog::getOpenFileName(this, tr("Open Satellites File"),
574 util->getHomeDir(),
575 "SATS (*.dat)");
576 if (fileName.isNull())
577 {
578 return;
579 }
580
581 UpdateSatsData *updateSat = new UpdateSatsData(dataProxy, this);
582 if (updateSat->satDataFileRead(fileName))
583 {
584
585 //qDebug() << "SetupPageSats::slotImportButtonClicked IMPORTED OK" << QT_ENDL;
586 }
587 else
588 {
589 //qDebug() << "SetupPageSats::slotImportButtonClicked IMPORTED NOK" << QT_ENDL;
590 QMessageBox msgBox;
591 msgBox.setIcon(QMessageBox::Warning);
592 msgBox.setWindowTitle(tr("KLog warning"));
593 QString aux = QString();
594 aux = tr("An unexpected error ocurred while importing the satellite data.\n\nIt may be caused because the file you are trying to import does not have the right format.");
595 //msgBox.setText(aux + "MW-1#" + QString::number(errorCode));
596 msgBox.setText(aux);
597 msgBox.setDetailedText(tr("Please check the format or contact the developer for analysis with the error code: ") + "SetupPageSats error #1");
598 msgBox.setStandardButtons(QMessageBox::Ok);
599 msgBox.setDefaultButton(QMessageBox::Ok);
600 int ret = msgBox.exec();
601 switch (ret)
602 {
603 case QMessageBox::Ok:
604 break;
605 default:
606 // should never be reached
607 break;
608 }
609
610 }
611 satsModel->select();
612 updateSelectedSats();
613
614 }
615
slotExportButtonClicked()616 void SetupPageSats::slotExportButtonClicked()
617 {
618 //qDebug() << "SetupPageSats::slotExportButtonClicked" << QT_ENDL;
619
620 int nameCol = -1;
621 QString queryString, aux;
622 QSqlQuery query;
623
624 int satsN = -1;
625
626 bool sqlOk = false;
627 aux.clear();
628 queryString = "SELECT COUNT (*) from satellites";
629 sqlOk = query.exec(queryString);
630 if (sqlOk)
631 {
632 if (query.next())
633 {
634 if (query.isValid())
635 {
636 satsN = (query.value(0)).toInt();
637 //qDebug() << "SetupPageSats::slotExportButtonClicked: Sats: " << QString::number(satsN) << QT_ENDL;
638 }
639 else
640 {
641 return;
642 }
643 }
644 else
645 {
646 return;
647 }
648
649 }
650 else
651 {
652 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
653
654 }
655 QDateTime *dateTime = new QDateTime();
656 //dateTime->currentDateTime();
657
658 queryString = "SELECT id, satarrlid, satname, uplink, downlink, satmode FROM satellites";
659 sqlOk = query.exec(queryString);
660
661 if (sqlOk)
662 {
663
664 QString fileName = QFileDialog::getSaveFileName(this, tr("Save Satellites File"),
665 util->getHomeDir(),
666 "SATS (*.dat)");
667
668 QFile file(fileName);
669 if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) /* Flawfinder: ignore */
670 return ;
671 QTextStream out(&file);
672
673 out << "<app_klog_data:4>SATS" << QT_ENDL;
674 out << "<app_klog_sats_references:" << QString::number((QString::number(satsN)).length()) << ">" << QString::number(satsN) << QT_ENDL;
675 out << "<app_klog_sats_version:8>" << (dateTime->currentDateTime().date()).toString("yyyyMMdd");
676 out << "<EOH>" << QT_ENDL;
677 QSqlRecord rec = query.record();
678
679 while ( (query.next()) && (query.isValid()) )
680 {
681 nameCol = rec.indexOf("satarrlid");
682 aux = (query.value(nameCol)).toString();
683 QString satText = "<app_klog_sats_arrlid:" + QString::number(aux.length()) + ">" + aux + " ";
684
685 nameCol = rec.indexOf("satname");
686 aux = (query.value(nameCol)).toString();
687 satText = satText + "<app_klog_sats_name:" + QString::number(aux.length()) + ">" + aux + " ";
688
689 nameCol = rec.indexOf("uplink");
690 aux = (query.value(nameCol)).toString();
691 satText = satText + "<app_klog_sats_uplink:" + QString::number(aux.length()) + ">" + aux + " ";
692
693 nameCol = rec.indexOf("downlink");
694 aux = (query.value(nameCol)).toString();
695 satText = satText + "<app_klog_sats_downlink:" + QString::number(aux.length()) + ">" + aux + " ";
696
697 nameCol = rec.indexOf("satmode");
698 aux = (query.value(nameCol)).toString();
699 satText = satText + "<app_klog_sats_mode:" + QString::number(aux.length()) + ">" + aux + " " + "<eor>";
700
701 out << satText << QT_ENDL;
702 //satText.clear();
703 }
704
705 }
706 else
707 {
708 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
709 }
710
711 //qDebug() << "SetupPageSats::slotExportButtonClicked END" << QT_ENDL;
712 }
713