From 2d095572974ec6021a8ed890cd014a0caa73644e Mon Sep 17 00:00:00 2001 From: Camilo Higuita Date: Tue, 24 Mar 2020 09:26:24 -0500 Subject: [PATCH 1/3] update wlecome to latest --- src/modules/welcome/CMakeLists.txt | 2 - src/modules/welcome/Config.cpp | 49 ++++++++++++++++++--- src/modules/welcome/Config.h | 30 ++++++++++--- src/modules/welcomeq/WelcomeQmlViewStep.cpp | 38 +++++++++++++++- 4 files changed, 103 insertions(+), 16 deletions(-) diff --git a/src/modules/welcome/CMakeLists.txt b/src/modules/welcome/CMakeLists.txt index 3298ba716..9700b1601 100644 --- a/src/modules/welcome/CMakeLists.txt +++ b/src/modules/welcome/CMakeLists.txt @@ -12,8 +12,6 @@ else() add_definitions( -DWITHOUT_LIBPARTED ) endif() -include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) - set( CHECKER_SOURCES checker/CheckerContainer.cpp checker/GeneralRequirements.cpp diff --git a/src/modules/welcome/Config.cpp b/src/modules/welcome/Config.cpp index 1df4e1cab..2fa0ce156 100644 --- a/src/modules/welcome/Config.cpp +++ b/src/modules/welcome/Config.cpp @@ -27,9 +27,10 @@ void RequirementsModel::setRequirementsList( const Calamares::RequirementsList& requirements ) { + CALAMARES_RETRANSLATE_SLOT( &RequirementsModel::retranslate ) + emit beginResetModel(); m_requierements = requirements; - m_satisfiedRequirements = true; auto isUnSatisfied = []( const Calamares::RequirementEntry& e ) { return !e.satisfied; }; auto isMandatoryAndUnSatisfied = []( const Calamares::RequirementEntry& e ) { return e.mandatory && !e.satisfied; }; @@ -115,7 +116,7 @@ Config::retranslate() m_genericWelcomeMessage = message.arg( *Calamares::Branding::VersionedName ); emit genericWelcomeMessageChanged(); -// ui->supportButton->setText( tr( "%1 support" ).arg( *Calamares::Branding::ShortProductName ) ); + m_requirementsModel->retranslate(); } CalamaresUtils::Locale::LabelModel* @@ -231,6 +232,7 @@ QString Config::donateUrl() const void Config::setDonateUrl(const QString& url) { m_donateUrl = url; + emit donateUrlChanged(); } QString Config::knownIssuesUrl() const @@ -241,11 +243,13 @@ QString Config::knownIssuesUrl() const void Config::setKnownIssuesUrl(const QString& url) { m_knownIssuesUrl = url; + emit knownIssuesUrlChanged(); } void Config::setReleaseNotesUrl(const QString& url) { m_releaseNotesUrl = url; + emit releaseNotesUrlChanged(); } QString Config::releaseNotesUrl() const @@ -261,13 +265,46 @@ QString Config::supportUrl() const void Config::setSupportUrl(const QString& url) { m_supportUrl = url; + emit supportUrlChanged(); } +void RequirementsModel::retranslate() +{ + if ( !m_satisfiedRequirements ) + { + QString message; + const bool setup = Calamares::Settings::instance()->isSetupMode(); + if ( !m_satisfiedMandatory ) + { + message = setup ? tr( "This computer does not satisfy the minimum " + "requirements for setting up %1.
" + "Setup cannot continue. " + "Details..." ) + : tr( "This computer does not satisfy the minimum " + "requirements for installing %1.
" + "Installation cannot continue. " + "Details..." ); + }else + { + message = setup ? tr( "This computer does not satisfy some of the " + "recommended requirements for setting up %1.
" + "Setup can continue, but some features " + "might be disabled." ) + : tr( "This computer does not satisfy some of the " + "recommended requirements for installing %1.
" + "Installation can continue, but some features " + "might be disabled." ); + } + m_warningMessage = message.arg( *Calamares::Branding::ShortVersionedName ); + }else + { + m_warningMessage = tr( "This program will ask you some questions and " + "set up %2 on your computer." ) + .arg( *Calamares::Branding::ProductName ); + } - - - - + emit warningMessageChanged(); +} diff --git a/src/modules/welcome/Config.h b/src/modules/welcome/Config.h index 71f2120f9..2c7674ecd 100644 --- a/src/modules/welcome/Config.h +++ b/src/modules/welcome/Config.h @@ -32,6 +32,7 @@ class RequirementsModel : public QAbstractListModel Q_PROPERTY(bool satisfiedRequirements READ satisfiedRequirements NOTIFY satisfiedRequirementsChanged FINAL) Q_PROPERTY(bool satisfiedMandatory READ satisfiedMandatory NOTIFY satisfiedMandatoryChanged FINAL) + Q_PROPERTY( QString warningMessage READ warningMessage NOTIFY warningMessageChanged FINAL ) public: enum Roles : short @@ -71,6 +72,13 @@ public: return m_requierements.count(); } + QString warningMessage() const + { + return m_warningMessage; + } + + void retranslate(); + QVariant data(const QModelIndex& index, int role) const override; protected: @@ -81,9 +89,12 @@ private: bool m_satisfiedRequirements = false; bool m_satisfiedMandatory = false; + QString m_warningMessage; + signals: void satisfiedRequirementsChanged(bool value); void satisfiedMandatoryChanged(); + void warningMessageChanged(); }; @@ -101,10 +112,12 @@ class Config : public QObject Q_PROPERTY( QString genericWelcomeMessage MEMBER m_genericWelcomeMessage NOTIFY genericWelcomeMessageChanged FINAL ) Q_PROPERTY( QString warningMessage MEMBER m_warningMessage CONSTANT FINAL ) - Q_PROPERTY(QString supportUrl MEMBER m_supportUrl CONSTANT FINAL) - Q_PROPERTY(QString knownIssuesUrl MEMBER m_knownIssuesUrl CONSTANT FINAL) - Q_PROPERTY(QString releaseNotesUrl MEMBER m_releaseNotesUrl CONSTANT FINAL) - Q_PROPERTY(QString donateUrl MEMBER m_donateUrl CONSTANT FINAL) + Q_PROPERTY( QString supportUrl MEMBER m_supportUrl NOTIFY supportUrlChanged FINAL ) + Q_PROPERTY( QString knownIssuesUrl MEMBER m_knownIssuesUrl NOTIFY knownIssuesUrlChanged FINAL ) + Q_PROPERTY( QString releaseNotesUrl MEMBER m_releaseNotesUrl NOTIFY releaseNotesUrlChanged FINAL ) + Q_PROPERTY (QString donateUrl MEMBER m_donateUrl NOTIFY donateUrlChanged FINAL ) + + Q_PROPERTY( bool isNextEnabled MEMBER m_isNextEnabled NOTIFY isNextEnabledChanged FINAL ) public: Config( QObject* parent = nullptr ); @@ -144,9 +157,7 @@ private: bool m_isNextEnabled = false; CalamaresUtils::Locale::LabelModel* m_languages; - QString m_genericWelcomeMessage = tr("This program will ask you some questions and set up your installation"); - - QString m_warningMessage = tr("This program does not satisfy the minimum requirements for installing.\nInstallation can not continue"); + QString m_genericWelcomeMessage; QString m_supportUrl; QString m_knownIssuesUrl; @@ -158,6 +169,11 @@ signals: void localeIndexChanged( int localeIndex ); void isNextEnabledChanged( bool isNextEnabled ); void genericWelcomeMessageChanged(); + void supportUrlChanged(); + void knownIssuesUrlChanged(); + void releaseNotesUrlChanged(); + void donateUrlChanged(); + }; #endif diff --git a/src/modules/welcomeq/WelcomeQmlViewStep.cpp b/src/modules/welcomeq/WelcomeQmlViewStep.cpp index ef49dea32..0961ce67f 100644 --- a/src/modules/welcomeq/WelcomeQmlViewStep.cpp +++ b/src/modules/welcomeq/WelcomeQmlViewStep.cpp @@ -41,7 +41,7 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( WelcomeQmlViewStepFactory, registerPlugin< WelcomeQmlViewStep::WelcomeQmlViewStep( QObject* parent ) : Calamares::QmlViewStep(parent ) - , m_config( new Config( ) ) // the qml singleton takes ownership and deletes it + , m_config( new Config( this ) ) // the qml singleton takes ownership and deletes it // , m_nextEnabled( false ) , m_requirementsChecker( new GeneralRequirements( this ) ) @@ -98,10 +98,46 @@ WelcomeQmlViewStep::jobs() const return Calamares::JobList(); } +/** @brief Look up a URL for a button + * + * Looks up @p key in @p map; if it is a *boolean* value, then + * assume an old-style configuration, and fetch the string from + * the branding settings @p e. If it is a string, not a boolean, + * use it as-is. If not found, or a weird type, returns empty. + * + * This allows switching the showKnownIssuesUrl and similar settings + * in welcome.conf from a boolean (deferring to branding) to an + * actual string for immediate use. Empty strings, as well as + * "false" as a setting, will hide the buttons as before. + */ +static QString +jobOrBrandingSetting( Calamares::Branding::StringEntry e, const QVariantMap& map, const QString& key ) +{ + if ( !map.contains( key ) ) + { + return QString(); + } + auto v = map.value( key ); + if ( v.type() == QVariant::Bool ) + { + return v.toBool() ? ( *e ) : QString(); + } + if ( v.type() == QVariant::String ) + { + return v.toString(); + } + + return QString(); +} + void WelcomeQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { using Calamares::Branding; + m_config->setSupportUrl( jobOrBrandingSetting( Branding::SupportUrl, configurationMap, "showSupportUrl" ) ); + m_config->setKnownIssuesUrl( jobOrBrandingSetting( Branding::KnownIssuesUrl, configurationMap, "showKnownIssuesUrl" ) ); + m_config->setReleaseNotesUrl( jobOrBrandingSetting( Branding::ReleaseNotesUrl, configurationMap, "showReleaseNotesUrl" ) ); + m_config->setDonateUrl( CalamaresUtils::getString( configurationMap, "showDonateUrl" ) ); // TODO: expand Config class and set the remaining fields // with the configurationMap all those properties can be accesed withouth having to declare a property, get and setter for each From 1c0e69e1c21cb40eeb3a2537739427ca1c095748 Mon Sep 17 00:00:00 2001 From: Camilo Higuita Date: Tue, 24 Mar 2020 09:33:09 -0500 Subject: [PATCH 2/3] wraning message is not from conf but form the requirements model --- src/modules/welcome/Config.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/welcome/Config.h b/src/modules/welcome/Config.h index 2c7674ecd..043866eb6 100644 --- a/src/modules/welcome/Config.h +++ b/src/modules/welcome/Config.h @@ -110,7 +110,6 @@ class Config : public QObject Q_PROPERTY (int localeIndex READ localeIndex WRITE setLocaleIndex NOTIFY localeIndexChanged) Q_PROPERTY( QString genericWelcomeMessage MEMBER m_genericWelcomeMessage NOTIFY genericWelcomeMessageChanged FINAL ) - Q_PROPERTY( QString warningMessage MEMBER m_warningMessage CONSTANT FINAL ) Q_PROPERTY( QString supportUrl MEMBER m_supportUrl NOTIFY supportUrlChanged FINAL ) Q_PROPERTY( QString knownIssuesUrl MEMBER m_knownIssuesUrl NOTIFY knownIssuesUrlChanged FINAL ) From b6b9f888fcc4db6969a331a86c05f5560ab17db1 Mon Sep 17 00:00:00 2001 From: Camilo Higuita Date: Tue, 24 Mar 2020 10:39:29 -0500 Subject: [PATCH 3/3] correct typo --- src/modules/welcome/Config.cpp | 77 ++++++++++++++++++++-------------- src/modules/welcome/Config.h | 9 ++-- 2 files changed, 52 insertions(+), 34 deletions(-) diff --git a/src/modules/welcome/Config.cpp b/src/modules/welcome/Config.cpp index 2fa0ce156..fdc532d7f 100644 --- a/src/modules/welcome/Config.cpp +++ b/src/modules/welcome/Config.cpp @@ -30,13 +30,13 @@ RequirementsModel::setRequirementsList( const Calamares::RequirementsList& requi CALAMARES_RETRANSLATE_SLOT( &RequirementsModel::retranslate ) emit beginResetModel(); - m_requierements = requirements; + m_requirements = requirements; auto isUnSatisfied = []( const Calamares::RequirementEntry& e ) { return !e.satisfied; }; auto isMandatoryAndUnSatisfied = []( const Calamares::RequirementEntry& e ) { return e.mandatory && !e.satisfied; }; - m_satisfiedRequirements = std::none_of( m_requierements.begin(), m_requierements.end(), isUnSatisfied ); - m_satisfiedMandatory = std::none_of( m_requierements.begin(), m_requierements.end(), isMandatoryAndUnSatisfied ); + m_satisfiedRequirements = std::none_of( m_requirements.begin(), m_requirements.end(), isUnSatisfied ); + m_satisfiedMandatory = std::none_of( m_requirements.begin(), m_requirements.end(), isMandatoryAndUnSatisfied ); emit satisfiedRequirementsChanged(m_satisfiedRequirements); emit satisfiedMandatoryChanged(); @@ -46,13 +46,13 @@ RequirementsModel::setRequirementsList( const Calamares::RequirementsList& requi int RequirementsModel::rowCount( const QModelIndex& ) const { - return m_requierements.count(); + return m_requirements.count(); } QVariant RequirementsModel::data( const QModelIndex& index, int role ) const { - const auto requirement = m_requierements.at( index.row() ); + const auto requirement = m_requirements.at( index.row() ); switch ( role ) { @@ -92,28 +92,12 @@ Config::Config( QObject* parent ) : QObject( parent ) initLanguages(); CALAMARES_RETRANSLATE_SLOT( &Config::retranslate ) - } void Config::retranslate() { - QString message; - - if ( Calamares::Settings::instance()->isSetupMode() ) - { - message = Calamares::Branding::instance()->welcomeStyleCalamares() - ? tr( "

Welcome to the Calamares setup program for %1.

" ) - : tr( "

Welcome to %1 setup.

" ); - } - else - { - message = Calamares::Branding::instance()->welcomeStyleCalamares() - ? tr( "

Welcome to the Calamares installer for %1.

" ) - : tr( "

Welcome to the %1 installer.

" ); - } - - m_genericWelcomeMessage = message.arg( *Calamares::Branding::VersionedName ); + m_genericWelcomeMessage = genericWelcomeMessage().arg( *Calamares::Branding::VersionedName ); emit genericWelcomeMessageChanged(); m_requirementsModel->retranslate(); @@ -224,51 +208,60 @@ Config::setIsNextEnabled( const bool& isNextEnabled ) emit isNextEnabledChanged( m_isNextEnabled ); } -QString Config::donateUrl() const +QString +Config::donateUrl() const { return m_donateUrl; } -void Config::setDonateUrl(const QString& url) +void +Config::setDonateUrl(const QString& url) { m_donateUrl = url; emit donateUrlChanged(); } -QString Config::knownIssuesUrl() const +QString +Config::knownIssuesUrl() const { return m_knownIssuesUrl; } -void Config::setKnownIssuesUrl(const QString& url) +void +Config::setKnownIssuesUrl(const QString& url) { m_knownIssuesUrl = url; emit knownIssuesUrlChanged(); } -void Config::setReleaseNotesUrl(const QString& url) +void +Config::setReleaseNotesUrl(const QString& url) { m_releaseNotesUrl = url; emit releaseNotesUrlChanged(); } -QString Config::releaseNotesUrl() const +QString +Config::releaseNotesUrl() const { return m_releaseNotesUrl; } -QString Config::supportUrl() const +QString +Config::supportUrl() const { return m_supportUrl; } -void Config::setSupportUrl(const QString& url) +void +Config::setSupportUrl(const QString& url) { m_supportUrl = url; emit supportUrlChanged(); } -void RequirementsModel::retranslate() +void +RequirementsModel::retranslate() { if ( !m_satisfiedRequirements ) { @@ -308,3 +301,25 @@ void RequirementsModel::retranslate() emit warningMessageChanged(); } + +QString +Config::genericWelcomeMessage() +{ + QString message; + + if ( Calamares::Settings::instance()->isSetupMode() ) + { + message = Calamares::Branding::instance()->welcomeStyleCalamares() + ? tr( "

Welcome to the Calamares setup program for %1.

" ) + : tr( "

Welcome to %1 setup.

" ); + } + else + { + message = Calamares::Branding::instance()->welcomeStyleCalamares() + ? tr( "

Welcome to the Calamares installer for %1.

" ) + : tr( "

Welcome to the %1 installer.

" ); + } + + return message; +} + diff --git a/src/modules/welcome/Config.h b/src/modules/welcome/Config.h index 043866eb6..a6de4c5dd 100644 --- a/src/modules/welcome/Config.h +++ b/src/modules/welcome/Config.h @@ -61,7 +61,7 @@ public: if(index > count() || index < 0) return *(new Calamares::RequirementEntry()); - return m_requierements.at(index); + return m_requirements.at(index); } @@ -69,7 +69,7 @@ public: int rowCount(const QModelIndex&) const override; int count() const { - return m_requierements.count(); + return m_requirements.count(); } QString warningMessage() const @@ -85,7 +85,7 @@ protected: QHash roleNames() const override; private: - Calamares::RequirementsList m_requierements; + Calamares::RequirementsList m_requirements; bool m_satisfiedRequirements = false; bool m_satisfiedMandatory = false; @@ -141,6 +141,9 @@ public: QString donateUrl() const; void setDonateUrl(const QString &url); + QString genericWelcomeMessage(); + + public slots: CalamaresUtils::Locale::LabelModel* languagesModel() const; void retranslate();