From bed884c9718a4a75bce1356cc33d4bee40c7892e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 25 May 2020 09:21:47 -0400 Subject: [PATCH] [tracking] Move setup of initial-tracking states to Config - the *default* level from the config, can be handled inside the Config object as well; remove TrackingPage method that does the same. --- src/modules/tracking/Config.cpp | 59 +++++++++++++++++++++++ src/modules/tracking/Config.h | 3 ++ src/modules/tracking/TrackingType.h | 2 +- src/modules/tracking/TrackingViewStep.cpp | 23 --------- 4 files changed, 63 insertions(+), 24 deletions(-) diff --git a/src/modules/tracking/Config.cpp b/src/modules/tracking/Config.cpp index 8b5decd76..2dc91c2a9 100644 --- a/src/modules/tracking/Config.cpp +++ b/src/modules/tracking/Config.cpp @@ -18,11 +18,30 @@ #include "Config.h" +#include "TrackingType.h" + #include "utils/Logger.h" #include "utils/Variant.h" #include +const NamedEnumTable< TrackingType >& +trackingNames() +{ + // *INDENT-OFF* + // clang-format off + static const NamedEnumTable< TrackingType > names { + { QStringLiteral( "none" ), TrackingType::NoTracking }, + { QStringLiteral( "install" ), TrackingType::InstallTracking }, + { QStringLiteral( "machine" ), TrackingType::MachineTracking }, + { QStringLiteral( "user" ), TrackingType::UserTracking } + }; + // clang-format on + // *INDENT-ON* + + return names; +} + TrackingStyleConfig::TrackingStyleConfig( QObject* parent ) : QObject( parent ) { @@ -154,6 +173,26 @@ Config::Config( QObject* parent ) { } +static void +enableLevelsBelow( Config* config, TrackingType level ) +{ + switch( level ) + { + case TrackingType::UserTracking: + config->userTracking()->setTracking( TrackingStyleConfig::TrackingState::EnabledByUser ); + FALLTHRU; + case TrackingType::MachineTracking: + config->machineTracking()->setTracking( TrackingStyleConfig::TrackingState::EnabledByUser ); + FALLTHRU; + case TrackingType::InstallTracking: + config->installTracking()->setTracking( TrackingStyleConfig::TrackingState::EnabledByUser ); + break; + case TrackingType::NoTracking: + config->noTracking( true ); + break; + } +} + void Config::setConfigurationMap( const QVariantMap& configurationMap ) { @@ -183,6 +222,14 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) { m_userTracking->setConfigurationMap( subconfig ); } + + auto level = trackingNames().find( CalamaresUtils::getString( configurationMap, "default" ), success ); + if ( !success ) + { + cWarning() << "Default tracking level unknown:" << CalamaresUtils::getString( configurationMap, "default" ); + level = TrackingType::NoTracking; + } + enableLevelsBelow( this, level ); } QString @@ -190,3 +237,15 @@ Config::generalPolicy() const { return m_generalPolicy; } + +void +Config::noTracking( bool switchOffAllTracking ) +{ + if ( !switchOffAllTracking ) + { + return; + } + m_installTracking->setTracking( TrackingStyleConfig::TrackingState::DisabledByUser ); + m_machineTracking->setTracking( TrackingStyleConfig::TrackingState::DisabledByUser ); + m_userTracking->setTracking( TrackingStyleConfig::TrackingState::DisabledByUser ); +} diff --git a/src/modules/tracking/Config.h b/src/modules/tracking/Config.h index bd9ba520e..26dcf2f4f 100644 --- a/src/modules/tracking/Config.h +++ b/src/modules/tracking/Config.h @@ -173,6 +173,9 @@ public Q_SLOTS: MachineTrackingConfig* machineTracking() const { return m_machineTracking; } UserTrackingConfig* userTracking() const { return m_userTracking; } + /// @brief Call with @c true to turn off all the trackings + void noTracking( bool ); + signals: void generalPolicyChanged( QString ); diff --git a/src/modules/tracking/TrackingType.h b/src/modules/tracking/TrackingType.h index 04e8d2ebe..22e3157d6 100644 --- a/src/modules/tracking/TrackingType.h +++ b/src/modules/tracking/TrackingType.h @@ -29,7 +29,7 @@ enum class TrackingType UserTracking // Track the user, ongoing }; -// Implemented in TrackingViewStep.cpp +// Implemented in Config.cpp const NamedEnumTable< TrackingType >& trackingNames(); #endif //TRACKINGTYPE_H diff --git a/src/modules/tracking/TrackingViewStep.cpp b/src/modules/tracking/TrackingViewStep.cpp index 9942c2981..491fef12a 100644 --- a/src/modules/tracking/TrackingViewStep.cpp +++ b/src/modules/tracking/TrackingViewStep.cpp @@ -127,28 +127,5 @@ void TrackingViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { m_config->setConfigurationMap( configurationMap ); - - bool ok; - m_widget->setTrackingLevel( trackingNames().find( CalamaresUtils::getString( configurationMap, "default" ), ok ) ); - if ( !ok ) - { - cWarning() << "Default tracking level unknown:" << CalamaresUtils::getString( configurationMap, "default" ); - } } -const NamedEnumTable< TrackingType >& -trackingNames() -{ - // *INDENT-OFF* - // clang-format off - static const NamedEnumTable< TrackingType > names { - { QStringLiteral( "none" ), TrackingType::NoTracking }, - { QStringLiteral( "install" ), TrackingType::InstallTracking }, - { QStringLiteral( "machine" ), TrackingType::MachineTracking }, - { QStringLiteral( "user" ), TrackingType::UserTracking } - }; - // clang-format on - // *INDENT-ON* - - return names; -}