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