// This source code file was last time modified by Arvo ES1JA on 20181229 #include "wsprnet.h" #include #include #include #include #include #include #include #include #include #include "moc_eqsl.cpp" namespace { char const * const EqslUrl = "http://www.eqsl.cc/qslcard/importADIF.cfm"; // char const * const wsprNetUrl = "http://127.0.0.1/post?"; }; EQSL::EQSL(QNetworkAccessManager * manager, QObject *parent) : QObject{parent} , networkManager {manager} , uploadTimer {new QTimer {this}} , m_in_progress {false} { uploadTimer->setSingleShot(true); connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkReply(QNetworkReply*))); connect( uploadTimer, SIGNAL(timeout()), this, SLOT(work())); } void EQSL::upload(QString const& eqsl_username, QString const& eqsl_passwd, QString const& eqsl_nickname , QString const& call, QString const& mode , QDateTime const& QSO_date_on , QString const& rpt_sent, QString const& band , QString const& eqslcomments) { if (m_in_progress) { reply->abort(); m_in_progress = false; } myadif="2.1.9"; myadif+="" + eqsl_username; myadif+="" + eqsl_passwd; myadif+="JTDX" + eqsl_nickname; myadif+="" + call; myadif+="" + mode; myadif+="" + QSO_date_on.date().toString("yyyyMMdd"); myadif+="" + QSO_date_on.time().toString("hhmm"); myadif+="" + rpt_sent; myadif+="" + band; if(eqslcomments!="") myadif+="" + eqslcomments; // myadif+="TNX For QSO TU 73!."; myadif+=""; uploadTimer->start(1); } void EQSL::networkReply(QNetworkReply *reply) { if (QNetworkReply::NoError != reply->error ()) { printf ("eqsl upload error:%d\n",reply->error ()); } else { QString serverResponse = reply->readAll(); // printf("eqsl upload result:%s\n",serverResponse.toStdString().c_str()); } // delete request object instance on return to the event loop otherwise it is leaked reply->deleteLater (); m_in_progress = false; } void EQSL::work() { #if QT_VERSION < QT_VERSION_CHECK (5, 15, 0) if (QNetworkAccessManager::Accessible != networkManager->networkAccessible ()) { // try and recover network access for QNAM networkManager->setNetworkAccessible (QNetworkAccessManager::Accessible); } #endif m_in_progress = true; QUrl url(EqslUrl); QUrlQuery query; query.addQueryItem("ADIFdata", myadif); url.setQuery(query.query()); m_in_progress = true; // printf ("eqsl upload request:%s\n",myadif.toStdString().c_str()); QNetworkRequest request(url); reply = networkManager->get(request); // printf ("sent\n"); }