summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2018-05-08 11:41:19 +0300
committerKatja Marttila <katja.marttila@qt.io>2018-09-10 11:20:24 +0000
commitdd21b05b188ab8ee9aee43556d78d006ca9e7376 (patch)
treedc20b9eacea9ad975448b6241b5243dff6ea3f38
parent6c38a975eeb0ebe06e7146fed6cf4bcdf8499b6c (diff)
Add possibility to check/uncheck repositories with one button click
Task-number: QTIFW-1132 Change-Id: I4d71dedf6f099f8ccc7ecefcfa02cae78d28244b Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
-rw-r--r--src/sdk/settingsdialog.cpp23
-rw-r--r--src/sdk/settingsdialog.h3
-rw-r--r--src/sdk/settingsdialog.ui16
3 files changed, 40 insertions, 2 deletions
diff --git a/src/sdk/settingsdialog.cpp b/src/sdk/settingsdialog.cpp
index c4c2c65c3..7e2ba31b9 100644
--- a/src/sdk/settingsdialog.cpp
+++ b/src/sdk/settingsdialog.cpp
@@ -234,7 +234,10 @@ SettingsDialog::SettingsDialog(PackageManagerCore *core, QWidget *parent)
this, &SettingsDialog::currentRepositoryChanged);
connect(m_ui->m_testRepository, &QAbstractButton::clicked,
this, &SettingsDialog::testRepository);
-
+ connect(m_ui->m_selectAll, &QAbstractButton::clicked,
+ this, &SettingsDialog::selectAll);
+ connect(m_ui->m_deselectAll, &QAbstractButton::clicked,
+ this, &SettingsDialog::deselectAll);
useTmpRepositoriesOnly(settings.hasReplacementRepos());
m_ui->m_useTmpRepositories->setChecked(settings.hasReplacementRepos());
m_ui->m_useTmpRepositories->setEnabled(settings.hasReplacementRepos());
@@ -403,7 +406,25 @@ void SettingsDialog::currentRepositoryChanged(QTreeWidgetItem *current, QTreeWid
m_ui->m_addRepository->setEnabled((current != m_rootItems.at(0)) & (index == -1));
}
}
+void SettingsDialog::checkSubTree(QTreeWidgetItem *item, Qt::CheckState state)
+{
+ if (item->flags() & Qt::ItemIsUserCheckable)
+ item->setData(1, Qt::CheckStateRole, state);
+ for (int i = 0; i < item->childCount(); i++)
+ checkSubTree(item->child(i), state);
+}
+
+void SettingsDialog::selectAll()
+{
+ for (int i = 0; i < m_ui->m_repositoriesView->topLevelItemCount(); i++)
+ checkSubTree(m_ui->m_repositoriesView->topLevelItem(i), Qt::Checked);
+}
+void SettingsDialog::deselectAll()
+{
+ for (int i = 0; i < m_ui->m_repositoriesView->topLevelItemCount(); i++)
+ checkSubTree(m_ui->m_repositoriesView->topLevelItem(i), Qt::Unchecked);
+}
// -- private
void SettingsDialog::setupRepositoriesTreeWidget()
diff --git a/src/sdk/settingsdialog.h b/src/sdk/settingsdialog.h
index eb25a2e87..97bdd0467 100644
--- a/src/sdk/settingsdialog.h
+++ b/src/sdk/settingsdialog.h
@@ -117,10 +117,13 @@ private slots:
void removeRepository();
void useTmpRepositoriesOnly(bool use);
void currentRepositoryChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
+ void selectAll();
+ void deselectAll();
private:
void setupRepositoriesTreeWidget();
void insertRepositories(const QSet<QInstaller::Repository> repos, QTreeWidgetItem *rootItem);
+ void checkSubTree(QTreeWidgetItem *item, Qt::CheckState state);
private:
Ui::SettingsDialog *m_ui;
diff --git a/src/sdk/settingsdialog.ui b/src/sdk/settingsdialog.ui
index 3683f3cd1..6645e6460 100644
--- a/src/sdk/settingsdialog.ui
+++ b/src/sdk/settingsdialog.ui
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>491</width>
+ <width>543</width>
<height>443</height>
</rect>
</property>
@@ -237,6 +237,20 @@
</widget>
</item>
<item>
+ <widget class="QPushButton" name="m_selectAll">
+ <property name="text">
+ <string>Select All</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="m_deselectAll">
+ <property name="text">
+ <string>Deselect All</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>