diff options
Diffstat (limited to 'src/sdk/settingsdialog.cpp')
-rw-r--r-- | src/sdk/settingsdialog.cpp | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/src/sdk/settingsdialog.cpp b/src/sdk/settingsdialog.cpp index c3159ac36..0a16377b3 100644 --- a/src/sdk/settingsdialog.cpp +++ b/src/sdk/settingsdialog.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -194,6 +194,7 @@ SettingsDialog::SettingsDialog(PackageManagerCore *core, QWidget *parent) , m_ui(new Ui::SettingsDialog) , m_core(core) , m_showPasswords(false) + , m_cacheCleared(false) { m_ui->setupUi(this); setupRepositoriesTreeWidget(); @@ -238,6 +239,23 @@ SettingsDialog::SettingsDialog(PackageManagerCore *core, QWidget *parent) this, &SettingsDialog::selectAll); connect(m_ui->m_deselectAll, &QAbstractButton::clicked, this, &SettingsDialog::deselectAll); + + connect(m_ui->m_clearPushButton, &QAbstractButton::clicked, + this, &SettingsDialog::clearLocalCacheClicked); + connect(m_ui->m_clearPushButton, &QAbstractButton::clicked, this, [&] { + // Disable the button as the new settings will only take effect after + // closing the dialog. + m_ui->m_clearPushButton->setEnabled(false); + m_cacheCleared = true; + }); + connect(m_ui->m_cachePathLineEdit, &QLineEdit::textChanged, this, [&] { + if (!m_cacheCleared) { + // Disable the button if the path is modified between applying settings + m_ui->m_clearPushButton->setEnabled( + settings.localCachePath() == m_ui->m_cachePathLineEdit->text()); + } + }); + useTmpRepositoriesOnly(settings.hasReplacementRepos()); m_ui->m_useTmpRepositories->setChecked(settings.hasReplacementRepos()); m_ui->m_useTmpRepositories->setEnabled(settings.hasReplacementRepos()); @@ -248,6 +266,16 @@ SettingsDialog::SettingsDialog(PackageManagerCore *core, QWidget *parent) m_ui->m_repositories->setParent(this); m_ui->m_repositories->setVisible(settings.repositorySettingsPageVisible()); } + + m_ui->m_cachePathLineEdit->setText(settings.localCachePath()); + m_ui->m_clearPushButton->setEnabled(m_core->isValidCache()); + showClearCacheProgress(false); +} + +void SettingsDialog::showClearCacheProgress(bool show) +{ + m_ui->m_clearCacheProgressLabel->setVisible(show); + m_ui->m_clearCacheProgressBar->setVisible(show); } void SettingsDialog::accept() @@ -290,6 +318,14 @@ void SettingsDialog::accept() settingsChanged |= (settings.httpProxy() != newSettings.httpProxy()); } + // need to fetch metadata again + settingsChanged |= m_cacheCleared; + m_cacheCleared = false; + + // update cache path + newSettings.setLocalCachePath(m_ui->m_cachePathLineEdit->text()); + settingsChanged |= (settings.localCachePath() != newSettings.localCachePath()); + if (settingsChanged) emit networkSettingsChanged(newSettings); |