From b899a27c863da4fc294edba25c798344b6909fc0 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 20 Jul 2022 19:16:15 +0200 Subject: StudioWelcome: Disable welcome page during download Change-Id: Ic85dfd79e4c43822805ce2a7f392f9b0a5d2a923 Reviewed-by: Tim Jenssen Reviewed-by: Qt CI Bot --- src/plugins/studiowelcome/examplecheckout.cpp | 16 +++++++++++++--- src/plugins/studiowelcome/examplecheckout.h | 3 ++- src/plugins/studiowelcome/studiowelcomeplugin.cpp | 9 ++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/plugins/studiowelcome/examplecheckout.cpp b/src/plugins/studiowelcome/examplecheckout.cpp index cdb0e878c39..9131009f563 100644 --- a/src/plugins/studiowelcome/examplecheckout.cpp +++ b/src/plugins/studiowelcome/examplecheckout.cpp @@ -456,21 +456,28 @@ DataModelDownloader::DataModelDownloader(QObject * /* parent */) &FileDownloader::progressChanged, this, &DataModelDownloader::progressChanged); + + connect(&m_fileDownloader, + &FileDownloader::downloadFailed, + this, + &DataModelDownloader::downloadFailed); } -void DataModelDownloader::start() +bool DataModelDownloader::start() { if (!enableDownload()) { m_available = false; emit availableChanged(); - return; + return false; } m_fileDownloader.setUrl(QUrl::fromUserInput( "https://download.qt.io/learning/examples/qtdesignstudio/dataImports.zip")); - connect(&m_fileDownloader, &FileDownloader::availableChanged, this, [this]() { + bool started = false; + + connect(&m_fileDownloader, &FileDownloader::availableChanged, this, [this, &started]() { m_available = m_fileDownloader.available(); @@ -484,6 +491,8 @@ void DataModelDownloader::start() if (!m_forceDownload && (m_fileDownloader.lastModified() <= m_birthTime)) return; + started = true; + m_fileDownloader.start(); connect(&m_fileDownloader, &FileDownloader::finishedChanged, this, [this]() { if (m_fileDownloader.finished()) { @@ -501,6 +510,7 @@ void DataModelDownloader::start() } }); }); + return started; } bool DataModelDownloader::exists() const diff --git a/src/plugins/studiowelcome/examplecheckout.h b/src/plugins/studiowelcome/examplecheckout.h index fae0fea3368..42b8b9a41b9 100644 --- a/src/plugins/studiowelcome/examplecheckout.h +++ b/src/plugins/studiowelcome/examplecheckout.h @@ -163,7 +163,7 @@ class DataModelDownloader : public QObject public: explicit DataModelDownloader(QObject *parent = nullptr); - void start(); + bool start(); bool exists() const; bool available() const; Utils::FilePath targetFolder() const; @@ -174,6 +174,7 @@ signals: void finished(); void availableChanged(); void progressChanged(); + void downloadFailed(); private: FileDownloader m_fileDownloader; diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index 3fe21396a99..33d29afa959 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -656,9 +656,16 @@ WelcomeMode::WelcomeMode() m_modeWidget->engine()->clearComponentCache(); m_modeWidget->setSource(source); m_modeWidget->rootObject()->setProperty("loadingProgress", 100); + m_modeWidget->setEnabled(true); }); - m_dataModelDownloader->start(); + connect(m_dataModelDownloader, &DataModelDownloader::downloadFailed, this, [this]() { + m_modeWidget->setEnabled(true); + }); + + + if (m_dataModelDownloader->start()) + m_modeWidget->setEnabled(false); /* connect(Core::ModeManager::instance(), &Core::ModeManager::currentModeChanged, this, [this](Utils::Id mode){ -- cgit v1.2.3