/* === This file is part of Calamares - === * * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Calamares is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Calamares. If not, see . */ #include "TrackingPage.h" #include "ui_page_trackingstep.h" #include "Branding.h" #include "JobQueue.h" #include "GlobalStorage.h" #include "utils/Logger.h" #include "utils/CalamaresUtilsGui.h" #include "utils/Retranslator.h" #include "ViewManager.h" #include #include #include TrackingPage::TrackingPage(QWidget *parent) : QWidget( parent ) , ui( new Ui::TrackingPage ) { using StringEntry = Calamares::Branding::StringEntry; ui->setupUi( this ); CALAMARES_RETRANSLATE( ui->retranslateUi( this ); ui->generalExplanation->setText( tr( "Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area." ).arg( *StringEntry::ShortProductName ) ); ui->installExplanation->setText( tr( "By selecting this you will send information about your installation and hardware. This information will only be sent once after the installation finishes." ) ); ui->machineExplanation->setText( tr( "By selecting this you will periodically send information about your installation, hardware and applications, to %1." ).arg( *StringEntry::ShortProductName ) ); ui->userExplanation->setText( tr( "By selecting this you will regularly send information about your installation, hardware, applications and usage patterns, to %1." ).arg( *StringEntry::ShortProductName ) ); ) QButtonGroup *group = new QButtonGroup( this ); group->setExclusive( true ); group->addButton( ui->noneRadio ); group->addButton( ui->installRadio ); group->addButton( ui->machineRadio ); group->addButton( ui->userRadio ); ui->noneRadio->setChecked( true ); } void TrackingPage::enableTrackingOption(TrackingType t, bool enabled) { QWidget* group = nullptr; switch ( t ) { case TrackingType::InstallTracking: group = ui->installGroup; break; case TrackingType::MachineTracking: group = ui->machineGroup; break; case TrackingType::UserTracking: group = ui->userGroup; break; } if ( group != nullptr ) { if ( enabled ) group->show(); else group->hide(); } else cWarning() << "unknown tracking option" << int(t); } bool TrackingPage::getTrackingOption(TrackingType t) { bool enabled = false; // A tracking type is enabled if it is checked, or // any higher level is checked. #define ch(x) ui->x->isChecked() switch ( t ) { case TrackingType::InstallTracking: enabled = ch(installRadio) || ch(machineRadio) || ch(userRadio); break; case TrackingType::MachineTracking: enabled = ch(machineRadio) || ch(userRadio); break; case TrackingType::UserTracking: enabled = ch(userRadio); break; } #undef ch return enabled; } 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 cWarning() << "unknown tracking option" << int(t); } void TrackingPage::setGeneralPolicy( QString url ) { if ( url.isEmpty() ) ui->generalPolicyLabel->hide(); else { ui->generalPolicyLabel->show(); ui->generalPolicyLabel->setTextInteractionFlags(Qt::TextBrowserInteraction); ui->generalPolicyLabel->show(); connect( ui->generalPolicyLabel, &QLabel::linkActivated, [url]{ QDesktopServices::openUrl( url ); } ); } } void TrackingPage::setTrackingLevel(const QString& l) { QString level = l.toLower(); QRadioButton* button = nullptr; if (level.isEmpty() || level == "none") button = ui->noneRadio; else if (level == "install") button = ui->installRadio; else if (level == "machine") button = ui->machineRadio; else if (level == "user") button = ui->userRadio; if ( button != nullptr ) button->setChecked( true ); else cWarning() << "unknown default tracking level" << l; }