From eebee3311d4b8bba4972613128efa3af816b9f85 Mon Sep 17 00:00:00 2001 From: Petar Perisin <petar.perisin@gmail.com> Date: Tue, 26 Mar 2013 17:27:17 +0100 Subject: [PATCH] VCS Clean Dialog: Added "Select All" checkbox Change-Id: I5bff60b1aa1985926efb6b850be958f48d67a029 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> Reviewed-by: Petar Perisin <petar.perisin@gmail.com> --- src/plugins/vcsbase/cleandialog.cpp | 30 +++++++++++++++++++++++++++++ src/plugins/vcsbase/cleandialog.h | 2 ++ src/plugins/vcsbase/cleandialog.ui | 15 +++++++++++---- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/plugins/vcsbase/cleandialog.cpp b/src/plugins/vcsbase/cleandialog.cpp index bae7480cbb9..fd921e2e2f2 100644 --- a/src/plugins/vcsbase/cleandialog.cpp +++ b/src/plugins/vcsbase/cleandialog.cpp @@ -170,6 +170,8 @@ CleanDialog::CleanDialog(QWidget *parent) : d->ui.filesTreeView->setRootIsDecorated(false); connect(d->ui.filesTreeView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(slotDoubleClicked(QModelIndex))); + connect(d->ui.selectAllCheckBox, SIGNAL(clicked(bool)), this, SLOT(selectAllItems(bool))); + connect(d->ui.filesTreeView, SIGNAL(clicked(QModelIndex)), this, SLOT(updateSelectAllCheckBox())); } CleanDialog::~CleanDialog() @@ -193,6 +195,9 @@ void CleanDialog::setFileList(const QString &workingDirectory, const QStringList for (int c = 0; c < d->m_filesModel->columnCount(); c++) d->ui.filesTreeView->resizeColumnToContents(c); + + if (ignoredFiles.isEmpty()) + d->ui.selectAllCheckBox->setChecked(true); } void CleanDialog::addFile(const QString &workingDirectory, QString fileName, bool checked) @@ -278,6 +283,31 @@ void CleanDialog::slotDoubleClicked(const QModelIndex &index) } } +void CleanDialog::selectAllItems(bool checked) +{ + if (const int rowCount = d->m_filesModel->rowCount()) { + for (int r = 0; r < rowCount; ++r) { + QStandardItem *item = d->m_filesModel->item(r, 0); + item->setCheckState(checked ? Qt::Checked : Qt::Unchecked); + } + } +} + +void CleanDialog::updateSelectAllCheckBox() +{ + bool checked = true; + if (const int rowCount = d->m_filesModel->rowCount()) { + for (int r = 0; r < rowCount; ++r) { + const QStandardItem *item = d->m_filesModel->item(r, 0); + if (item->checkState() == Qt::Unchecked) { + checked = false; + break; + } + } + d->ui.selectAllCheckBox->setChecked(checked); + } +} + void CleanDialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); diff --git a/src/plugins/vcsbase/cleandialog.h b/src/plugins/vcsbase/cleandialog.h index 3b290932815..374131d0875 100644 --- a/src/plugins/vcsbase/cleandialog.h +++ b/src/plugins/vcsbase/cleandialog.h @@ -60,6 +60,8 @@ protected: private slots: void slotDoubleClicked(const QModelIndex &); + void selectAllItems(bool checked); + void updateSelectAllCheckBox(); private: QStringList checkedFiles() const; diff --git a/src/plugins/vcsbase/cleandialog.ui b/src/plugins/vcsbase/cleandialog.ui index dc679675e78..8e558dbbb67 100644 --- a/src/plugins/vcsbase/cleandialog.ui +++ b/src/plugins/vcsbase/cleandialog.ui @@ -17,6 +17,13 @@ <item> <widget class="QGroupBox" name="groupBox"> <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QCheckBox" name="selectAllCheckBox"> + <property name="text"> + <string>Select All</string> + </property> + </widget> + </item> <item> <widget class="QTreeView" name="filesTreeView"/> </item> @@ -44,8 +51,8 @@ <slot>accept()</slot> <hints> <hint type="sourcelabel"> - <x>248</x> - <y>254</y> + <x>257</x> + <y>649</y> </hint> <hint type="destinationlabel"> <x>157</x> @@ -60,8 +67,8 @@ <slot>reject()</slot> <hints> <hint type="sourcelabel"> - <x>316</x> - <y>260</y> + <x>325</x> + <y>649</y> </hint> <hint type="destinationlabel"> <x>286</x> -- GitLab