@@ -34,7 +34,7 @@ bool is_elf(char *fname) {
34
34
void Setup::download (QString url) {
35
35
CURL *curl = curl_easy_init ();
36
36
if (!curl) {
37
- emit finished (false );
37
+ emit finished (url, tr ( " Something went wrong. Reboot the device. " ) );
38
38
return ;
39
39
}
40
40
@@ -57,16 +57,19 @@ void Setup::download(QString url) {
57
57
int ret = curl_easy_perform (curl);
58
58
long res_status = 0 ;
59
59
curl_easy_getinfo (curl, CURLINFO_RESPONSE_CODE, &res_status);
60
- if (ret == CURLE_OK && res_status == 200 && is_elf (tmpfile )) {
60
+
61
+ if (ret != CURLE_OK || res_status != 200 ) {
62
+ emit finished (url, tr (" Ensure the entered URL is valid, and the device’s internet connection is good." ));
63
+ } else if (!is_elf (tmpfile )) {
64
+ emit finished (url, tr (" No custom software found at this URL." ));
65
+ } else {
61
66
rename (tmpfile , " /tmp/installer" );
62
67
63
68
FILE *fp_url = fopen (" /tmp/installer_url" , " w" );
64
69
fprintf (fp_url, " %s" , url.toStdString ().c_str ());
65
70
fclose (fp_url);
66
71
67
- emit finished (true );
68
- } else {
69
- emit finished (false );
72
+ emit finished (url);
70
73
}
71
74
72
75
curl_slist_free_all (list);
@@ -239,10 +242,10 @@ QWidget * Setup::downloading() {
239
242
return widget;
240
243
}
241
244
242
- QWidget * Setup::download_failed () {
245
+ QWidget * Setup::download_failed (QLabel *url, QLabel *body ) {
243
246
QWidget *widget = new QWidget ();
244
247
QVBoxLayout *main_layout = new QVBoxLayout (widget);
245
- main_layout->setContentsMargins (55 , 225 , 55 , 55 );
248
+ main_layout->setContentsMargins (55 , 185 , 55 , 55 );
246
249
main_layout->setSpacing (0 );
247
250
248
251
QLabel *title = new QLabel (tr (" Download Failed" ));
@@ -251,7 +254,13 @@ QWidget * Setup::download_failed() {
251
254
252
255
main_layout->addSpacing (67 );
253
256
254
- QLabel *body = new QLabel (tr (" Ensure the entered URL is valid, and the device’s internet connection is good." ));
257
+ url->setWordWrap (true );
258
+ url->setAlignment (Qt::AlignTop | Qt::AlignLeft);
259
+ url->setStyleSheet (" font-family: \" JetBrains Mono\" ; font-size: 64px; font-weight: 400; margin-right: 100px;" );
260
+ main_layout->addWidget (url);
261
+
262
+ main_layout->addSpacing (48 );
263
+
255
264
body->setWordWrap (true );
256
265
body->setAlignment (Qt::AlignTop | Qt::AlignLeft);
257
266
body->setStyleSheet (" font-size: 80px; font-weight: 300; margin-right: 100px;" );
@@ -276,7 +285,7 @@ QWidget * Setup::download_failed() {
276
285
restart->setProperty (" primary" , true );
277
286
blayout->addWidget (restart);
278
287
QObject::connect (restart, &QPushButton::clicked, this , [=]() {
279
- setCurrentIndex (2 );
288
+ setCurrentIndex (1 );
280
289
});
281
290
282
291
widget->setStyleSheet (R"(
@@ -309,15 +318,19 @@ Setup::Setup(QWidget *parent) : QStackedWidget(parent) {
309
318
downloading_widget = downloading ();
310
319
addWidget (downloading_widget);
311
320
312
- failed_widget = download_failed ();
321
+ QLabel *url_label = new QLabel ();
322
+ QLabel *body_label = new QLabel ();
323
+ failed_widget = download_failed (url_label, body_label);
313
324
addWidget (failed_widget);
314
325
315
- QObject::connect (this , &Setup::finished, [=](bool success ) {
316
- // hide setup on success
317
- qDebug () << " finished " << success;
318
- if (success) {
326
+ QObject::connect (this , &Setup::finished, [=](const QString &url, const QString &error ) {
327
+ qDebug () << " finished " << url << error;
328
+ if (error. isEmpty ()) {
329
+ // hide setup on success
319
330
QTimer::singleShot (3000 , this , &QWidget::hide);
320
331
} else {
332
+ url_label->setText (url);
333
+ body_label->setText (error);
321
334
setCurrentWidget (failed_widget);
322
335
}
323
336
});
0 commit comments