diff --git a/src/modules/tracking/TrackingJobs.cpp b/src/modules/tracking/TrackingJobs.cpp index 5366f6be0..c6c6cb396 100644 --- a/src/modules/tracking/TrackingJobs.cpp +++ b/src/modules/tracking/TrackingJobs.cpp @@ -97,3 +97,24 @@ void TrackingInstallJob::dataIsHere( QNetworkReply* reply ) cDebug() << "Install-tracking request OK"; reply->deleteLater(); } + +QString TrackingMachineNeonJob::prettyName() const +{ + return tr( "Machine feedback" ); +} + +QString TrackingMachineNeonJob::prettyDescription() const +{ + return prettyName(); +} + +QString TrackingMachineNeonJob::prettyStatusMessage() const +{ + return tr( "Configuring machine feedback." ); +} + +Calamares::JobResult TrackingMachineNeonJob::exec() +{ + return Calamares::JobResult::error( tr( "Error in machine feedback configuration." ), + tr( "Could not configure machine feedback correctly." ) ); +} diff --git a/src/modules/tracking/TrackingJobs.h b/src/modules/tracking/TrackingJobs.h index 2cf96488b..60c8a0f77 100644 --- a/src/modules/tracking/TrackingJobs.h +++ b/src/modules/tracking/TrackingJobs.h @@ -46,4 +46,15 @@ private: QNetworkAccessManager* m_networkManager; }; +class TrackingMachineNeonJob : public Calamares::Job +{ + Q_OBJECT +public: + QString prettyName() const override; + QString prettyDescription() const override; + QString prettyStatusMessage() const override; + Calamares::JobResult exec() override; +}; + + #endif diff --git a/src/modules/tracking/TrackingViewStep.cpp b/src/modules/tracking/TrackingViewStep.cpp index 9b5d3c1e5..3d3fe4c0d 100644 --- a/src/modules/tracking/TrackingViewStep.cpp +++ b/src/modules/tracking/TrackingViewStep.cpp @@ -31,6 +31,13 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( TrackingViewStepFactory, registerPlugin(); ) +/** @brief Is @p s a valid machine-tracking style. */ +static bool isValidStyle( const QString& s ) +{ + static QStringList knownStyles { "neon" }; + return knownStyles.contains( s ); +} + TrackingViewStep::TrackingViewStep( QObject* parent ) : Calamares::ViewStep( parent ) , m_widget( new TrackingPage ) @@ -117,7 +124,7 @@ TrackingViewStep::jobs() const Calamares::JobList l; cDebug() << "Creating tracking jobs .."; - if ( m_installTracking.enabled() ) + if ( m_installTracking.enabled() && !m_installTrackingUrl.isEmpty() ) { QString installUrl = m_installTrackingUrl; const auto s = CalamaresUtils::System::instance(); @@ -135,6 +142,13 @@ TrackingViewStep::jobs() const l.append( Calamares::job_ptr( new TrackingInstallJob( installUrl ) ) ); } + + if ( m_machineTracking.enabled() && !m_machineTrackingStyle.isEmpty() ) + { + Q_ASSERT( isValidStyle( m_machineTrackingStyle ) ); + if ( m_machineTrackingStyle == "neon" ) + l.append( Calamares::job_ptr( new TrackingMachineNeonJob() ) ); + } return l; } @@ -161,7 +175,6 @@ QVariantMap TrackingViewStep::setTrackingOption(const QVariantMap& configuration return config; } - void TrackingViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { @@ -170,7 +183,11 @@ TrackingViewStep::setConfigurationMap( const QVariantMap& configurationMap ) config = setTrackingOption( configurationMap, "install", TrackingType::InstallTracking ); m_installTrackingUrl = CalamaresUtils::getString( config, "url" ); - setTrackingOption( configurationMap, "machine", TrackingType::MachineTracking ); + config = setTrackingOption( configurationMap, "machine", TrackingType::MachineTracking ); + auto s = CalamaresUtils::getString( config, "style" ); + if ( isValidStyle( s ) ) + m_machineTrackingStyle = s; + setTrackingOption( configurationMap, "user", TrackingType::UserTracking ); m_widget->setGeneralPolicy( CalamaresUtils::getString( configurationMap, "policy" ) ); diff --git a/src/modules/tracking/TrackingViewStep.h b/src/modules/tracking/TrackingViewStep.h index ba0b6a6ba..5f2f58af1 100644 --- a/src/modules/tracking/TrackingViewStep.h +++ b/src/modules/tracking/TrackingViewStep.h @@ -63,6 +63,7 @@ private: TrackingPage* m_widget; QString m_installTrackingUrl; + QString m_machineTrackingStyle; struct TrackingEnabled {