@ -34,7 +34,7 @@ bool is_elf(char *fname) {
void Setup : : download ( QString url ) {
CURL * curl = curl_easy_init ( ) ;
if ( ! curl ) {
emit finished ( false ) ;
emit finished ( url , tr ( " Something went wrong. Reboot the device. " ) ) ;
return ;
}
@ -57,16 +57,19 @@ void Setup::download(QString url) {
int ret = curl_easy_perform ( curl ) ;
long res_status = 0 ;
curl_easy_getinfo ( curl , CURLINFO_RESPONSE_CODE , & res_status ) ;
if ( ret = = CURLE_OK & & res_status = = 200 & & is_elf ( tmpfile ) ) {
if ( ret ! = CURLE_OK | | res_status ! = 200 ) {
emit finished ( url , tr ( " Ensure the entered URL is valid, and the device’s internet connection is good. " ) ) ;
} else if ( ! is_elf ( tmpfile ) ) {
emit finished ( url , tr ( " No custom software found at this URL. " ) ) ;
} else {
rename ( tmpfile , " /tmp/installer " ) ;
FILE * fp_url = fopen ( " /tmp/installer_url " , " w " ) ;
fprintf ( fp_url , " %s " , url . toStdString ( ) . c_str ( ) ) ;
fclose ( fp_url ) ;
emit finished ( true ) ;
} else {
emit finished ( false ) ;
emit finished ( url ) ;
}
curl_slist_free_all ( list ) ;
@ -239,10 +242,10 @@ QWidget * Setup::downloading() {
return widget ;
}
QWidget * Setup : : download_failed ( ) {
QWidget * Setup : : download_failed ( QLabel * url , QLabel * body ) {
QWidget * widget = new QWidget ( ) ;
QVBoxLayout * main_layout = new QVBoxLayout ( widget ) ;
main_layout - > setContentsMargins ( 55 , 22 5, 55 , 55 ) ;
main_layout - > setContentsMargins ( 55 , 18 5, 55 , 55 ) ;
main_layout - > setSpacing ( 0 ) ;
QLabel * title = new QLabel ( tr ( " Download Failed " ) ) ;
@ -251,7 +254,13 @@ QWidget * Setup::download_failed() {
main_layout - > addSpacing ( 67 ) ;
QLabel * body = new QLabel ( tr ( " Ensure the entered URL is valid, and the device’s internet connection is good. " ) ) ;
url - > setWordWrap ( true ) ;
url - > setAlignment ( Qt : : AlignTop | Qt : : AlignLeft ) ;
url - > setStyleSheet ( " font-family: \" JetBrains Mono \" ; font-size: 64px; font-weight: 400; margin-right: 100px; " ) ;
main_layout - > addWidget ( url ) ;
main_layout - > addSpacing ( 48 ) ;
body - > setWordWrap ( true ) ;
body - > setAlignment ( Qt : : AlignTop | Qt : : AlignLeft ) ;
body - > setStyleSheet ( " font-size: 80px; font-weight: 300; margin-right: 100px; " ) ;
@ -276,7 +285,7 @@ QWidget * Setup::download_failed() {
restart - > setProperty ( " primary " , true ) ;
blayout - > addWidget ( restart ) ;
QObject : : connect ( restart , & QPushButton : : clicked , this , [ = ] ( ) {
setCurrentIndex ( 2 ) ;
setCurrentIndex ( 1 ) ;
} ) ;
widget - > setStyleSheet ( R " (
@ -309,15 +318,19 @@ Setup::Setup(QWidget *parent) : QStackedWidget(parent) {
downloading_widget = downloading ( ) ;
addWidget ( downloading_widget ) ;
failed_widget = download_failed ( ) ;
QLabel * url_label = new QLabel ( ) ;
QLabel * body_label = new QLabel ( ) ;
failed_widget = download_failed ( url_label , body_label ) ;
addWidget ( failed_widget ) ;
QObject : : connect ( this , & Setup : : finished , [ = ] ( bool success ) {
// hide setup on success
qDebug ( ) < < " finished " < < success ;
if ( success ) {
QObject : : connect ( this , & Setup : : finished , [ = ] ( const QString & url , const QString & error ) {
qDebug ( ) < < " finished " < < url < < error ;
if ( error . isEmpty ( ) ) {
// hide setup on success
QTimer : : singleShot ( 3000 , this , & QWidget : : hide ) ;
} else {
url_label - > setText ( url ) ;
body_label - > setText ( error ) ;
setCurrentWidget ( failed_widget ) ;
}
} ) ;