From 0b1c292b1158f62dd2de6ab9d6960adbc764cd5f Mon Sep 17 00:00:00 2001 From: Casper Jeukendrup <48658420+cbjeukendrup@users.noreply.github.com> Date: Mon, 3 Jul 2023 01:28:44 +0200 Subject: [PATCH] Completely block opening files from newer versions Basically remove the "Open anyway" button --- src/engraving/engravingerrors.h | 3 +-- .../internal/projectactionscontroller.cpp | 19 ++++++++++++++----- .../internal/projectactionscontroller.h | 3 ++- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/engraving/engravingerrors.h b/src/engraving/engravingerrors.h index 459f6b0964cdb..1ac641775783d 100644 --- a/src/engraving/engravingerrors.h +++ b/src/engraving/engravingerrors.h @@ -81,8 +81,7 @@ inline Ret make_ret(Err err, const io::path_t& filePath = "") break; case Err::FileTooNew: text = mtrc("engraving", "This file was saved using a newer version of MuseScore. " - "Visit the MuseScore website to obtain the latest version.") - .arg(u"https://musescore.org"); + "Please visit musescore.org to obtain the latest version."); break; case Err::FileOld300Format: text = mtrc("engraving", "This file was last saved in a development version of 3.0."); diff --git a/src/project/internal/projectactionscontroller.cpp b/src/project/internal/projectactionscontroller.cpp index 8a6b53e3948d0..9925183afe104 100644 --- a/src/project/internal/projectactionscontroller.cpp +++ b/src/project/internal/projectactionscontroller.cpp @@ -238,7 +238,7 @@ RetVal ProjectActionsController::loadProject(const io::path return ret; } - if (checkCanIgnoreError(ret, io::filename(loadPath).toString())) { + if (checkCanIgnoreError(ret, loadPath)) { ret = project->load(loadPath, "" /*stylePath*/, true /*forceMode*/, format); } @@ -1375,7 +1375,7 @@ void ProjectActionsController::showScoreDownloadError(const Ret& ret) interactive()->warning(title, message); } -bool ProjectActionsController::checkCanIgnoreError(const Ret& ret, const String& projectName) +bool ProjectActionsController::checkCanIgnoreError(const Ret& ret, const io::path_t& filepath) { if (ret) { return true; @@ -1383,13 +1383,15 @@ bool ProjectActionsController::checkCanIgnoreError(const Ret& ret, const String& switch (static_cast(ret.code())) { case engraving::Err::FileTooOld: - case engraving::Err::FileTooNew: case engraving::Err::FileOld300Format: return askIfUserAgreesToOpenProjectWithIncompatibleVersion(ret.text()); + case engraving::Err::FileTooNew: + warnFileTooNew(filepath); + return false; case engraving::Err::FileCorrupted: - return askIfUserAgreesToOpenCorruptedProject(projectName, ret.text()); + return askIfUserAgreesToOpenCorruptedProject(io::filename(filepath).toString(), ret.text()); default: - warnProjectCannotBeOpened(projectName, ret.text()); + warnProjectCannotBeOpened(io::filename(filepath).toString(), ret.text()); return false; } } @@ -1406,6 +1408,13 @@ bool ProjectActionsController::askIfUserAgreesToOpenProjectWithIncompatibleVersi return btn == openAnywayBtn.btn; } +void ProjectActionsController::warnFileTooNew(const io::path_t& filepath) +{ + interactive()->error(qtrc("project", "Cannot read file %1").arg(filepath.toQString()).toStdString(), + trc("project", "This file was saved using a newer version of MuseScore. " + "Please visit musescore.org to obtain the latest version.")); +} + bool ProjectActionsController::askIfUserAgreesToOpenCorruptedProject(const String& projectName, const std::string& errorText) { std::string title = mtrc("project", "File “%1” is corrupted").arg(projectName).toStdString(); diff --git a/src/project/internal/projectactionscontroller.h b/src/project/internal/projectactionscontroller.h index 78f4dc188ae9c..c1bccef43c538 100644 --- a/src/project/internal/projectactionscontroller.h +++ b/src/project/internal/projectactionscontroller.h @@ -103,8 +103,9 @@ class ProjectActionsController : public IProjectFilesController, public QObject, void showScoreDownloadError(const Ret& ret); - bool checkCanIgnoreError(const Ret& ret, const String& projectName); + bool checkCanIgnoreError(const Ret& ret, const io::path_t& filepath); bool askIfUserAgreesToOpenProjectWithIncompatibleVersion(const std::string& errorText); + void warnFileTooNew(const io::path_t& filepath); bool askIfUserAgreesToOpenCorruptedProject(const String& projectName, const std::string& errorText); void warnProjectCannotBeOpened(const String& projectName, const std::string& errorText);