From 72800cf81b35e9f5649bcb041a8063921a6d64a7 Mon Sep 17 00:00:00 2001 From: procount Date: Tue, 22 Feb 2022 14:58:01 +0000 Subject: [PATCH] Fixing Recalbox --- recovery/config.h | 2 +- recovery/mainwindow.cpp | 28 ++++++++++++++++++++++----- recovery/multiimagedownloadthread.cpp | 9 +++++++-- recovery/multiimagedownloadthread.h | 3 +++ 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/recovery/config.h b/recovery/config.h index 41212911b..0c076d2cf 100644 --- a/recovery/config.h +++ b/recovery/config.h @@ -2,7 +2,7 @@ #define CONFIG_H /* Version number displayed in the title bar */ -#define VERSION_NUMBER "3.8" +#define VERSION_NUMBER "3.8.1" /* Color of the background */ // #define BACKGROUND_COLOR Qt::white diff --git a/recovery/mainwindow.cpp b/recovery/mainwindow.cpp index 5d3f6266b..fd19c0689 100644 --- a/recovery/mainwindow.cpp +++ b/recovery/mainwindow.cpp @@ -839,6 +839,8 @@ QMap MainWindow::listImages(const QString &folder) continue; QVariantMap osv = Json::loadFromFile(imagefolder+"/os.json").toMap(); + OverrideJson(osv); //Allow overriding of supported_models by putting this here. + if (folder == "/mnt/os") osv["source"] = SOURCE_SDCARD; else @@ -1334,20 +1336,34 @@ void MainWindow::on_actionDownload_triggered() f.remove(); } + //Is this the same as fi.path()? + QString urlpath = entry.value("os_info").toString().left(entry.value("os_info").toString().lastIndexOf('/')); + + //Required fields + downloadMetaFile(entry.value("os_info").toString(), folder+"/os.json"); + downloadMetaFile(entry.value("partitions_info").toString(), folder+"/partitions.json"); + //Try and download flavours, but not an error if they don't exist downloadMetaFile( fi.path() +"/flavours.json", "-"+folder+"/flavours.json"); downloadMetaFile( fi.path() +"/flavours.tar.xz", "-"+folder+"/flavours.tar.xz"); - downloadMetaFile(entry.value("os_info").toString(), folder+"/os.json"); - downloadMetaFile(entry.value("partitions_info").toString(), folder+"/partitions.json"); - QString urlpath = entry.value("os_info").toString().left(entry.value("os_info").toString().lastIndexOf('/')); downloadMetaFile(urlpath+"/release_notes.txt", "-" + folder+"/release_notes.txt"); //'-' indicates optional downloadMetaFile(urlpath+"/terms", "-" + folder+"/terms"); //'-' indicates optional if (entry.contains("marketing_info")) + { downloadMetaFile(entry.value("marketing_info").toString(), folder+"/marketing.tar"); + } + else { + downloadMetaFile(urlpath+"/marketing.tar", "-" + folder+"/marketing.tar"); //'-' indicates optional + } if (entry.contains("partition_setup")) + { downloadMetaFile(entry.value("partition_setup").toString(), folder+"/partition_setup.sh"); + } + else { + downloadMetaFile(urlpath+"/partition_setup.sh", "-" + folder+"/partition_setup.sh"); //'-' indicates optional + } if (entry.contains("icon")) { @@ -2382,6 +2398,8 @@ void MainWindow::processJson(QVariant json) { QVariantMap os = osv.toMap(); + OverrideJson(os); + QString basename = os.value("os_name").toString(); if (canInstallOs(basename, os)) { @@ -4829,7 +4847,7 @@ void MainWindow::on_actionBackup_triggered() unsupportedOses += "\n" + name; item->setCheckState(Qt::Unchecked); //Deselect the unsupported OSes } - if (entry.value("supports_backup","false").toString()=="update") + if (entry.value("supports_backup",false).toString()=="update") { QString name = CORE(entry.value("name").toString()); QListWidgetItem *witem = findItemByName(name); @@ -4842,7 +4860,7 @@ void MainWindow::on_actionBackup_triggered() } } - if (entry.value("supports_backup","false").toBool()==false) + if (entry.value("supports_backup",false).toBool()==false) { allSupported = false; unsupportedOses += "\n" + name; diff --git a/recovery/multiimagedownloadthread.cpp b/recovery/multiimagedownloadthread.cpp index 2630f72bc..672f7145b 100644 --- a/recovery/multiimagedownloadthread.cpp +++ b/recovery/multiimagedownloadthread.cpp @@ -71,8 +71,13 @@ bool MultiImageDownloadThread::processImage(const QString &folder, const QString QVariantList partitions = Json::loadFromFile(folder+"/partitions.json").toMap().value("partitions").toList(); foreach (QVariant pv, partitions) { + QString tarball; QVariantMap partition = pv.toMap(); - QString tarball = partition.value("download").toString(); + + tarball = partition.value("tarball").toString(); + if (tarball.isEmpty()) + tarball = partition.value("download").toString(); + bool emptyfs = partition.value("empty_fs", false).toBool(); QString csumType = getCsumType(partition); QString csum = getCsum(partition,csumType); @@ -87,7 +92,7 @@ bool MultiImageDownloadThread::processImage(const QString &folder, const QString /* If no tarball URL is specified, What are we doing here? */ emit error(tr("File '%1' does not need downloading").arg(tarball)); - return (false); + continue; //return true; } // Get the full pathname of the destination file diff --git a/recovery/multiimagedownloadthread.h b/recovery/multiimagedownloadthread.h index 54090f118..056130250 100644 --- a/recovery/multiimagedownloadthread.h +++ b/recovery/multiimagedownloadthread.h @@ -42,6 +42,9 @@ class MultiImageDownloadThread : public QThread void consolidate(); void newDrive(const QString& drive, eProgressMode mode); void imageWritten(QString Imagefile); + void finish(); + void idle(); + void cont(); public slots: