From d2812e498c064b6769e0fdd8423f3de4a9061964 Mon Sep 17 00:00:00 2001 From: "Eshan Roy (Eshanized)" Date: Tue, 30 Apr 2024 22:28:59 +0530 Subject: [PATCH] chore: add doInternetUpRequest() --- snigdhaosassistant.cpp | 51 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/snigdhaosassistant.cpp b/snigdhaosassistant.cpp index 64ffe61..0ba66df 100644 --- a/snigdhaosassistant.cpp +++ b/snigdhaosassistant.cpp @@ -6,15 +6,64 @@ #include "snigdhaosassistant.h" #include "./ui_snigdhaosassistant.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include -SnigdhaOSAssistant::SnigdhaOSAssistant(QWidget *parent) +const char* INTERNET_CHECK_URL = "https://snigdhaos.org"; + +SnigdhaOSAssistant::SnigdhaOSAssistant(QWidget *parent, QString state) : QMainWindow(parent) , ui(new Ui::SnigdhaOSAssistant) { + this->setWindowIcon(QIcon("/usr/share/pixmaps/snigdhaos-assistant.svg")); ui->setupUi(this); + this->setWindowFlags(this->windowFlags() & ~Qt::WindowCloseButtonHint); + executable_modify_date = QFileInfo(QCoreApplication::applicationFilePath()).lastModified(); + updateState(state); } SnigdhaOSAssistant::~SnigdhaOSAssistant() { delete ui; } + +void SnigdhaOSAssistant::doInternetUpRequest(){ + QNetworkAccessManager* network_manager = new QNetworkAccessManager(); + auto network_reply = network_manager->head(QNetworkRequest(QString(INTERNET_CHECK_URL))); + + QTimer* timer = new QTimer(this); + timer->setSingleShot(true); + timer->start(5000); + + // Did we time out? Try again! + connect(timer, &QTimer::timeout, this, [this, timer, network_reply, network_manager]() { + timer->deleteLater(); + network_reply->abort(); + network_reply->deleteLater(); + network_manager->deleteLater(); + doInternetUpRequest(); + }); + + // Request is done! + connect(network_reply, &QNetworkReply::finished, this, [this, timer, network_reply, network_manager]() { + timer->stop(); + timer->deleteLater(); + network_reply->deleteLater(); + network_manager->deleteLater(); + if (network_reply->error() == network_reply->NoError) { + // Wooo! + updateState(State::UPDATE); + } + // Boo! + else + doInternetUpRequest(); + }); + +}