1 /***************************************************************************
2 elogqrzlog.cpp - description
3 -------------------
4 begin : nov 2020
5 copyright : (C) 2020 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 "elogqrzlog.h"
28 #include <QCoreApplication>
29 #include <QUrl>
30 #include <QNetworkRequest>
31 #include <QFile>
32 //#include <QDebug>
33
eLogQrzLog(DataProxy_SQLite * dp,const QString & _parentFunction,const QString & _klogVersion)34 eLogQrzLog::eLogQrzLog(DataProxy_SQLite *dp, const QString &_parentFunction, const QString &_klogVersion)
35 {
36
37 #ifdef QT_DEBUG
38 //qDebug() << Q_FUNC_INFO << ": " << _parentFunction;
39 #else
40 #endif
41
42 klogVersion = _klogVersion;
43 dataProxy = dp;
44 errorWhileSendingLog = false;
45 sendingQSO = false;
46 lastQSO = false;
47
48 qsos.clear();
49 sessionkey = QString();
50 logbookkey = QString();
51 onlineMessage = new OnlineMessageWidget;
52 currentQSO = -1;
53 manager = new QNetworkAccessManager(this);
54 managerLog = new QNetworkAccessManager(this);
55 connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotManagerFinished(QNetworkReply*)));
56 connect(managerLog, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotManagerLogFinished(QNetworkReply*)));
57 uploadingFile = false;
58 logged = false;
59 util = new Utilities;
60 serviceUrl = QUrl("https://xmldata.qrz.com/xml/current/");
61 //serviceUrl = QUrl("https://xmldata.qrz.com/xml/1.31/ ");
62 //qDebug()<< "eLogQrzLog::eLogQrzLog - END" << QT_ENDL;
63 }
64
~eLogQrzLog()65 eLogQrzLog::~eLogQrzLog()
66 {
67 //qDebug()<< "eLogQrzLog::~eLogQrzLog" << QT_ENDL;
68 }
69
setLogBookKey(const QString & _key)70 void eLogQrzLog::setLogBookKey(const QString &_key)
71 {
72 //qDebug()<< "eLogQrzLog::setLogBookKey: " << _key << QT_ENDL;
73 if (_key.length()>0)
74 {
75 logbookkey = _key;
76 }
77 }
78
parseNetworkError(QNetworkReply::NetworkError _error)79 void eLogQrzLog::parseNetworkError(QNetworkReply::NetworkError _error)
80 {
81
82 QString text;
83 switch (_error) {
84 case QNetworkReply::NoError:
85 break;
86 case QNetworkReply::HostNotFoundError:
87 text = "QRZ.com: " + tr("Host not found!");
88 break;
89 case QNetworkReply::TimeoutError:
90 text = "QRZ.com: " + tr("Timeout error!");
91 break;
92 default:
93 text = "QRZ.com: " + tr("Undefined error number (#%1)").arg(_error);
94 }
95
96 //return text;
97
98 QMessageBox::warning(nullptr, tr("KLog - QRZ.com"),
99 tr("We have received the following error from QRZ.com (%1)").arg(result) + "\n" +
100 text,
101 QMessageBox::Ok);
102
103 }
104
slotManagerLogFinished(QNetworkReply * data)105 void eLogQrzLog::slotManagerLogFinished(QNetworkReply *data)
106 {
107 //qDebug()<< "eLogQrzLog::slotLogManagerFinished" << QT_ENDL;
108 sendingQSO = false;
109 result = data->error();
110 //qDebug()<< "eLogQrzLog::slotManagerLogFinished - Result = " << QString::number(result) << QT_ENDL;
111
112 const QByteArray sdata = data->readAll();
113 //qDebug() << "eLogQrzLog::slotManagerLogFinished: Received: " << sdata;
114
115 QString text = QString();
116
117 //qDebug() << "eLogQrzLog::slotManagerLogFinished - 00010" << QT_ENDL;
118 if (result == QNetworkReply::NoError)
119 {
120 QString dataReply(sdata);
121 //parseAppAnswer(1, dataReply);
122 parseAppAnswer(dataReply);
123 //qDebug()<< "eLogQrzLog::slotManageLogFinished - NO ERROR" << QT_ENDL;
124 }
125 else {
126 parseNetworkError(result);
127
128 //emit disableQRZAction(true);
129 }
130
131 if (lastQSO)
132 {
133 lastQSO = false;
134 sendSignal(result, qsos);
135 }
136
137 //qDebug()<< "eLogQrzLog::slotManagerLogFinished - Result = " << QString::number(result) << QT_ENDL;
138 //qDebug()<< "eLogQrzLog::slotManagerLogFinished - Result Text = " << text << QT_ENDL;
139 emit showMessage(text);
140
141 }
142
parseXMLAnswer(QXmlStreamReader & xml)143 void eLogQrzLog::parseXMLAnswer(QXmlStreamReader &xml)
144 {
145 //qDebug() << Q_FUNC_INFO << xml.text();
146 QString tdata = QString();
147
148 while (!xml.atEnd())
149 {
150 tdata.clear();
151 QXmlStreamReader::TokenType t = xml.readNext();
152 if (t == QXmlStreamReader::StartDocument)
153 {
154 //qDebug() << Q_FUNC_INFO << " - quick read version: " << xml.documentVersion().toString() << QT_ENDL;
155 //qDebug() << Q_FUNC_INFO << " - quick read encoding: " << xml.documentEncoding().toString() << QT_ENDL;
156 }
157
158 if (t == QXmlStreamReader::StartElement)
159 {
160 QString name = xml.name().toString();
161 //qDebug() << Q_FUNC_INFO << " - quick read name: " << name << QT_ENDL;
162 if (name == "QRZDatabase" || name == "Session" || name == "Callsign")
163 {
164 //qDebug() << Q_FUNC_INFO << " - No data: " << name << QT_ENDL;
165 }
166 else if (name == "Key")
167 {
168 tdata = xml.readElementText();
169 //qDebug() << Q_FUNC_INFO << " - API-Key: " << tdata << QT_ENDL;
170 if (tdata.length()>0)
171 {
172 sessionkey = tdata;
173 logged = true;
174 }
175 continue;
176 }
177 else if (name == "call")
178 {
179 tdata = xml.readElementText();
180 if (tdata.length()>0)
181 {
182 //qDebug() << Q_FUNC_INFO << " - CALL: " << tdata << QT_ENDL;
183 }
184 continue;
185 }
186 else if (name == "Error")
187 {
188 tdata = xml.readElementText();
189 //qDebug() << Q_FUNC_INFO << " - Error: " << tdata << QT_ENDL;
190 if (tdata == "Username/password incorrect ")
191 {
192 pass = QString();
193 }
194 emit dataFoundSignal("error", tdata);
195 continue;
196 }
197 else if (name == "Message")
198 {
199 tdata = xml.readElementText();
200 //qDebug() << Q_FUNC_INFO << " - Message: " << tdata << QT_ENDL;
201 emit dataFoundSignal("message", tdata);
202 continue;
203 }
204
205 else if (name == "fname")
206 {
207 tdata = xml.readElementText();
208 if (tdata.length()>0)
209 {
210 emit dataFoundSignal("name", tdata);
211 //qDebug() << Q_FUNC_INFO << " - Name: " << tdata << QT_ENDL;
212 }
213 continue;
214 }
215 else if (name == "addr1")
216 {
217 tdata = xml.readElementText();
218 if (tdata.length()>0)
219 {
220 //emit dataFoundSignal("grid", tdata);
221 //qDebug() << Q_FUNC_INFO << " - addr1: " << tdata << QT_ENDL;
222 }
223 continue;
224 }
225 else if (name == "addr2")
226 {
227 tdata = xml.readElementText();
228 if (tdata.length()>0)
229 {
230 emit dataFoundSignal("qth", tdata);
231 //qDebug() << Q_FUNC_INFO << " - addr2: " << tdata;
232 }
233 continue;
234 }
235 else if (name == "grid")
236 {
237 tdata = xml.readElementText();
238 if (tdata.length()>0)
239 {
240 //qDebug() << Q_FUNC_INFO << " - grid: " << tdata;
241 emit dataFoundSignal("grid", tdata);
242 }
243 continue;
244 }
245 else if (name == "qslmgr")
246 {
247 tdata = xml.readElementText();
248 if (tdata.length()>0)
249 {
250 //qDebug() << Q_FUNC_INFO << " - qslmgr: " << tdata;
251 emit dataFoundSignal("qslmgr", tdata);
252 }
253 continue;
254 }
255 else if (name == "Remark")
256 {
257 tdata = xml.readElementText();
258 //qDebug() << Q_FUNC_INFO << " - Remark: " << tdata ;
259 if (tdata.length()>0)
260 {
261 //qDebug() << "eLogQrzLog::parseXMLAnswer: Remark: " << tdata << QT_ENDL;
262 }
263 continue;
264 }
265 else if (xml.readElementText() == "non-subscriber")
266 {
267 //qDebug() << Q_FUNC_INFO << " - Not Subscribed QRZ.com user";
268 emit showMessage(tr("You are not subscribed to QRZ.com."));
269 emit disableQRZAction(true);
270 }
271 else
272 {
273 //qDebug() << Q_FUNC_INFO << " - ELSE quick read data: " << xml.readElementText() << QT_ENDL;
274 }
275 }
276 }
277 if (xml.hasError())
278 {
279 //qDebug() << Q_FUNC_INFO << " - ERROR: " << xml.errorString() << QT_ENDL;
280 }
281 else if (xml.atEnd())
282 {
283 //qDebug() << Q_FUNC_INFO << " - XML END" << QT_ENDL;
284 }
285 /*
286 QString tname, tdata;
287 while(!xml.atEnd() && !xml.hasError())
288 {
289 //qDebug() << "eLogQrzLog::parseXMLAnswer - 00012" << QT_ENDL;
290 QXmlStreamReader::TokenType token = xml.readNext();
291
292 if (token == QXmlStreamReader::StartDocument)
293 {
294 //qDebug() << "eLogQrzLog::parseXMLAnswer - StartDocument" << QT_ENDL;
295 continue;
296 }
297 //qDebug() << "eLogQrzLog::parseXMLAnswer - 00014" << QT_ENDL;
298 if (token == QXmlStreamReader::StartElement)
299 {
300 tname = xml.name().toString();
301
302 //qDebug() << "eLogQrzLog::parseXMLAnswer - tname = " << tname << QT_ENDL;
303
304 if (tname == "Key")
305 {
306 tdata = xml.readElementText();
307 //qDebug() << "eLogQrzLog::parseXMLAnswer: API-Key: " << tdata << QT_ENDL;
308 if (tdata.length()>0)
309 {
310 sessionkey = tdata;
311 logged = true;
312 }
313 continue;
314 }
315 if (tname == "Error")
316 {
317 tdata = xml.readElementText();
318 //qDebug() << "eLogQrzLog::parseXMLAnswer: Error: " << tdata << QT_ENDL;
319 emit dataFoundSignal("error", tdata);
320 }
321 if (tname == "Message")
322 {
323 tdata = xml.readElementText();
324 //qDebug() << "eLogQrzLog::parseXMLAnswer: Message: " << tdata << QT_ENDL;
325 emit dataFoundSignal("message", tdata);
326 }
327 if (tname == "call")
328 {
329 tdata = xml.readElementText();
330 if (tdata.length()>0)
331 {
332 //qDebug() << "eLogQrzLog::parseXMLAnswer: CALL: " << tdata << QT_ENDL;
333 }
334 continue;
335 }
336 if (tname == "fname")
337 {
338 tdata = xml.readElementText();
339 if (tdata.length()>0)
340 {
341 emit dataFoundSignal("name", tdata);
342 //qDebug() << "eLogQrzLog::parseXMLAnswer: Name: " << tdata << QT_ENDL;
343 }
344 continue;
345 }
346 if (tname == "addr1")
347 {
348 tdata = xml.readElementText();
349 if (tdata.length()>0)
350 {
351 //emit dataFoundSignal("grid", tdata);
352 //qDebug() << "eLogQrzLog::parseXMLAnswer: addr1: " << tdata << QT_ENDL;
353 }
354 continue;
355 }
356 if (tname == "addr2")
357 {
358 tdata = xml.readElementText();
359 if (tdata.length()>0)
360 {
361 emit dataFoundSignal("qth", tdata);
362 //qDebug() << "eLogQrzLog::parseXMLAnswer: addr2: " << tdata << QT_ENDL;
363 }
364 continue;
365 }
366 if (tname == "grid")
367 {
368 tdata = xml.readElementText();
369 if (tdata.length()>0)
370 {
371 emit dataFoundSignal("grid", tdata);
372 }
373 continue;
374 }
375 if (tname == "qslmgr")
376 {
377 tdata = xml.readElementText();
378 if (tdata.length()>0)
379 {
380 emit dataFoundSignal("qslmgr", tdata);
381 }
382 continue;
383 }
384 if (tname == "Remark")
385 {
386 //qDebug() << "eLogQrzLog::parseXMLAnswer: Remark: " << QT_ENDL;
387 tdata = xml.readElementText();
388 if (tdata.length()>0)
389 {
390 //qDebug() << "eLogQrzLog::parseXMLAnswer: Remark: " << tdata << QT_ENDL;
391 }
392 continue;
393 }
394 if (tname == "Session")
395 {
396 //qDebug() << "eLogQrzLog::parseXMLAnswer: Session: " << QT_ENDL;
397 tdata = xml.readElementText();
398 if (tdata.length()>0)
399 {
400 //qDebug() << "eLogQrzLog::parseXMLAnswer: Session: " << tdata << QT_ENDL;
401 }
402 continue;
403 }
404
405 //qDebug() << "eLogQrzLog::parseXMLAnswer: Unknown: " << tname << QT_ENDL;
406 }
407 }
408 if (xml.hasError())
409 {
410 //qDebug() << "eLogQrzLog::parseXMLAnswer XML error: " << "XML error: " << xml.errorString() << QT_ENDL;
411 }
412 else if (xml.atEnd())
413 {
414 //qDebug() << "eLogQrzLog::parseXMLAnswer XML END: " << "Reached end, done" << QT_ENDL;
415 }
416 */
417 //qDebug() << "eLogQrzLog::parseXMLAnswer: END of token while" << QT_ENDL;
418 //qDebug() << Q_FUNC_INFO << " - NO ERROR" ;
419 }
420
slotManagerFinished(QNetworkReply * data)421 void eLogQrzLog::slotManagerFinished(QNetworkReply *data)
422 {
423 //qDebug() << Q_FUNC_INFO;
424
425 result = data->error();
426 //qDebug() << Q_FUNC_INFO << " - Result = " << QString::number(result) << QT_ENDL;
427
428 const QByteArray sdata = data->readAll();
429 //qDebug() << Q_FUNC_INFO << " - Received: " << sdata;
430
431 QString text = QString();
432
433 //qDebug() << Q_FUNC_INFO << " - 00010" << QT_ENDL;
434 if (result == QNetworkReply::NoError)
435 {
436 //QXmlStreamReader reader(sdata);
437 reader = new QXmlStreamReader(sdata);
438 parseXMLAnswer(*reader);
439 }
440 else
441 {
442 sendSignal(result, qsos);
443 //parseNetworkError(result);
444 }
445
446 //qDebug() << Q_FUNC_INFO << " - Result = " << QString::number(result) << QT_ENDL;
447 //qDebug() << Q_FUNC_INFO << " - Result Text = " << text << QT_ENDL;
448
449 emit showMessage(text);
450
451 }
452
downloadProgress(qint64 received,qint64 total)453 void eLogQrzLog::downloadProgress(qint64 received, qint64 total) {
454 //qDebug()<< "eLogQrzLog::downloadProgress: " << QString::number(received) << "/" << QString::number(total) << QT_ENDL;
455
456 //qDebug()<< received << total;
457 emit actionShowProgres(received, total);
458 }
459
slotErrorManagement(QNetworkReply::NetworkError networkError)460 void eLogQrzLog::slotErrorManagement(QNetworkReply::NetworkError networkError)
461 {
462 //qDebug()<< "eLogQrzLog::slotErrorManagement: " << QString::number(networkError) << QT_ENDL;
463 result = networkError;
464
465 if (result == QNetworkReply::NoError)
466 {
467 }
468 else if (result == QNetworkReply::HostNotFoundError)
469 {
470 //qDebug()<< "eLogQrzLog::slotErrorManagement: Host not found" << QT_ENDL;
471 }
472 else
473 {
474 //qDebug()<< "eLogQrzLog::slotErrorManagement: ERROR!" << QT_ENDL;
475 }
476
477 //actionError(result);
478 }
479
canConnect()480 bool eLogQrzLog::canConnect()
481 {
482 //qDebug() << Q_FUNC_INFO;
483 if (!logged)
484 {
485 //qDebug() << Q_FUNC_INFO << " - 10";
486 login();
487 if (!logged)
488 {
489 //qDebug() << Q_FUNC_INFO << " - Not logged";
490 return false;
491 }
492 }
493 if (sessionkey.length()<1)
494 {
495 //qDebug() << Q_FUNC_INFO << " - API not valid";
496 return false;
497 }
498 //qDebug() << Q_FUNC_INFO << " - END";
499 return true;
500 }
501
fetchData()502 void eLogQrzLog::fetchData()
503 {
504 //qDebug() << Q_FUNC_INFO;
505 if (!canConnect())
506 {
507 return;
508 }
509 //qDebug()<< "eLogQrzLog::checkQRZ: Preparing the query" << QT_ENDL;
510 QUrlQuery params;
511
512
513 params.addQueryItem("action", "fetch");
514 params.addQueryItem("option", "all");
515 params.addQueryItem("agent", util->getGlobalAgent(klogVersion));
516
517 sendDataParams(params);
518 }
519
checkQRZ(const QString & _qrz)520 void eLogQrzLog::checkQRZ(const QString &_qrz)
521 {
522 //qDebug()<< "eLogQrzLog::checkQRZ: " << _qrz << QT_ENDL;
523 if (!util->isValidCall(_qrz))
524 {
525 //qDebug()<< "eLogQrzLog::checkQRZ: CALL not valid" << QT_ENDL;
526 return;
527 }
528 serviceUrl = QUrl("https://xmldata.qrz.com/xml/current/");
529
530 if (!canConnect())
531 {
532 //qDebug() << Q_FUNC_INFO << " - can't connect";
533 return;
534 }
535
536 //qDebug() << Q_FUNC_INFO << " - Preparing the query" << QT_ENDL;
537 QUrlQuery params;
538 params.addQueryItem("s", sessionkey);
539 params.addQueryItem("callsign", _qrz);
540 params.addQueryItem("agent", util->getGlobalAgent(klogVersion));
541 sendDataParams(params);
542 }
543
sendQSOs(QList<int> _qsos)544 int eLogQrzLog::sendQSOs(QList<int> _qsos)
545 {
546 //qDebug()<< "eLogQrzLog::sendQSOs: QSOs: " << QString::number(_qsos.length()) << QT_ENDL;
547 errorWhileSendingLog = false;
548 if (logbookkey.length()<1)
549 {
550 //qDebug()<< "eLogQrzLog::sendQSOs: No valid KEY (-2)" << QT_ENDL;
551 QMessageBox::warning(nullptr, tr("KLog - QRZ.com"),
552 tr("Not valid KEY found") + "\n" +
553 tr("Please configure your QRZ.com API key. You will find it in your QRZ.com Logbook settings webpage.\nYou need a QRZ.com subscription to use this feature."),
554 QMessageBox::Ok);
555 return -2;
556 }
557 qsos.clear();
558 qsos << _qsos;
559 lastQSO = false;
560 foreach (int i, _qsos)
561 {
562 sendQSO(i);
563 if (i == _qsos.last())
564 {
565 lastQSO = true;
566 }
567 }
568 return 1;
569 }
570
sendQSO(const int _qsoID)571 int eLogQrzLog::sendQSO(const int _qsoID)
572 {
573 //qDebug() << "eLogQrzLog::sendQSO: " << QString::number(_qsoID) << QT_ENDL;
574
575 QString adifQSO = dataProxy->getADIFQSO(_qsoID);
576
577 //qDebug()<< "eLogQrzLog::sendQSO: (ADIF) :" << adifQSO << QT_ENDL;
578 //qDebug()<< "eLogQrzLog::sendQSO: (KEY) :" << logbookkey << QT_ENDL;
579 QUrlQuery params;
580
581 params.addQueryItem("KEY", logbookkey);
582 params.addQueryItem("ACTION", "INSERT");
583 params.addQueryItem("ADIF",adifQSO);
584 params.addQueryItem("agent", util->getGlobalAgent(klogVersion));
585 //qDebug() << "eLogQrzLog::sendQSO: END" << QT_ENDL;
586
587 QByteArray postData;
588
589 postData = params.query(QUrl::FullyEncoded).toUtf8();
590 params.setQuery(postData);
591
592 QNetworkRequest requestLog(QUrl("https://logbook.qrz.com/api"));
593 requestLog.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
594
595 //qDebug()<< "eLogQrzLog::sendQSO: postData: " << postData << QT_ENDL;
596 while (sendingQSO)
597 {
598 //qDebug() << "eLogQrzLog::sendQSO: sending QSO... just wait!" << QT_ENDL;
599 }
600 managerLog->post(requestLog, postData);
601 return 1;
602 }
hasLogBookKey()603 bool eLogQrzLog::hasLogBookKey()
604 {
605 if (logbookkey.length()>0)
606 {
607 return true;
608 }
609 else
610 {
611 return false;
612 }
613 }
614
615
login()616 void eLogQrzLog::login()
617 {
618 //qDebug()<< "eLogQrzLog::login" << QT_ENDL;
619 if (logged)
620 {
621 //qDebug()<< "eLogQrzLog::login Already logged!" << QT_ENDL;
622 return;
623 }
624
625 //bool savePassword = true;
626 if (pass.length()<1)
627 {
628 //savePassword = false;
629
630 bool ok;
631 pass = QInputDialog::getText(nullptr, tr("KLog - QRZ.com password needed"), tr("Please enter your QRZ.com password: "), QLineEdit::Password, "", &ok);
632 if (!ok)
633 {
634 //qDebug() << "eLogQrzLog::login - END 1" << QT_ENDL;
635 return;
636 }
637 }
638
639
640 if ((user.length()<1) || (pass.length()<1))
641 {
642 //qDebug()<< "eLogQrzLog::login error 2" << QT_ENDL;
643 //if (!savePassword)
644 //{// We delete the password as soon as possible if the user is not willing to save it
645 // pass = QString();
646 //}
647 return;
648 }
649
650 QUrlQuery params;
651
652 params.addQueryItem("username", user);
653 params.addQueryItem("password", pass);
654 params.addQueryItem("agent", util->getGlobalAgent(klogVersion));
655 sendDataParams(params);
656
657 //if (!savePassword)
658 //{// We delete the password as soon as possible if the user is not willing to save it
659 // pass = QString();
660 //}
661 //qDebug()<< "eLogQrzLog::login - END" << QT_ENDL;
662
663 }
664
sendDataParams(const QUrlQuery & _params)665 int eLogQrzLog::sendDataParams(const QUrlQuery &_params)
666 {
667 //qDebug()<< "eLogQrzLog::sendDataParams: Params: " << _params.query(QUrl::FullyEncoded).toUtf8() << QT_ENDL;
668
669 QByteArray postData;
670
671 QUrlQuery params;
672
673 postData = params.query(QUrl::FullyEncoded).toUtf8();
674 postData = postData + "&" + _params.query(QUrl::FullyEncoded).toUtf8();
675 params.setQuery(postData);
676
677 postData = params.query(QUrl::FullyEncoded).toUtf8();
678
679 QNetworkRequest request(serviceUrl);
680 request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
681
682 //qDebug()<< "eLogQrzLog::sendDataParams: postData: " << postData << QT_ENDL;
683 manager->post(request, postData);
684 //qDebug()<< "eLogQrzLog::sendDataParams - END" << QT_ENDL;
685 return -1;
686 }
687
setCredentials(const QString & _user,const QString & _pass)688 void eLogQrzLog::setCredentials(const QString &_user, const QString &_pass)
689 {
690 //qDebug()<< "eLogQrzLog::setCredentials: user: " << _user << " / Pass: " << _pass << QT_ENDL;
691 user = _user;
692 pass = _pass;
693 }
694
prepareToTranslate(const QString & _m)695 QString eLogQrzLog::prepareToTranslate(const QString &_m)
696 {
697 //qDebug()<< "eLogQrzLog:: = prepareToTranslate" << _m << QT_ENDL;
698 if (_m == "Callsign missing")
699 {
700 return tr("Callsign missing");
701 }
702 else
703 {
704 return _m;
705 }
706 }
707
parseAppAnswer(const QString & _m)708 void eLogQrzLog::parseAppAnswer (const QString &_m)
709 {
710 //qDebug()<< "eLogQrzLog::parseAppAnswer: " << _m << QT_ENDL;
711
712 QStringList response;
713 response.clear();
714 response << _m.split('&');
715
716 QString responseType = response.at(0).split('=').at(0);
717 QString responseResult = response.at(0).split('=').at(1);
718 //qDebug()<< "eLogQrzLog::parseAppAnswer: responseType: " << responseType << QT_ENDL;
719 //qDebug()<< "eLogQrzLog::parseAppAnswer: responseResult: " << responseResult << QT_ENDL;
720
721 if ((responseType == "STATUS") && (responseResult == "OK"))
722 {
723 //qDebug()<< "eLogQrzLog::parseAppAnswer: OK" << QT_ENDL;
724 }
725 else if ((responseType == "STATUS") && (responseResult == "FAIL"))
726 {
727 errorWhileSendingLog = true;
728 if (response.at(1).split('=').at(0) == "REASON")
729 {
730 QString reason = response.at(1).split('=').at(1);
731 //qDebug()<< "eLogQrzLog::parseAppAnswer: " << reason << QT_ENDL;
732 }
733 }
734 else if ((responseType == "STATUS") && (responseResult == "AUTH"))
735 {
736 errorWhileSendingLog = true;
737 if (response.at(1).split('=').at(0) == "REASON")
738 {
739 QString reason = response.at(1).split('=').at(1);
740 //qDebug()<< "eLogQrzLog::parseAppAnswer: " << reason << QT_ENDL;
741 //onlineMessage->showMessage(QNetworkReply::NoError, QRZ, Fail, Other, reason);
742 }
743 }
744 }
745
746
sendSignal(QNetworkReply::NetworkError _error,QList<int> _qsos)747 void eLogQrzLog::sendSignal(QNetworkReply::NetworkError _error, QList<int> _qsos)
748 {
749 errorWhileSendingLog = false;
750 emit signalLogUploaded(_error, _qsos);
751 }
752
753
754
755