1 #include "awards.h"
2 /***************************************************************************
3 awards.cpp - description
4 -------------------
5 begin : nov 2011
6 copyright : (C) 2011 by Jaime Robles
7 email : jaime@robles.es
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
Awards(DataProxy_SQLite * dp,const QString & _parentFunction)29 Awards::Awards(DataProxy_SQLite *dp, const QString &_parentFunction)
30 {
31 //qDebug() << "Awards::Awards- from: " << _parentFunction << QT_ENDL;
32 dataProxy = dp;
33 //QSqlDatabase db = QSqlDatabase::database("QSQLITE");
34 world = new World(dataProxy, Q_FUNC_INFO);
35
36 //qDebug() << "Awards::Awards - Before DXMarathon" << QT_ENDL;
37 dxMarathon = new DXMarathon(dataProxy);
38 //qDebug() << "Awards::Awards - After DXMarathon" << QT_ENDL;
39 util = new Utilities();
40 //world->create();
41 /*
42 newOneColor.setNamedColor("#ff0000");
43 neededColor.setNamedColor("#ff8c00");
44 workedColor.setNamedColor("#ffd700");
45 confirmedColor.setNamedColor("#32cd32");
46 defaultColor.setNamedColor("#00bfff");
47 */
48 //"Awards::setColors: " << _newOne << "/" << _needed << "/" << _worked << "/" << _confirmed << "/" << _default << QT_ENDL;
49 //Awards::setColors: "#ff0000" / "#ff8c00" / "#ffd700" / "#32cd32" / "#00bfff"
50
51 newOneColor = Qt::black;
52 neededColor = Qt::black;
53 workedColor = Qt::black;
54 confirmedColor = Qt::black;
55 defaultColor = Qt::black;
56
57 dxccWorked.clear();
58 dxccConfirmed.clear();
59 wazWorked.clear();
60 wazConfirmed.clear();
61 manageModes = false;
62 //qDebug() << "Awards::Awards - END" << QT_ENDL;
63 }
64
~Awards()65 Awards::~Awards() {}
66
setAwardDXCC(const int _qsoId)67 void Awards::setAwardDXCC(const int _qsoId)
68 {
69 //qDebug() << "Awards::setAwardDXCC: _qsoId: " << QString::number(_qsoId) << QT_ENDL;
70 dataProxy->setDXCCAwardStatus(_qsoId);
71 }
72
setAwardWAZ(const int _qsoId)73 void Awards::setAwardWAZ(const int _qsoId)
74 {
75 //qDebug() << "Awards::setAwardWAZ: _qsoId: " << QString::number(_qsoId) << QT_ENDL;
76 dataProxy->setWAZAwardStatus(_qsoId);
77 }
78
getQSOofAward(const int _enti,const int _bandid,const int _log,const bool _confirmed)79 QString Awards::getQSOofAward (const int _enti, const int _bandid, const int _log, const bool _confirmed)
80 {// Returns the QRZ that granted that status in the DXCC
81 //qDebug() << "Awards::getQSOofAward: " << QString::number(_enti) << "/" << QString::number(_bandid) << QT_ENDL;
82 QSqlQuery query;
83 QString stringQuery = QString();
84 bool sqlOK = false;
85 QString answer = QString();
86
87 if (_confirmed)
88 {
89 stringQuery = QString("SELECT call, qso_date from log where dxcc='%1' AND bandid='%2' AND lognumber='%3' AND (qsl_rcvd='Y' OR lotw_qsl_rcvd='Y')").arg(_enti).arg(_bandid).arg(_log);
90 }
91 else
92 {
93 stringQuery = QString("SELECT call, qso_date from log where dxcc='%1' AND bandid='%2' AND lognumber='%3'").arg(_enti).arg(_bandid).arg(_log);
94 }
95
96
97 sqlOK = query.exec(stringQuery);
98 //qDebug() << "Awards::getQSOofAward: stringQuery: " << stringQuery << QT_ENDL;
99 if (sqlOK)
100 {
101 query.next();
102 if (query.isValid())
103 {
104 answer = query.value(0).toString() + " / " + query.value(1).toString() ;
105
106 query.finish();
107 //qDebug() << "Awards::getQSOofAward: answer: " << answer << QT_ENDL;
108 return answer;
109 }
110 else
111 {
112 query.finish();
113 //qDebug() << "Awards::getQSOofAward: 0" << QT_ENDL;
114 return QString();
115 }
116 }
117 else
118 {
119 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
120 query.finish();
121 //qDebug() << "Awards::getQSOofAward: Query error" << QT_ENDL;
122 return QString();
123 }
124
125 }
126
getQSOIdofAward(const int _enti,const int _bandid,const int _log,const bool _confirmed)127 int Awards::getQSOIdofAward (const int _enti, const int _bandid, const int _log, const bool _confirmed)
128 {// Returns the QSOid that granted that status in the DXCC
129 //qDebug() << "Awards::getQSOIdofAward: " << QString::number(_enti) << "/" << QString::number(_bandid) << QT_ENDL;
130 QSqlQuery query;
131 QString stringQuery = QString();
132 bool sqlOK = false;
133 int answer = -1;
134
135 //stringQuery = QString("SELECT qsoid from awarddxcc where dxcc='%1' and band='%2'").arg(_enti).arg(_bandid);
136
137
138 if (_confirmed)
139 {
140 stringQuery = QString("SELECT id from log where dxcc='%1' AND bandid='%2' AND lognumber='%3' AND (qsl_rcvd='Y' OR lotw_qsl_rcvd='Y')").arg(_enti).arg(_bandid).arg(_log);
141 }
142 else
143 {
144 stringQuery = QString("SELECT id from log where dxcc='%1' AND bandid='%2' AND lognumber='%3'").arg(_enti).arg(_bandid).arg(_log);
145 }
146
147 sqlOK = query.exec(stringQuery);
148 //qDebug() << "Awards::getQSOIdofAward: stringQuery: " << stringQuery << QT_ENDL;
149 if (sqlOK)
150 {
151 query.next();
152 if (query.isValid())
153 {
154 answer = query.value(0).toInt();
155 //qDebug() << "Awards::getQSOIdofAward: answer: " << QString::number(answer) << QT_ENDL;
156 query.finish();
157 if (answer>=1)
158 {
159 return answer;
160 }
161 else
162 {
163 return -1;
164 }
165
166 }
167 else
168 {
169 query.finish();
170 //qDebug() << "Awards::getQSOIdofAward: 0" << QT_ENDL;
171 return -2;
172 }
173 }
174 else
175 {
176 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
177 query.finish();
178 //qDebug() << "Awards::getQSOIdofAward: Query error" << QT_ENDL;
179 return -3;
180 }
181
182 }
183
getDXCCWorked(const int _logNumber)184 int Awards::getDXCCWorked(const int _logNumber)
185 {
186 //qDebug() << "Awards::getDXCCWorked (logNumber): " << QString::number(_logNumber) << QT_ENDL;
187 QSqlQuery query;
188 QString stringQuery;
189 bool sqlOK;
190
191 if (dataProxy->doesThisLogExist(_logNumber))
192 {
193 stringQuery = QString("SELECT COUNT (DISTINCT dxcc) FROM log WHERE dxcc>'0' AND dxcc < '1000' AND lognumber='%1'").arg(_logNumber);
194 }
195 else
196 {
197 stringQuery = QString("SELECT COUNT (DISTINCT dxcc) FROM log WHERE dxcc>'0' AND dxcc < '1000' ");
198 }
199
200
201 sqlOK = query.exec(stringQuery);
202 //qDebug() << "Awards::getDXCCWorked: stringQuery: " << stringQuery << QT_ENDL;
203 if (sqlOK)
204 {
205 query.next();
206 if (query.isValid())
207 {
208 int v = (query.value(0)).toInt();
209 query.finish();
210 //qDebug() << "Awards::getDXCCWorked: " << QString::number((query.value(0)).toInt()) << QT_ENDL;
211 return v;
212 }
213 else
214 {
215 //qDebug() << "Awards::getDXCCWorked: 0" << QT_ENDL;
216 return 0;
217 }
218 }
219 else
220 {
221 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
222 query.finish();
223 //qDebug() << "Awards::getDXCCWorked: Query error" << QT_ENDL;
224 return 0;
225 }
226 }
227
getDXCCConfirmed(const int _logNumber)228 int Awards::getDXCCConfirmed(const int _logNumber)
229 {
230 //qDebug() << "Awards::getDXCCConfirmed (logNumber): " << QString::number(_logNumber) << QT_ENDL;
231
232 return dataProxy->getFieldInBand (DXCC, "ALL", true, "ALL", _logNumber);
233 /*
234 QSqlQuery query;
235 QString stringQuery;
236 bool sqlOK;
237 if (dataProxy->doesThisLogExist(_logNumber))
238 {
239 stringQuery = QString("SELECT COUNT (DISTINCT dxcc) FROM log where (qsl_rcvd='Y' OR lotw_qsl_rcvd='Y') AND dxcc!='' AND dxcc >'0' AND dxcc < '1000' AND lognumber='%1'").arg(_logNumber);
240 }
241 else
242 {
243 stringQuery = QString("SELECT COUNT (DISTINCT dxcc) FROM log where (qsl_rcvd='Y' OR lotw_qsl_rcvd='Y') AND dxcc!='' AND dxcc >'0' AND dxcc < '1000' ");
244 }
245
246 sqlOK = query.exec(stringQuery);
247 //qDebug() << "Awards::getDXCCWorked: stringQuery: " << stringQuery << QT_ENDL;
248
249 if (sqlOK)
250 {
251 query.next();
252 if (query.isValid())
253 {
254 //qDebug() << "Awards::getDXCCConfirmed: " << QString::number((query.value(0)).toInt()) << QT_ENDL;
255 int v = (query.value(0)).toInt();
256 query.finish();
257 return v;
258 }
259 else
260 {
261 //qDebug() << "Awards::getDXCCConfirmed: 0" << QT_ENDL;
262 return 0;
263 }
264
265 }
266 else
267 {
268 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
269 query.finish();
270 //qDebug() << "Awards::getDXCCConfirmed: query error" << QT_ENDL;
271 return 0;
272 }
273
274 */
275 }
276
getWAZWorked(const int _logNumber)277 int Awards::getWAZWorked(const int _logNumber)
278 {
279 //qDebug() << "Awards::getWAZWorked (logNumber): " << QString::number(_logNumber) << QT_ENDL;
280 QSqlQuery query;
281 QString stringQuery;
282 if (dataProxy->doesThisLogExist(_logNumber))
283 {
284 stringQuery = QString("SELECT COUNT (cqz) FROM (SELECT DISTINCT cqz FROM log WHERE cqz!='' AND cqz>'0' AND cqz<'41' AND lognumber='%1')").arg(_logNumber);
285 }
286 else
287 {
288 stringQuery = QString("SELECT COUNT (cqz) FROM (SELECT DISTINCT cqz FROM log WHERE cqz!='' AND cqz>'0' AND cqz<'41')");
289 }
290
291 bool sqlOK = query.exec(stringQuery);
292 if (sqlOK)
293 {
294 query.next();
295 if (query.isValid())
296 {
297 int v = (query.value(0)).toInt();
298 query.finish();
299 return v;
300 }
301 else
302 {
303 return 0;
304 }
305 }
306 else
307 {
308 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
309 query.finish();
310 return 0;
311 }
312
313
314 }
315
getWAZConfirmed(const int _logNumber)316 int Awards::getWAZConfirmed(const int _logNumber)
317 {
318 //qDebug() << "Awards::getWAZConfirmed (logNumber): " << QString::number(_logNumber) << QT_ENDL;
319
320 QSqlQuery query;
321 QString stringQuery;
322 //Usar la siguiente para el confirmed
323 if (dataProxy->doesThisLogExist(_logNumber))
324 {
325 stringQuery = QString("SELECT COUNT (cqz) FROM (SELECT DISTINCT cqz FROM log WHERE cqz!='' AND cqz>'0' AND cqz<'41' AND (qsl_rcvd='Y' OR lotw_qsl_rcvd='Y') AND lognumber='%1')").arg(_logNumber);
326 }
327 else
328 {
329 stringQuery = QString("SELECT COUNT (cqz) FROM (SELECT DISTINCT cqz FROM log WHERE cqz!='' AND cqz>'0' AND cqz<'41' AND (qsl_rcvd='Y' OR lotw_qsl_rcvd='Y'))");
330 }
331
332
333
334 bool sqlOK = query.exec(stringQuery);
335 if (sqlOK)
336 {
337 query.next();
338 if (query.isValid())
339 {
340 int v =(query.value(0)).toInt();
341 query.finish();
342 return v;
343 }
344 else
345 {
346 return 0;
347 }
348
349 }
350 else
351 {
352 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
353 query.finish();
354 return 0;
355 }
356
357 }
358
isThisSpotConfirmed(const QStringList & _qs)359 bool Awards::isThisSpotConfirmed(const QStringList &_qs)
360 {
361
362 if (getDXStatus(_qs) == 13)
363 {
364 return true;
365 }
366 else
367 {
368 return false;
369 }
370
371 }
372
getDXStatus(const QStringList & _qs)373 int Awards::getDXStatus (const QStringList &_qs)
374 {
375
376 //qDebug() << "Awards::getDXStatus: Entity: " << _qs.at(0) << "/ Band: " << _qs.at(1) << "/ Mode: " << _qs.at(2) << "/ Log: " << _qs.at(3) << QT_ENDL;
377 // Receives: QStringList _qs;
378 //_qs << Entity << BandId << << ModeId << lognumber;
379
380 /* Not mode
381 -1 - Error. - ERROR - ERROR
382 0 - New one - New One - New One - 0
383 1 - Worked but not in this band nor this mode - Needed One - Needed One - 1
384 2 - Worked in this band, not this mode - Needed One - Worked One - 3
385 3 - Worked in this band and in this mode - Worked One - Worked One - 3
386 4 - Worked in this mode, not this band - Needed One - Needed One - 1
387
388 5 - Confirmed in another band/mode but not worked in this band nor this mode - Needed One - Needed One - 1
389 6 - Confirmed in another band/mode but just worked in this band and not in this mode - Needed One - Worked One - 3
390 7 - Confirmed in another band/mode but just worked in this mode and not in this band - Needed One - Needed One - 1
391 8 - Confirmed in another band/mode but just worked in this band and mode - Worked One - Worked One - 3
392 9 - Confirmed in this mode, but not worked this band - Needed One - Needed One - 1
393 10 - Confirmed in this mode, but worked this band - Worked One - Worked One - 3
394 11 - Confirmed in this band but not worked in this mode - Needed One - Confirmed One - 13
395 12 - Confirmed in this band but worked in this mode - Worked One - Confirmed One - 13
396 13 - Confirmed in this band and mode - Confirmed One - Confirmed One - 13
397
398
399 14 - New CQ Zone
400 15 - New CQ Zone on band
401 16 - New ITU Zone
402 17 - New ITU Zone on band
403 18 - New Grid
404 19 - New Grid on band
405
406 */
407
408 /*
409 0 - New One - Never worked before - RED
410 1 - Needed - New one in this band - ORANGE
411 2 - Worked - Worked in this band but not confirmed - YELLOW
412 3 - Confirmed - Confirmed in this band - GREEN
413 */
414
415
416 if (_qs.length() != 4 )
417 {
418 //qDebug() << "Awards::getDXStatus: Length != 4, return -1" << QT_ENDL;
419 return -1;
420 }
421
422 //int errorCode = 0;
423
424 int _band = _qs.at(1).toInt();
425 int _mode = _qs.at(2).toInt();
426 int _logNumber = _qs.at(3).toInt();
427 int dxccEntity = (_qs.at(0)).toInt();
428
429 //qDebug() << "Awards::getDXStatus: dxccEntity: " << QString::number(dxccEntity) << QT_ENDL;
430 if (dxccEntity<=0)
431 {
432 //qDebug() << "Awards::getDXStatus: dxccEntity <= 0, return -1" << QT_ENDL;
433 return -1;
434 }
435
436 bool checkingMode = true;
437 if ( (_mode==-1) || (manageModes==false))
438 {
439 checkingMode = false;
440 //qDebug() << "Awards::getDXStatus: checkingMode = FALSE" << QT_ENDL;
441 }
442
443 int wb = dxccStatusBand(dxccEntity, _band, _logNumber); //-1 error / 0 Not worked / 1 worked / 2 confirmed
444 int wm = -1;
445 if (checkingMode)
446 {
447 wm = dxccStatusMode(dxccEntity, _mode, _logNumber); //-1 error / 0 Not worked / 1 worked / 2 confirmed
448 }
449 // int wm = dxccStatusMode(dxccEntity, _mode, _logNumber); //-1 error / 0 Not worked / 1 worked / 2 confirmed
450
451 if (wm==-1)
452 {
453 checkingMode = false;
454 }
455
456 //qDebug() << "Awards::getDXStatus: wb=" << QString::number(wb) << " - wm=" << QString::number(wm) << QT_ENDL;
457 //qDebug() << "Awards::getDXStatus: dxccStatus: " << QString::number(dxccStatus(dxccEntity, _logNumber)) << QT_ENDL;
458
459 switch(dxccStatus(dxccEntity, _logNumber))
460 {
461 case 0:
462 //qDebug() << "Awards::getDXStatus: return 0" << QT_ENDL;
463 return 0; // ATNO
464 //break;
465 case 1: // Worked, not confirmed
466 switch (wb)
467 {
468 case 0: // Not worked in this band but in another band
469 if (checkingMode)
470 {
471 if (wm==1)
472 {
473 //qDebug() << "Awards::getDXStatus: return 4" << QT_ENDL;
474 return 4;
475 }
476 else
477 {
478 //qDebug() << "Awards::getDXStatus: return 1" << QT_ENDL;
479 return 1;
480 }
481 }
482 else
483 {
484 //qDebug() << "Awards::getDXStatus: return 4 nc" << QT_ENDL;
485 return 4;
486 }
487 case 1: // Worked in this band
488 if (checkingMode)
489 {
490 if (wm==1)
491 {
492 //qDebug() << "Awards::getDXStatus: return 3" << QT_ENDL;
493 return 3;
494 }
495 else
496 {
497 //qDebug() << "Awards::getDXStatus: return 2" << QT_ENDL;
498 return 2;
499 }
500 }
501 else
502 {
503 //qDebug() << "Awards::getDXStatus: return 3 nc" << QT_ENDL;
504 return 3;
505 }
506
507 default: // ERROR
508 //qDebug() << "Awards::getDXStatus: default return -1 - 1" << QT_ENDL;
509 return -1;
510 }
511 case 2: // Confirmed
512 if (wb==2)
513 {
514 if (checkingMode)
515 {
516 if (wm==2)
517 {
518 //qDebug() << "Awards::getDXStatus: return 13" << QT_ENDL;
519 return 13;
520 }
521 else if (wm==1)
522 {
523 //qDebug() << "Awards::getDXStatus: return 12" << QT_ENDL;
524 return 12;
525 }
526 else
527 {
528 //qDebug() << "Awards::getDXStatus: return 11" << QT_ENDL;
529 return 11;
530 }
531 }
532 else
533 {
534 //qDebug() << "Awards::getDXStatus: return 13 nc" << QT_ENDL;
535 return 13;
536 }
537
538 }
539 else if ((wb ==1) || (wb == 0))
540 {
541 if (checkingMode)
542 {
543 if (wb==1)
544 {
545 if (wm==1)
546 {
547 //qDebug() << "Awards::getDXStatus: return 8" << QT_ENDL;
548 return 8;
549 }
550 else
551 {
552 //qDebug() << "Awards::getDXStatus: return 6" << QT_ENDL;
553 return 6;
554 }
555 }
556 else
557 {
558 if (wm==1)
559 {
560 //qDebug() << "Awards::getDXStatus: return 7" << QT_ENDL;
561 return 7;
562 }
563 else
564 {
565 //qDebug() << "Awards::getDXStatus: return 5" << QT_ENDL;
566 return 5;
567 }
568 }
569
570 }
571 else
572 {
573 if (wb==0)
574 {
575 //qDebug() << "Awards::getDXStatus: return 7 nc" << QT_ENDL;
576 return 7;
577 }
578 else
579 {
580 //qDebug() << "Awards::getDXStatus: return 8 nc" << QT_ENDL;
581 return 8;
582 }
583 }
584 }
585 else
586 {
587 //qDebug() << "Awards::getDXStatus: return -1 - 2" << QT_ENDL;
588 return -1;
589 }
590 default:
591 //qDebug() << "Awards::getDXStatus: return -1 default2" << QT_ENDL;
592 return -1;
593 } // END OF SWITCH
594 //qDebug() << "Awards::getDXStatus: END, return -1" << QT_ENDL;
595 //return -1;
596 }
597
598
dxccStatusBandMode(const int _ent,const int _band,const int _mode,const int _logNumber,bool _checkingMode)599 int Awards::dxccStatusBandMode(const int _ent, const int _band, const int _mode, const int _logNumber, bool _checkingMode)
600 {//-1 error / 0 Not worked / 1 worked / 2 confirmed
601 //qDebug() << "Awards::dxccStatusBandMode: " << QString::number(_ent) << "/" << QString::number(_band) << "/" << QString::number(_mode) << QT_ENDL;
602 QSqlQuery query = QSqlQuery();
603 QString queryString = QString();
604
605 if (_checkingMode)
606 {
607 //qDebug() << "Awards::dxccStatusBandMode: Checking Mode TRUE" << QT_ENDL;
608 queryString = QString("SELECT DISTINCT qsl_rcvd, lotw_qsl_rcvd FROM log WHERE dxcc='%1' AND bandid='%2' AND modeid='%3' AND lognumber='%4' ").arg(QString::number(_ent)).arg(QString::number(_band)).arg(QString::number(_mode)).arg(QString::number(_logNumber));
609 }
610 else
611 {
612 //qDebug() << "Awards::dxccStatusBandMode: Checking Mode FALSE" << QT_ENDL;
613 queryString = QString("SELECT DISTINCT qsl_rcvd, lotw_qsl_rcvd FROM log WHERE dxcc='%1' AND bandid='%2' AND lognumber='%3' ").arg(QString::number(_ent)).arg(QString::number(_band)).arg(QString::number(_logNumber));
614 }
615
616 int status = 0;
617
618 if (query.exec(queryString))
619 {
620 while (query.next())
621 {
622 if ( query.isValid() )
623 {
624 if((query.value(0).toString() == "Y") || (query.value(1).toString() == "Y"))
625 {
626 //qDebug() << "Awards::dxccStatusBandMode: return - 2" << QT_ENDL;
627 query.finish();
628 return 2;
629 }
630 status = 1;
631 }
632 }
633 query.finish();
634
635 }
636 else
637 { // The query fails...
638 //qDebug() << "Awards::dxccStatusBandMode: return - -1" << QT_ENDL;
639 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
640 query.finish();
641 return -1;
642 }
643 //qDebug() << "Awards::dxccStatusBandMode: return - 0-4" << QT_ENDL;
644 return status;
645 }
646
647
648 /*
649 int Awards::dxccStatusBandMode(const int _ent, const int _band, const int _mode, const int _logNumber, bool _checkingMode)
650 {//-1 error / 0 Not worked / 1 worked / 2 confirmed
651 //qDebug() << "Awards::dxccStatusBandMode: " << QString::number(_ent) << "/" << QString::number(_band) << "/" << QString::number(_mode) << QT_ENDL;
652 QSqlQuery query = QSqlQuery();
653 QString queryString = QString();
654
655 if (_checkingMode)
656 {
657 //qDebug() << "Awards::dxccStatusBandMode: Checking Mode TRUE" << QT_ENDL;
658 queryString = QString("SELECT confirmed FROM awarddxcc WHERE dxcc='%1' AND band='%2' AND mode='%3' AND lognumber='%4' ").arg(QString::number(_ent)).arg(QString::number(_band)).arg(QString::number(_mode)).arg(QString::number(_logNumber));
659 }
660 else
661 {
662 //qDebug() << "Awards::dxccStatusBandMode: Checking Mode FALSE" << QT_ENDL;
663 queryString = QString("SELECT confirmed FROM awarddxcc WHERE dxcc='%1' AND band='%2' AND lognumber='%3' ").arg(QString::number(_ent)).arg(QString::number(_band)).arg(QString::number(_logNumber));
664 }
665
666 int status = 0;
667
668 if (query.exec(queryString))
669 {
670 while (query.next())
671 {
672 if ( query.isValid() )
673 {
674 if(query.value(0).toString() == "1")
675 {
676 //qDebug() << "Awards::dxccStatusBandMode: return - 2" << QT_ENDL;
677 query.finish();
678 return 2;
679 }
680 else if(query.value(0).toString() == "0")
681 {
682 //qDebug() << "Awards::dxccStatusBandMode: return - 1" << QT_ENDL;
683 if (status < 1)
684 {
685 status = 1;
686 }
687 }
688 }
689 }
690 query.finish();
691
692 }
693 else
694 { // The query fails...
695 //qDebug() << "Awards::dxccStatusBandMode: return - -1" << QT_ENDL;
696 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
697 query.finish();
698 return -1;
699 }
700 //qDebug() << "Awards::dxccStatusBandMode: return - 0-4" << QT_ENDL;
701 return status;
702 }
703
704 */
dxccStatus(const int _ent,const int _logNumber)705 int Awards::dxccStatus(const int _ent, const int _logNumber)
706 {//-1 error / 0 Not worked / 1 worked / 2 confirmed
707 //qDebug() << "Awards::dxccStatus: " << QString::number(_ent) << QT_ENDL;
708 QSqlQuery query = QSqlQuery();
709 QString queryString = QString();
710 int worked = 0;
711
712 queryString = QString("SELECT DISTINCT qsl_rcvd, lotw_qsl_rcvd FROM log WHERE dxcc='%1' AND lognumber='%2' ").arg(QString::number(_ent)).arg(QString::number(_logNumber));
713
714 if (query.exec(queryString))
715 {
716 //qDebug() << "Awards::dxccStatus: query exec OK: " << query.lastQuery() << QT_ENDL;
717 while (query.next())
718 {
719 //qDebug() << "Awards::dxccStatus: query VALUE: " << (query.value(0)).toString() << QT_ENDL;
720 if ( query.isValid() )
721 {
722 //qDebug() << "Awards::dxccStatus: query valid OK" << QT_ENDL;
723 if(((query.value(0)).toString() == "Y") || ((query.value(1)).toString() == "Y"))
724 {
725
726 //qDebug() << "Awards::dxccStatus: value = 1 - return 2" << QT_ENDL;
727 query.finish();
728 return 2;
729 }
730 worked = 1;
731 }
732 }
733 //qDebug() << "Awards::dxccStatus: return "<< QString::number(worked) << QT_ENDL;
734 query.finish();
735 //qDebug() << "Awards::dxccStatus: END: " << QString::number(worked) << QT_ENDL;
736 return worked;
737
738 }
739 else
740 { // The query fails...
741 //qDebug() << "Awards::dxccStatus: return -1" << QT_ENDL;
742 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
743 query.finish();
744 return -1;
745 }
746 //qDebug() << "Awards::dxccStatus: return 0" << QT_ENDL;
747 //return worked;
748 }
749
750
751
752 /*
753 int Awards::dxccStatus(const int _ent, const int _logNumber)
754 {//-1 error / 0 Not worked / 1 worked / 2 confirmed
755 //qDebug() << "Awards::dxccStatus: " << QString::number(_ent) << QT_ENDL;
756 QSqlQuery query = QSqlQuery();
757 QString queryString = QString();
758 int worked = 0;
759
760 queryString = QString("SELECT confirmed FROM awarddxcc WHERE dxcc='%1' AND lognumber='%2' ").arg(QString::number(_ent)).arg(QString::number(_logNumber));
761
762 if (query.exec(queryString))
763 {
764 //qDebug() << "Awards::dxccStatus: query exec OK: " << query.lastQuery() << QT_ENDL;
765 while (query.next())
766 {
767 //qDebug() << "Awards::dxccStatus: query VALUE: " << (query.value(0)).toString() << QT_ENDL;
768 if ( query.isValid() )
769 {
770 //qDebug() << "Awards::dxccStatus: query valid OK" << QT_ENDL;
771 if((query.value(0)).toString() == "1")
772 {
773
774 //qDebug() << "Awards::dxccStatus: value = 1 - return 2" << QT_ENDL;
775 query.finish();
776 return 2;
777 }
778 else if((query.value(0)).toString() == "0")
779 {
780
781 //qDebug() << "Awards::dxccStatus: value = 0 - worked 1" << QT_ENDL;
782 if (worked <1)
783 {
784 worked = 1;
785 }
786 }
787 }
788 }
789 //qDebug() << "Awards::dxccStatus: return "<< QString::number(worked) << QT_ENDL;
790 query.finish();
791 //qDebug() << "Awards::dxccStatus: END: " << QString::number(worked) << QT_ENDL;
792 return worked;
793
794 }
795 else
796 { // The query fails...
797 //qDebug() << "Awards::dxccStatus: return -1" << QT_ENDL;
798 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
799 query.finish();
800 return -1;
801 }
802 //qDebug() << "Awards::dxccStatus: return 0" << QT_ENDL;
803 //return worked;
804 }
805 */
806
807
getQRZDXStatusColor(const QStringList & _qs)808 QColor Awards::getQRZDXStatusColor(const QStringList &_qs)
809 {
810 //qs << Entity << spotBand << "-1" << QString::number(currentLog) ;
811 //qDebug() << "Awards::getQRZDXStatusColor qs.length: " << QString::number(_qs.length()) << QT_ENDL;
812
813 //From Search QSO to QSL: q << _call << bandid << _mode << QString::number(currentLog);
814 //qDebug() << "Awards::getQRZDXStatusColor: " << _qs.at(0) << "/" << _qs.at(1) << "/" << _qs.at(2) << _qs.at(3) << QT_ENDL;
815 // Receives: QStringList _qs;
816 //_qs << Entity << BandID << ModeId << lognumber;
817
818 /*
819 0 - New One
820 1 - Needed
821 2 - Worked
822 3 - Confirmed
823 */
824
825 QColor returnedColor;
826
827 int status = getDXStatus(_qs);
828
829 //qDebug() << "Awards::getQRZDXStatusColor: status: " << QString::number(status) << "/" << getDXStatusString(status) << QT_ENDL;
830 //qDebug() << "Awards::getQRZDXStatusColor: status: " << QString::number(status) << QT_ENDL;
831
832 switch (status) {
833 case 0:
834 returnedColor = newOneColor;
835 break;
836 case 1:
837 returnedColor = neededColor;
838 break;
839 case 2:
840 returnedColor = neededColor;
841 break;
842 case 3:
843 returnedColor = workedColor;
844 break;
845 case 4:
846 returnedColor = neededColor;
847 break;
848 case 5:
849 returnedColor = neededColor;
850 break;
851 case 6:
852 returnedColor = neededColor;
853 break;
854 case 7:
855 returnedColor = neededColor;
856 break;
857 case 8:
858 returnedColor = workedColor;
859 break;
860 case 9:
861 returnedColor = neededColor;
862 break;
863 case 10:
864 returnedColor = workedColor;
865 break;
866 case 11:
867 returnedColor = neededColor;
868 break;
869 case 12:
870 returnedColor = workedColor;
871 break;
872 case 13:
873 returnedColor = confirmedColor;
874 break;
875 //break;
876 default:
877 returnedColor = defaultColor;
878 break;
879
880 }
881 return returnedColor;
882 }
883
getDXStatusString(const int & _status)884 QString Awards::getDXStatusString (const int &_status)
885 {
886
887 //qDebug() << "Awards::getDXStatusString: " << QString::number(_status) << QT_ENDL;
888
889 QString message = QString();
890
891 switch (_status) {
892
893 case 0:
894 message = QObject::tr("New One, work it!");
895 //message = QObject::tr("0-new One");
896 break;
897 case 1:
898 message = QObject::tr("Needed, work it!");
899 //message = QObject::tr("1-Needed, work it!");
900 break;
901 case 2:
902 message = QObject::tr("Needed, work it!");
903 break;
904 case 3:
905 message = QObject::tr("Worked but not confirmed");
906 break;
907 case 4:
908 message = QObject::tr("Needed, work it!");
909 break;
910 case 5:
911 message = QObject::tr("Needed, work it!");
912 break;
913 case 6:
914 message = QObject::tr("Needed, work it!");
915 break;
916 case 7:
917 message = QObject::tr("Needed, work it!");
918 break;
919 case 8:
920 message = QObject::tr("Worked but not confirmed");
921 break;
922 case 9:
923 message = QObject::tr("Needed, work it!");
924 break;
925 case 10:
926 message = QObject::tr("Worked but not confirmed");
927 break;
928 case 11:
929 message = QObject::tr("Needed, work it!");
930 break;
931 case 12:
932 message = QObject::tr("Worked but not confirmed");
933 break;
934 case 13:
935 message = QObject::tr("Confirmed");
936 break;
937 //break;
938 default:
939 message = QObject::tr("Not identified");
940 break;
941
942 }
943 return message;
944 }
945
getDXCCStatusBand(const int _dxcc,const int _band)946 QString Awards::getDXCCStatusBand(const int _dxcc, const int _band)
947 {
948 // Returns -, W or C (Not worked, worked, Confirmed)
949 //qDebug() << Q_FUNC_INFO << "DXCC/Band: " << QString::number(_dxcc) << "/" << QString::number(_band);
950 //qDebug() << Q_FUNC_INFO << "dxccStatusList: " << QString::number(dxccStatusList.length ());
951
952 EntityBandStatus aux;
953
954 foreach (aux, dxccStatusList)
955 {
956 //qDebug() << Q_FUNC_INFO << " DXCC: " << QString::number(aux.dxcc);
957 //qDebug() << Q_FUNC_INFO << " Band: " << QString::number(aux.bandid);
958 if (aux.confirmed)
959 {
960 //qDebug() << Q_FUNC_INFO << "Confirmed";
961 }
962 else
963 {
964 //qDebug() << Q_FUNC_INFO << "Not confirmed";
965 }
966 if (aux.dxcc == _dxcc)
967 {
968 //qDebug() << Q_FUNC_INFO << " DXCC found: " << QString::number(_dxcc);
969 if (aux.bandid == _band)
970 {
971 //qDebug() << Q_FUNC_INFO << " Band found: " << QString::number(_band);
972 if (aux.confirmed)
973 {
974 //qDebug() << Q_FUNC_INFO << " Confirmed " ;
975 return "C";
976 }
977 else
978 {
979 //qDebug() << Q_FUNC_INFO << " Worked " ;
980 return "W";
981 }
982 }
983 }
984 }
985 //qDebug() << Q_FUNC_INFO << " Returnin -" ;
986 return "-";
987 }
988
getDXCCStatusBand2(const int _dxcc,const int _band,const int _logNumber)989 QString Awards::getDXCCStatusBand2(const int _dxcc, const int _band, const int _logNumber)
990 {
991 // Returns -, W or C (Not worked, worked, Confirmed)
992 //qDebug() << "Awards::getDXCCStatusBand: log received: " << QString::number(_logNumber) << QT_ENDL;
993 QString stringQuery;
994 if (_logNumber<0)
995 {
996 stringQuery = QString("SELECT DISTINCT qsl_rcvd, lotw_qsl_rcvd FROM log WHERE dxcc='%1' AND bandid='%2'").arg(_dxcc).arg(_band);
997 }
998 else
999 {
1000 stringQuery = QString("SELECT DISTINCT qsl_rcvd, lotw_qsl_rcvd FROM log WHERE dxcc='%1' AND bandid='%2' AND lognumber='%3'").arg(_dxcc).arg(_band).arg(_logNumber);
1001 }
1002 QString status = "-";
1003
1004 QSqlQuery query;
1005 bool sqlOk = query.exec(stringQuery);
1006 if (sqlOk)
1007 {
1008 while (query.next()) {
1009 if (query.isValid())
1010 {
1011 if (((query.value(0)).toString() == "Y") || ((query.value(1)).toString() == "Y"))
1012 {
1013 query.finish();
1014 return "C";
1015 }
1016 status = "W";
1017 }
1018 }
1019 }
1020 else
1021 {
1022 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1023 query.finish();
1024 return "-";
1025 }
1026 query.finish();
1027 return status;
1028 }
1029
1030
1031 /*
1032 QString Awards::getDXCCStatusBand(const int _dxcc, const int _band, const int _logNumber)
1033 {
1034 // Returns -, W or C (Not worked, worked, Confirmed)
1035 //qDebug() << "Awards::getDXCCStatusBand: log received: " << QString::number(_logNumber) << QT_ENDL;
1036 QString stringQuery;
1037 if (_logNumber<0)
1038 {
1039 stringQuery = QString("SELECT confirmed from awarddxcc WHERE dxcc='%1' AND band='%2'").arg(_dxcc).arg(_band);
1040 }
1041 else
1042 {
1043 stringQuery = QString("SELECT confirmed from awarddxcc WHERE dxcc='%1' AND band='%2' AND lognumber='%3'").arg(_dxcc).arg(_band).arg(_logNumber);
1044 }
1045 QString status = "-";
1046
1047 QSqlQuery query;
1048 bool sqlOk = query.exec(stringQuery);
1049 if (sqlOk)
1050 {
1051 while (query.next()) {
1052 if (query.isValid())
1053 {
1054 if ((query.value(0)).toString() == "1")
1055 {
1056 query.finish();
1057 return "C";
1058 }
1059 else if ((query.value(0)).toString() == "0")
1060 {
1061 if (status == "-")
1062 {
1063 status = "W";
1064 }
1065 }
1066 }
1067 }
1068 }
1069 else
1070 {
1071 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1072 query.finish();
1073 return "-";
1074 }
1075 query.finish();
1076 return status;
1077 }
1078
1079 */
1080
checkIfValidIOTA(const QString & _tiota)1081 QString Awards::checkIfValidIOTA(const QString &_tiota)
1082 {
1083 /**********************************
1084 IOTA should be always with this format: CC-NNN
1085 being:
1086 - CC the shortname of the continent
1087 - NNN Number of the reference.
1088 NNN has ALWAYS to include THREE(3) characters.
1089 ADIF Specs says:
1090 CC is the continent designator {NA, SA, EU , AF, OC, AS, AN}
1091 XXX is the island designator, where 0 <= XXX ,<= 999 [use leading zeroes]
1092
1093 Returns a valid format IOTA if possible and "" in other cases.
1094
1095 ************************************/
1096 //qDebug() << "Awards::checkIfValidIOTA: " << _tiota << QT_ENDL;
1097 //bool _valid = false;
1098 QString _continent;
1099 QString _number;
1100
1101 if (_tiota.count("-") == 1)
1102 {
1103 QStringList _values = _tiota.split("-", QT_SKIP);
1104 if (_values.size() != 2)
1105 {
1106 return "";
1107 }
1108
1109 if (dataProxy->isValidContinentShortName(_values.at(0)))
1110 {
1111 _continent = _values.at(0);
1112 }
1113 else
1114 {
1115 return "";
1116 }
1117 if ((_values.at(1)).toInt() > 0)
1118 {
1119 _number = _values.at(1);
1120 }
1121 else
1122 {
1123 return "";
1124 }
1125
1126
1127 }
1128 else
1129 {
1130 return "";
1131 }
1132
1133 //qDebug() << "Awards::checkIfValidIOTA (cont) " << _continent << QT_ENDL;
1134 //qDebug() << "Awards::checkIfValidIOTA (numb): " << _number << QT_ENDL;
1135
1136 // Check if continent is valid
1137
1138 if (dataProxy->isValidContinentShortName(_continent))
1139 {
1140 if ( (_number.toInt() >0 ) && ((_number.toInt()) < 1000 ))
1141 {
1142 if ((_number.length()) == 3)
1143 {
1144 return _continent + "-" + _number ;
1145 }
1146 else if ((_number.length()) == 2)
1147 {
1148 return _continent + "-0" + QString::number((_number).toInt());
1149 }
1150 else if ((_number.length()) == 1)
1151 {
1152 return _continent + "-00" + QString::number((_number).toInt());
1153 }
1154 else
1155 {
1156 return "";
1157 }
1158 }
1159 else
1160 {
1161 return "";
1162 }
1163 }
1164 else
1165 {
1166 return QString();
1167 }
1168 //return QString();
1169
1170 /*
1171 QString stringQuery = QString("SELECT id FROM continent WHERE shortname ='%1'").arg(_continent);
1172
1173 QSqlQuery query;
1174 query.exec(stringQuery);
1175 while (query.next()) {
1176 if (query.isValid())
1177 {
1178 _valid = true;
1179
1180 if ( (_number.toInt() >0 ) && ((_number.toInt()) < 1000 ))
1181 {
1182 if ((_number.length()) == 3)
1183 {
1184 return _continent + "-" + _number ;
1185 }
1186 else if ((_number.length()) == 2)
1187 {
1188 return _continent + "-0" + QString::number((_number).toInt());
1189 }
1190 else if ((_number.length()) == 1)
1191 {
1192 return _continent + "-00" + QString::number((_number).toInt());
1193 }
1194 else
1195 {
1196 return "";
1197 }
1198 }
1199 else
1200 {
1201 return "";
1202 }
1203 }
1204 }
1205 return "";
1206 */
1207 }
1208
1209
setColors(const QString & _newOne,const QString & _needed,const QString & _worked,const QString & _confirmed,const QString & _default)1210 void Awards::setColors (const QString &_newOne, const QString &_needed, const QString &_worked, const QString &_confirmed, const QString &_default)
1211 //void Awards::setColors (const QString &_newOne, const QString &_needed, const QString &_worked, const QString &_confirmed, const QString &_default)
1212 {
1213 //qDebug() << "Awards::setColors: " << _newOne << "/" << _needed << "/" << _worked << "/" << _confirmed << "/" << _default << QT_ENDL;
1214
1215 defaultColor = QColor(_default.toUpper());
1216 neededColor = QColor(_needed.toUpper());
1217 workedColor = QColor(_worked.toUpper());
1218 confirmedColor = QColor(_confirmed.toUpper());
1219 newOneColor = QColor(_newOne.toUpper());
1220
1221 if (defaultColor.isValid())
1222 {
1223 defaultColor.setNamedColor(_default.toUpper());
1224 }
1225 else
1226 {
1227 }
1228
1229 if (neededColor.isValid())
1230 {
1231 neededColor.setNamedColor(_needed.toUpper());
1232 }
1233 else
1234 {
1235 }
1236
1237
1238 if (confirmedColor.isValid())
1239 {
1240 confirmedColor.setNamedColor(_confirmed.toUpper());
1241 }
1242 else
1243 {
1244 }
1245
1246 if (newOneColor.isValid())
1247 {
1248 newOneColor.setNamedColor(_newOne.toUpper());
1249 }
1250 else
1251 {
1252 }
1253
1254 if (workedColor.isValid())
1255 {
1256 workedColor.setNamedColor(_worked.toUpper());
1257 }
1258 else
1259 {
1260 //qDebug() << "Awards::setColors: Worked NOT VALID" << QT_ENDL;
1261 }
1262 }
1263
getDefaultColor()1264 QColor Awards::getDefaultColor()
1265 {
1266 return defaultColor;
1267 }
1268
recalculateAwards()1269 void Awards::recalculateAwards()
1270 {
1271 /*
1272 TODO: I need to optimize this function.
1273 The select & insert of setAwardDXCC are too slow)
1274 Should go in a transaction
1275 */
1276
1277 //qDebug() << "Awards::recalculateAwards" << QT_ENDL;
1278 dataProxy->updateAwardDXCC();
1279 emit awardDXCCUpdated();
1280 dataProxy->updateAwardWAZ();
1281 //qDebug() << "Awards::recalculateAwards - END" << QT_ENDL;
1282 }
1283
1284
getQSOsInLog(const int _logNumber)1285 int Awards::getQSOsInLog(const int _logNumber)
1286 {
1287 //qDebug() << "Awards::getQSOsInLog: " << QString::number(_logNumber) << QT_ENDL;
1288 QSqlQuery query;
1289 QString queryString;
1290 int v;
1291
1292 queryString = QString("SELECT COUNT (id) FROM log WHERE lognumber='%1'").arg(_logNumber) ;
1293
1294 if( !query.exec(queryString) )
1295 {
1296 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1297 query.finish();
1298 return -1;
1299 }
1300 else
1301 {
1302 query.next();
1303 if (query.isValid())
1304 {
1305 v = query.value(0).toInt();
1306 query.finish();
1307 return v;
1308 }
1309 else
1310 {
1311 query.finish();
1312 return -2;
1313 }
1314 }
1315 }
1316
1317 /*
1318 void Awards::setAwards(const int _dxcc, const int _waz, const int _band, const int _mode, const int _workedOrConfirmed, const int _logNumber, const int _qsoId)
1319 {
1320 //qDebug() << "Awards::setAwards: " << QString::number(_dxcc) << QT_ENDL;
1321
1322 //_workedOrConfirmed = -1 Remove this pair
1323 //_workedOrConfirmed = 0 Set as Worked
1324 //_workedOrConfirmed = 1 Set as Confirmed
1325
1326 int d = _dxcc;
1327 int b = _band;
1328 int m = _mode;
1329 int w = _workedOrConfirmed;
1330 int l = _logNumber;
1331 int i = _qsoId;
1332 int z = _waz;
1333
1334 setAwardDXCC(d, b, m, w, l, i);
1335 setAwardWAZ(z, b, m, w, l, i);
1336 //setAwardWAZ(_waz, _band, _mode, _workedOrConfirmed, _logNumber);
1337
1338 }
1339
1340 */
1341
setAwards(const int _qsoId)1342 void Awards::setAwards(const int _qsoId)
1343 {
1344 //qDebug() << "Awards::setAwards: _qsoId: " << QString::number(_qsoId) << QT_ENDL;
1345 dataProxy->setDXCCAwardStatus(_qsoId);
1346 dataProxy->setWAZAwardStatus(_qsoId);
1347 }
1348 /*
1349 int Awards::setAwardDXCCst(const int _dxcc, const int _band, const int _mode, const bool _confirmed, const int _logNumber, const int _qsoId)
1350 {
1351 //qDebug() << "Awards::setAwardDXCCst-0: " << QString::number(_dxcc) << "/" << QString::number(_band) << "/" << QString::number(_mode) << "/" << QString::number(_logNumber) << "/" << QString::number(_qsoId) << QT_ENDL;
1352 int nameCol=-1;
1353 QString _refid = QString();
1354
1355 // _confirmedQSO == false QSO is just worked
1356 // _confirmedQSO == true QSO is confirmed
1357
1358 //TODO: Fix the way we check for data validity for this function
1359 if (!( (_dxcc>=0) && (_band >=0) && (_mode>=0) && (_logNumber>=0) && (_qsoId >=0) ))
1360 {
1361 //qDebug() << "Awards::setAwardDXCCst: Not valid data received!" << QT_ENDL;
1362 return -1;
1363 }
1364 int _iconfirmed;
1365
1366 if (_confirmed)
1367 {
1368 _iconfirmed = 1;
1369 }
1370 else
1371 {
1372 _iconfirmed = 0;
1373 }
1374
1375 //qDebug() << "Awards::setAwardDXCCst: _qsoId: " << QString::number(_qsoId) << "/" << QString::number(_iconfirmed) << QT_ENDL;
1376 QString stringQuery = QString();
1377 QSqlQuery query;
1378 bool sqlOK = false;
1379 int errorCode = -1;
1380
1381 stringQuery = QString("SELECT id, confirmed FROM awarddxcc where dxcc='%1' AND band='%2' AND mode='%3' AND lognumber='%4'").arg(_dxcc).arg(_band).arg(_mode).arg(_logNumber);
1382
1383
1384 sqlOK = query.exec(stringQuery);
1385 if (sqlOK)
1386 {
1387 //qDebug() << "Awards::setAwardDXCCst-1:" << QT_ENDL;
1388
1389 query.next();
1390 QSqlRecord rec = query.record();
1391
1392 if (query.isValid())
1393 {// We have some data, we need to UPDATE - We are only confirming!
1394 //qDebug() << "Awards::setAwardDXCCst: We have some data, we neer to update" << QT_ENDL;
1395 nameCol = rec.indexOf("id");
1396 _refid = query.value(nameCol).toString();
1397 stringQuery = QString("UPDATE awarddxcc SET confirmed='1', qsoid='%1' WHERE id='%2'").arg(_qsoId).arg(_refid);
1398 //qDebug() << "Awards::setAwardDXCCst: (UPDATE): " << stringQuery << QT_ENDL;
1399 if (sqlOK)
1400 { // Set of data updated
1401 //qDebug() << "Awards::setAwardDXCCst: Data updated!" << QT_ENDL;
1402 query.finish();
1403 return 1;
1404 }
1405 else
1406 { // Something failed. Trace it!
1407 errorCode = query.lastError().nativeErrorCode();
1408 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1409 query.finish();
1410 return -1;
1411
1412 }
1413
1414 }
1415 else
1416 { // We don't have this set, we need to INSERT
1417 stringQuery = QString("INSERT INTO awarddxcc (dxcc, band, mode, confirmed, lognumber, qsoid) values('%1','%2','%3','%4','%5','%6')").arg(_dxcc).arg(_band).arg(_mode).arg(_iconfirmed).arg(_logNumber).arg(_qsoId);
1418 sqlOK = query.exec(stringQuery);
1419 //qDebug() << "Awards::setAwardDXCCst: We don't have data... so we INSERT" << QT_ENDL;
1420 //qDebug() << "Awards::setAwardDXCCst: (INSERT): " << stringQuery << QT_ENDL;
1421 if (sqlOK)
1422 { // Set of data included
1423 query.finish();
1424 //qDebug() << "Awards::setAwardDXCCst: Data inserted!" << QT_ENDL;
1425 }
1426 else
1427 { // Something failed. Trace it!
1428 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1429 errorCode = query.lastError().nativeErrorCode();
1430 query.finish();
1431 return -1;
1432
1433 }
1434
1435 }
1436
1437 }
1438 else
1439 { // Trace the error... what may be happening???
1440 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1441 errorCode = query.lastError().nativeErrorCode();
1442 query.finish();
1443 return -1;
1444
1445 }
1446
1447 return -1;
1448
1449 }
1450
1451 */
1452
1453 /*
1454 int Awards::setAwardWAZst(const int _cqz, const int _band, const int _mode, const bool _confirmed, const int _logNumber, const int _qsoId)
1455 {
1456 //qDebug() << "Awards::setAwardWAZst(CQZ/BAND/MODE/WORKED/log/qsoid): " << QString::number(_cqz) << "/" << QString::number(_band) << "/" << QString::number(_mode) << "/" << QString::number(_logNumber) << "/" << QString::number(_qsoId) << QT_ENDL;
1457
1458
1459 // _confirmed == false QSO is just worked
1460 // _confirmed == true QSO is confirmed
1461
1462
1463
1464 //TODO: Fix the way we check for data validity for this function
1465 if (!( (_cqz>=0) && (_band >=0) && (_mode>=0) && (_logNumber>=0) && (_qsoId >=0) ))
1466 {
1467 //qDebug() << "Awards::setAwardWAZst: some data was NOK" << QT_ENDL;
1468 return -1;
1469 }
1470 int _iconfirmed;
1471
1472 if (_confirmed)
1473 {
1474 _iconfirmed = 1;
1475
1476 }
1477 else
1478 {
1479 _iconfirmed = 0;
1480 }
1481
1482
1483 QString stringQuery;
1484 QSqlQuery query;
1485 bool sqlOK;
1486 //int errorCode = -1;
1487
1488 stringQuery = QString("INSERT INTO awardwaz (cqz, band, mode, confirmed, lognumber, qsoid) values('%1','%2','%3','%4','%5','%6')").arg(_cqz).arg(_band).arg(_mode).arg(_iconfirmed).arg(_logNumber).arg(_qsoId);
1489
1490 sqlOK = query.exec(stringQuery);
1491
1492 if ((sqlOK) && (!_confirmed)) // First time a DXCC/Band/mode is worked
1493 {
1494 //qDebug() << "Awards::setAwardWAZst: _qsoId: " << QString::number(_qsoId) << "- 1" << QT_ENDL;
1495 query.finish();
1496 return 1;
1497 }
1498 else if ((sqlOK) && (_confirmed)) // First time a CQZ/Band/Mode is confirmed
1499 {
1500 //qDebug() << "Awards::setAwardWAZst: _qsoId: " << QString::number(_qsoId) << "- 2" << QT_ENDL;
1501 query.finish();
1502 return 2;
1503 }
1504 else
1505 {
1506 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1507 //qDebug() << "Awards::setAwardWAZst: _qsoId: " << QString::number(_qsoId) << "- sqlOK ERROR: " << QT_ENDL;
1508 //errorCode = query.lastError().nativeErrorCode();
1509 query.finish();
1510 //qDebug() << "Awards::setAwardWAZst: LastQuery: " << query.lastQuery() << QT_ENDL;
1511 //qDebug() << "Awards::setAwardWAZst: LastError-data: " << query.lastError().databaseText() << QT_ENDL;
1512 //qDebug() << "Awards::setAwardWAZst: LastError-driver: " << query.lastError().driverText() << QT_ENDL;
1513 //qDebug() << "Awards::setAwardWAZst: LastError-n: " << QString::number(query.lastError().nativeErrorCode() ) << QT_ENDL;
1514
1515
1516 }
1517 return -1;
1518 }
1519
1520 */
1521
1522 /*
1523 int Awards::setAwardDXCCConfirmed(const int _band, const int _mode, const int _dxcc, const int _newQSOid) // Changes the status of a DXCC from worked to confirmed
1524 {
1525 //qDebug() << "Awards::setAwardDXCCConfirmed: " << QString::number(_band) << "/" << QString::number(_mode) << "/" << QString::number(_dxcc)<< "/" << QString::number(_newQSOid)<< QT_ENDL;
1526
1527
1528 QString stringQuery;
1529 QSqlQuery query = QSqlQuery();
1530 bool sqlOK = false;
1531 int errorCode = -1;
1532 int nameCol = -1;
1533 QString aux = QString();
1534
1535 stringQuery = QString("SELECT qsoid FROM awarddxcc WHERE band='%1' AND mode='%2' AND dxcc='%3'").arg(_band).arg(_mode).arg(_dxcc);
1536 sqlOK = query.exec(stringQuery);
1537 if (sqlOK)
1538 {
1539 QSqlRecord rec = query.record();
1540 if (query.next())
1541 {
1542 if (query.isValid())
1543 {
1544 nameCol = rec.indexOf("qsoid");
1545 aux = (query.value(nameCol)).toString();
1546 query.finish();
1547 stringQuery = QString("UPDATE awarddxcc SET confirmed='1', qsoid='%1' WHERE qsoid='%2'").arg(_newQSOid).arg(aux);
1548 sqlOK = query.exec(stringQuery);
1549 if (sqlOK)
1550 {
1551 query.finish();
1552 return _newQSOid;
1553 }
1554 else
1555 { // UPDATE failed
1556 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1557 errorCode = query.lastError().nativeErrorCode();
1558 query.finish();
1559 //qDebug() << "Awards::setAwardDXCCConfirmed-Update: LastQuery: " << query.lastQuery() << QT_ENDL;
1560 //qDebug() << "Awards::setAwardDXCCConfirmed-Update: LastError-data: " << query.lastError().databaseText() << QT_ENDL;
1561 //qDebug() << "Awards::setAwardDXCCConfirmed-Update: LastError-driver: " << query.lastError().driverText() << QT_ENDL;
1562 //qDebug() << "Awards::setAwardDXCCConfirmed-Update: LastError-n: " << QString::number(query.lastError().nativeErrorCode() ) << QT_ENDL;
1563 return errorCode;
1564 }
1565
1566 }
1567 else
1568 {
1569 // Not valid record
1570 //qDebug() << "Awards::setAwardDXCCConfirmed: Not valid record" << QT_ENDL;
1571 return -3;
1572 }
1573 }
1574 else
1575 {
1576 // Not next record
1577 //qDebug() << "Awards::setAwardDXCCConfirmed: Not next record" << QT_ENDL;
1578 return -2;
1579 }
1580 }
1581 else
1582 { //
1583 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1584 errorCode = query.lastError().nativeErrorCode();
1585 query.finish();
1586 //qDebug() << "Awards::setAwardDXCCConfirmed: LastQuery: " << query.lastQuery() << QT_ENDL;
1587 //qDebug() << "Awards::setAwardDXCCConfirmed: LastError-data: " << query.lastError().databaseText() << QT_ENDL;
1588 //qDebug() << "Awards::setAwardDXCCConfirmed: LastError-driver: " << query.lastError().driverText() << QT_ENDL;
1589 //qDebug() << "Awards::setAwardDXCCConfirmed: LastError-n: " << QString::number(query.lastError().nativeErrorCode() ) << QT_ENDL;
1590 return errorCode;
1591 }
1592
1593 return 1;
1594 }
1595
1596 */
1597
setDXCCToQSO(const int _dxcc,const int _qsoid)1598 int Awards::setDXCCToQSO(const int _dxcc, const int _qsoid) // Defines the DXCC in a QSO
1599 {
1600 //qDebug() << "Awards::setDXCCToQSO: " << QString::number(_dxcc) << "/" << QString::number(_qsoid) << QT_ENDL;
1601 int errorCode = -1;
1602 QString queryString = QString("UPDATE log SET dxcc='%1' WHERE id='%2'").arg(_dxcc).arg(_qsoid);
1603 QSqlQuery query = QSqlQuery();
1604 bool sqlOK = query.exec(queryString);
1605 if (sqlOK)
1606 {
1607 query.finish();
1608 return 1;
1609 }
1610 else
1611 {
1612 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1613 //qDebug() << "Awards::setDXCCToQSO: DXCC Updated in Log but failed...." << QT_ENDL;
1614 errorCode = query.lastError().nativeErrorCode().toInt();
1615 query.finish();
1616 //qDebug() << "Awards::setDXCCToQSO: LastQuery: " << query.lastQuery() << QT_ENDL;
1617 //qDebug() << "Awards::setDXCCToQSO: LastError-data: " << query.lastError().databaseText() << QT_ENDL;
1618 //qDebug() << "Awards::setDXCCToQSO: LastError-driver: " << query.lastError().driverText() << QT_ENDL;
1619 //qDebug() << "Awards::setDXCCToQSO: LastError-n: " << QString::number(query.lastError().nativeErrorCode() ) << QT_ENDL;
1620 return errorCode;
1621 }
1622 }
1623
setCQToQSO(const int _cqz,const int _qsoid)1624 int Awards::setCQToQSO(const int _cqz, const int _qsoid) // Defines the CQ in a QSO
1625 {
1626 //qDebug() << "Awards::setCQToQSO: " << QString::number(_cqz) << "/" << QString::number(_qsoid) << QT_ENDL;
1627 int errorCode = -1;
1628 QString queryString = QString("UPDATE log SET cqz='%1' WHERE id='%2'").arg(_cqz).arg(_qsoid);
1629 QSqlQuery query = QSqlQuery();
1630 bool sqlOK = query.exec(queryString);
1631 if (sqlOK)
1632 {
1633 query.finish();
1634 return 1;
1635 }
1636 else
1637 {
1638 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1639 //qDebug() << "Awards::setCQToQSO: DXCC Updated in Log but failed...." << QT_ENDL;
1640 errorCode = query.lastError().nativeErrorCode().toInt();
1641 query.finish();
1642 //qDebug() << "Awards::setCQToQSO: LastQuery: " << query.lastQuery() << QT_ENDL;
1643 //qDebug() << "Awards::setCQToQSO: LastError-data: " << query.lastError().databaseText() << QT_ENDL;
1644 //qDebug() << "Awards::setCQToQSO: LastError-driver: " << query.lastError().driverText() << QT_ENDL;
1645 //qDebug() << "Awards::setCQToQSO: LastError-n: " << QString::number(query.lastError().nativeErrorCode() ) << QT_ENDL;
1646 return errorCode;
1647 }
1648 }
1649
getIsDXCCConfirmed(const int _dxcc,const int _logNumber)1650 bool Awards::getIsDXCCConfirmed(const int _dxcc, const int _logNumber)
1651 {
1652 // isDXCCConfirmed(const int _dxcc, const int _currentLog);
1653 return dataProxy->isDXCCConfirmed(_dxcc, _logNumber);
1654
1655 }
1656
getDXMarathonQSO(const int _year,const int _logNumber)1657 int Awards::getDXMarathonQSO(const int _year, const int _logNumber)
1658 {
1659 //qDebug() << "Awards::getDXMarathonQSO: " << QString::number(_year) << QT_ENDL;
1660
1661 return dxMarathon->getDXMarathonQSO(_year, _logNumber);
1662 }
1663
getDXMarathonDXCC(const int _year,const int _logNumber)1664 int Awards::getDXMarathonDXCC(const int _year, const int _logNumber)
1665 {
1666 //qDebug() << "Awards::getDXMarathonDXCC: " << QString::number(_year) << QT_ENDL;
1667
1668 return dxMarathon->getDXMarathonDXCC(_year, _logNumber);
1669 }
1670
getDXMarathonCQ(const int _year,const int _logNumber)1671 int Awards::getDXMarathonCQ(const int _year, const int _logNumber)
1672 {
1673 //qDebug() << "Awards::getDXMarathonCQ: " << QString::number(_year) << QT_ENDL;
1674 return dxMarathon->getDXMarathonCQ(_year, _logNumber);
1675 }
1676
getDXMarathonScore(const int _year,const int _logNumber)1677 int Awards::getDXMarathonScore(const int _year, const int _logNumber)
1678 {
1679 //qDebug() << "Awards::getDXMarathonScore: " << QString::number(_year) << QT_ENDL;
1680
1681 return dxMarathon->getDXMarathonScore(_year, _logNumber);
1682
1683 }
1684
isDXMarathonNeed(const int _dxcc,const int _cq,const int _year,const int _logNumber)1685 bool Awards::isDXMarathonNeed(const int _dxcc, const int _cq, const int _year, const int _logNumber)
1686 {
1687 return dxMarathon->neededForDXMarathon(_dxcc, _cq, _year, _logNumber);
1688 }
1689
dxccStatusBand(const int _ent,const int _band,const int _logNumber)1690 int Awards::dxccStatusBand(const int _ent, const int _band, const int _logNumber) //-1 error / 0 Not worked / 1 worked / 2 confirmed
1691 {
1692 //-1 error / 0 Not worked / 1 worked / 2 confirmed
1693 //qDebug() << "Awards::dxccStatusBand: " << QString::number(_ent) << "/" << QString::number(_band) << QT_ENDL;
1694
1695 QSqlQuery query = QSqlQuery();
1696 QString queryString = QString("SELECT DISTINCT qsl_rcvd, lotw_qsl_rcvd FROM log WHERE dxcc='%1' AND qsl_rcvd='Y' AND bandid='%2' AND lognumber='%4' ").arg(QString::number(_ent)).arg(QString::number(_band)).arg(QString::number(_logNumber));
1697
1698 int status = 0;
1699 //qDebug() << "Awards::dxccStatusBand: " << queryString << QT_ENDL;
1700 if (query.exec(queryString))
1701 {
1702 while (query.next())
1703 {
1704 if ( query.isValid() )
1705 {
1706 if((query.value(0).toString() == "Y") || (query.value(1).toString() == "Y")) // Confirmed
1707 {
1708 query.finish();
1709 return 2;
1710 }
1711 status = 1;
1712 } // Not present => Not worked
1713 }
1714 query.finish();
1715 }
1716 else
1717 {
1718 //TODO: Manage the query error
1719 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1720 query.finish();
1721 return -1;
1722 }
1723
1724 //qDebug() << "Awards::dxccStatusBand: return - 0.3" << QT_ENDL;
1725 return status; // if arrives to here decision => not worked
1726 }
1727
1728
1729
1730 /*
1731 int Awards::dxccStatusBand(const int _ent, const int _band, const int _logNumber) //-1 error / 0 Not worked / 1 worked / 2 confirmed
1732 {
1733 //-1 error / 0 Not worked / 1 worked / 2 confirmed
1734 //qDebug() << "Awards::dxccStatusBand: " << QString::number(_ent) << "/" << QString::number(_band) << QT_ENDL;
1735
1736 QSqlQuery query = QSqlQuery();
1737 QString queryString = QString();
1738
1739 queryString = QString("SELECT confirmed FROM awarddxcc WHERE dxcc='%1' AND band='%2' AND lognumber='%4' ").arg(QString::number(_ent)).arg(QString::number(_band)).arg(QString::number(_logNumber));
1740 int status = 0;
1741
1742 if (query.exec(queryString))
1743 {
1744 while (query.next())
1745 {
1746 if ( query.isValid() )
1747 {
1748 if(query.value(0).toString() == "1") // Confirmed
1749 {
1750 query.finish();
1751 return 2;
1752 }
1753 else if(query.value(0).toString() == "0") // Worked
1754 {
1755 if (status < 1)
1756 {
1757 status = 1;
1758 }
1759 }
1760 } // Not present => Not worked
1761 }
1762 query.finish();
1763 }
1764 else
1765 {
1766 //TODO: Manage the query error
1767 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1768 query.finish();
1769 return -1;
1770 }
1771
1772 //qDebug() << "Awards::dxccStatusBand: return - 0.3" << QT_ENDL;
1773 return status; // if arrives to here decision => not worked
1774 }
1775
1776 */
1777
dxccStatusMode(const int _ent,const int _mode,const int _logNumber)1778 int Awards::dxccStatusMode(const int _ent, const int _mode, const int _logNumber) //-1 error / 0 Not worked / 1 worked / 2 confirmed
1779 {
1780 //-1 error / 0 Not worked / 1 worked / 2 confirmed
1781 //qDebug() << "Awards::dxccStatusMode: " << QString::number(_ent) << "/" << QString::number(_mode) << QT_ENDL;
1782
1783 QSqlQuery query = QSqlQuery();
1784 QString queryString = QString();
1785 if (_mode == -1)
1786 {
1787 return -1;
1788 }
1789 int status = 0;
1790 queryString = QString("SELECT DISTINCT qsl_rcvd, lotw_qsl_rcvd FROM log WHERE dxcc='%1' AND modeid='%2' AND lognumber='%4' ").arg(QString::number(_ent)).arg(QString::number(_mode)).arg(QString::number(_logNumber));
1791
1792
1793 if (query.exec(queryString))
1794 {
1795 while (query.next())
1796 {
1797 if ( query.isValid() )
1798 {
1799 if((query.value(0).toString() == "Y") || (query.value(1).toString() == "Y")) // Confirmed
1800 {
1801 query.finish();
1802 return 2;
1803 }
1804 status = 1;
1805 } // Not present => Not worked
1806 }
1807 query.finish();
1808 }
1809 else
1810 { // The query fails...
1811 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1812 query.finish();
1813 //TODO: Manage the query error
1814 return -1;
1815 }
1816 return status; // if arrives to here decision => not worked
1817 }
1818
1819 /*
1820 int Awards::dxccStatusMode(const int _ent, const int _mode, const int _logNumber) //-1 error / 0 Not worked / 1 worked / 2 confirmed
1821 {
1822 //-1 error / 0 Not worked / 1 worked / 2 confirmed
1823 //qDebug() << "Awards::dxccStatusMode: " << QString::number(_ent) << "/" << QString::number(_mode) << QT_ENDL;
1824
1825 QSqlQuery query = QSqlQuery();
1826 QString queryString = QString();
1827 if (_mode == -1)
1828 {
1829 return -1;
1830 }
1831 int status = 0;
1832 queryString = QString("SELECT confirmed FROM awarddxcc WHERE dxcc='%1' AND mode='%2' AND lognumber='%4' ").arg(QString::number(_ent)).arg(QString::number(_mode)).arg(QString::number(_logNumber));
1833
1834
1835 if (query.exec(queryString))
1836 {
1837 while (query.next())
1838 {
1839 if ( query.isValid() )
1840 {
1841 if(query.value(0).toString() == "1") // Confirmed
1842 {
1843 query.finish();
1844 return 2;
1845 }
1846 else if(query.value(0).toString() == "0") // Worked
1847 {
1848 if (status < 1)
1849 {
1850 status = 1;
1851 }
1852 }
1853 } // Not present => Not worked
1854 }
1855 query.finish();
1856 }
1857 else
1858 { // The query fails...
1859 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1860 query.finish();
1861 //TODO: Manage the query error
1862 return -1;
1863 }
1864 return status; // if arrives to here decision => not worked
1865 }
1866 */
setManageModes(const bool _manageModes)1867 void Awards::setManageModes(const bool _manageModes)
1868 {
1869 manageModes = _manageModes;
1870 }
1871
updateDXCCBandsStatus(const int _logNumber)1872 bool Awards::updateDXCCBandsStatus(const int _logNumber)
1873 {
1874 //qDebug() << Q_FUNC_INFO << ": " << QString::number(_logNumber);
1875 //QList<EntityBandStatus> dxccStatus;
1876 QSqlQuery query;
1877 QString stringQuery = QString();
1878 bool sqlOK = false;
1879 //QString answer;
1880 if (_logNumber>0)
1881 {
1882 //stringQuery = QString("SELECT DISTINCT dxcc, bandid, qsl_rcvd, lotw_qsl_rcvd FROM log WHERE dxcc>0 AND lognumber='%1'ORDER BY dxcc").arg(_logNumber);
1883 stringQuery = QString("SELECT DISTINCT dxcc, bandid, qsl_rcvd, lotw_qsl_rcvd, id FROM log lognumber='%1'ORDER BY dxcc").arg(_logNumber);
1884 }
1885 else
1886 {
1887 stringQuery = QString("SELECT DISTINCT dxcc, bandid, qsl_rcvd, lotw_qsl_rcvd, id FROM log ORDER BY dxcc");
1888 }
1889
1890 int qsos = 0;
1891 sqlOK = query.exec(stringQuery);
1892 if (sqlOK)
1893 {
1894 //qDebug() << Q_FUNC_INFO << " - exec query: " << query.lastQuery ();
1895
1896 dxccStatusList.clear();
1897 while(query.next())
1898 {
1899 if (query.isValid())
1900 {
1901 qsos++;
1902 EntityBandStatus ent;
1903 if (query.value(0).toInt()==0)
1904 {
1905 //qDebug() << Q_FUNC_INFO << " - Returning false for: QSOid" << QString::number(query.value(4).toInt());
1906 return false;
1907 }
1908 ent.dxcc = query.value(0).toInt();
1909
1910 ent.bandid = query.value(1).toInt();
1911 if ((query.value(2).toString () == "Y") || (query.value(3).toString () == "Y"))
1912 {
1913 ent.confirmed = true;
1914 }
1915 else
1916 {
1917 ent.confirmed = false;
1918 }
1919 dxccStatusList.append (ent);
1920 }
1921 else
1922 {
1923 //qDebug() << Q_FUNC_INFO << ": query NOK: " << query.lastQuery ();
1924 query.finish();
1925 return false;
1926 }
1927 }
1928 }
1929 else
1930 {
1931 emit queryError(Q_FUNC_INFO, query.lastError().databaseText(), query.lastError().nativeErrorCode(), query.lastQuery());
1932 query.finish();
1933 return false;
1934 }
1935 query.finish();
1936
1937 if ((dxccStatusList.length ()<1) && (qsos>0))
1938 {
1939 //qDebug() << Q_FUNC_INFO << " RETURN FALSE" ;
1940 // It may be the case that there are not dxcc
1941 return false;
1942 }
1943 else if (dxccStatusList.length ()<1)
1944 {
1945 //qDebug() << Q_FUNC_INFO << ": dxccStatusList length <1 ";
1946 }
1947 else if(qsos>0)
1948 {
1949 //qDebug() << Q_FUNC_INFO << ": qsos>0 ";
1950 }
1951 else
1952 {
1953 //qDebug() << Q_FUNC_INFO << ": ELSE";
1954 }
1955
1956 //qDebug() << Q_FUNC_INFO << ": dxccStatusList length: " << QString::number(dxccStatusList.length ()) ;
1957 //qDebug() << Q_FUNC_INFO << ": QSOs: " << QString::number(qsos) ;
1958 return true;
1959 }
1960