From a0e8f76348c6c64de60829d6836aeac93b542898 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 8 Nov 2017 07:46:33 -0500 Subject: [PATCH] [tracking] Enable policy websites Each kind of tracking has an associated webpage / URL describing the policy for that tracking. The Calamares User Guide has some generic information. When the user clicks on the Help (?) button in a tracking-option block, go to that URL. --- src/modules/tracking/TrackingPage.cpp | 31 ++++++++++++++++++++++- src/modules/tracking/TrackingPage.h | 2 ++ src/modules/tracking/TrackingViewStep.cpp | 6 ++++- src/modules/tracking/TrackingViewStep.h | 2 +- src/modules/tracking/page_trackingstep.ui | 6 ++--- src/modules/tracking/tracking.conf | 9 ++++++- 6 files changed, 49 insertions(+), 7 deletions(-) diff --git a/src/modules/tracking/TrackingPage.cpp b/src/modules/tracking/TrackingPage.cpp index e6f06c3ed..1ad4a26db 100644 --- a/src/modules/tracking/TrackingPage.cpp +++ b/src/modules/tracking/TrackingPage.cpp @@ -44,6 +44,7 @@ TrackingPage::TrackingPage(QWidget *parent) ui->setupUi( this ); CALAMARES_RETRANSLATE( + ui->retranslateUi( this ); ui->installExplanation->setText( tr( "Installation tracking helps %1 count how many people use it. If you enable install-tracking, at the end of the installation, information about your hardware will be sent one time only to our servers. To see what will be sent, click on the help-icon." ).arg( *StringEntry::ShortProductName ) ); ui->machineExplanation->setText( tr( "Machine tracking helps %1 count how many people use it on an ongoing basis. If you enable machine-tracking, the system will send limited information about your hardware and installed software periodically to our servers. For information about the kind of information being sent, click on the help icon." ).arg( *StringEntry::ShortProductName ) ); ui->userExplanation->setText( tr( "User tracking helps %1 understand how people use the system and the applications. If you enable user-tracking, the system will send information about your use of the installed software regularly to our servers. For information about the kind of information being sent and the policies that apply, click on the help icon." ).arg( *StringEntry::ShortProductName ) ); @@ -81,7 +82,7 @@ void TrackingPage::setTrackingOption(TrackingType t, bool setting, bool user) check->setChecked( user ); } else - cDebug() << " .. unknown option" << int(t); + cDebug() << "WARNING: unknown tracking option" << int(t); } bool TrackingPage::getTrackingOption(TrackingType t) @@ -103,3 +104,31 @@ bool TrackingPage::getTrackingOption(TrackingType t) return (check != nullptr) && check->isChecked(); } + +void TrackingPage::setTrackingPolicy(TrackingType t, QString url) +{ + QToolButton *button = nullptr; + switch( t ) + { + case TrackingType::InstallTracking: + button = ui->installPolicyButton; + break; + case TrackingType::MachineTracking: + button = ui->machinePolicyButton; + break; + case TrackingType::UserTracking: + button = ui->userPolicyButton; + break; + } + + if ( button != nullptr ) + if ( url.isEmpty() ) + button->hide(); + else + { + connect( button, &QToolButton::clicked, [url]{ QDesktopServices::openUrl( url ); } ); + cDebug() << "Tracking policy" << int(t) << "set to" << url; + } + else + cDebug() << "WARNING: unknown tracking option" << int(t); +} diff --git a/src/modules/tracking/TrackingPage.h b/src/modules/tracking/TrackingPage.h index 86800c897..8839b8598 100644 --- a/src/modules/tracking/TrackingPage.h +++ b/src/modules/tracking/TrackingPage.h @@ -46,6 +46,8 @@ public: */ bool getTrackingOption( TrackingType t ); + void setTrackingPolicy( TrackingType t, QString url ); + private: Ui::TrackingPage* ui; }; diff --git a/src/modules/tracking/TrackingViewStep.cpp b/src/modules/tracking/TrackingViewStep.cpp index 54ecf9e6a..ad946a3fd 100644 --- a/src/modules/tracking/TrackingViewStep.cpp +++ b/src/modules/tracking/TrackingViewStep.cpp @@ -24,6 +24,7 @@ #include "TrackingViewStep.h" #include "TrackingPage.h" +#include #include CALAMARES_PLUGIN_FACTORY_DEFINITION( TrackingViewStepFactory, registerPlugin(); ) @@ -116,7 +117,7 @@ TrackingViewStep::jobs() const } -void TrackingViewStep::setTrackingOption(const QVariantMap& configurationMap, const QString& key, TrackingType t) +QVariantMap TrackingViewStep::setTrackingOption(const QVariantMap& configurationMap, const QString& key, TrackingType t) { cDebug() << "Tracking configuration" << key; @@ -138,6 +139,9 @@ void TrackingViewStep::setTrackingOption(const QVariantMap& configurationMap, co trackingConfiguration.userEnabled = userEnabled; m_widget->setTrackingOption(t, settingEnabled, userEnabled); + m_widget->setTrackingPolicy(t, CalamaresUtils::getString( config, "policy" ) ); + + return config; } diff --git a/src/modules/tracking/TrackingViewStep.h b/src/modules/tracking/TrackingViewStep.h index fdb402672..b468fc611 100644 --- a/src/modules/tracking/TrackingViewStep.h +++ b/src/modules/tracking/TrackingViewStep.h @@ -59,7 +59,7 @@ public: void setConfigurationMap( const QVariantMap& configurationMap ) override; private: - void setTrackingOption( const QVariantMap& configurationMap, const QString& key, TrackingType t ); + QVariantMap setTrackingOption( const QVariantMap& configurationMap, const QString& key, TrackingType t ); struct TrackingEnabled { diff --git a/src/modules/tracking/page_trackingstep.ui b/src/modules/tracking/page_trackingstep.ui index 9dd5aae2b..fdbbefce0 100644 --- a/src/modules/tracking/page_trackingstep.ui +++ b/src/modules/tracking/page_trackingstep.ui @@ -62,7 +62,7 @@ - + ... @@ -132,7 +132,7 @@ - + ... @@ -199,7 +199,7 @@ - + ... diff --git a/src/modules/tracking/tracking.conf b/src/modules/tracking/tracking.conf index 219a853c2..8bca218f5 100644 --- a/src/modules/tracking/tracking.conf +++ b/src/modules/tracking/tracking.conf @@ -33,6 +33,12 @@ # checkbox is set to the value of *default*. Both keys default to # "off", disabling all tracking-configuration through Calamares. # +# Each area has a key *policy*, which is a Url to be opened when +# the user clicks on the corresponding Help button for an explanation +# of the details of that particular kind of tracking. If no policy +# is set, the help button is hidden. The example policy links +# go to Calamares' generic user manual. +# # Each area may have other configuration keys, depending on the # area and how it needs to be configured. --- @@ -51,7 +57,8 @@ install: enabled: false default: false - url: + policy: "https://github.com/calamares/calamares/wiki/Users-Guide#installation-tracking" + # url: "https://example.com/install.php" # The machine area has one specific configuration key: # style: This string specifies what kind of tracking configuration