diff --git a/src/plugins/vcsbase/cleandialog.cpp b/src/plugins/vcsbase/cleandialog.cpp index bae7480cbb98c095adb77ec867a8746bf5bd32f7..fd921e2e2f2f9513576eaa47b0d59db7e1131f74 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 3b290932815548e09815b525985ebe14b851dfb3..374131d08755ec1b4b98c793f91e24c528ca6803 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 dc679675e782f056f53d481f5d87ce5ac16f54fd..8e558dbbb675be1f68db97e263d3b94dbac1d065 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>