From eb1ad960a7ec2f16f8148c702ab6b45dd0208750 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 23 Sep 2022 16:05:41 +0200 Subject: [PATCH] Core: Inline directoryfilter.ui Change-Id: I4b9de0fb9943c4d05ffff0585d1452e472b1e0f8 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/CMakeLists.txt | 2 +- src/plugins/coreplugin/coreplugin.qbs | 1 - .../coreplugin/locator/directoryfilter.cpp | 195 +++++++++++----- .../coreplugin/locator/directoryfilter.h | 8 +- .../coreplugin/locator/directoryfilter.ui | 214 ------------------ 5 files changed, 146 insertions(+), 274 deletions(-) delete mode 100644 src/plugins/coreplugin/locator/directoryfilter.ui diff --git a/src/plugins/coreplugin/CMakeLists.txt b/src/plugins/coreplugin/CMakeLists.txt index d0f01b90de0..d710b22872a 100644 --- a/src/plugins/coreplugin/CMakeLists.txt +++ b/src/plugins/coreplugin/CMakeLists.txt @@ -105,7 +105,7 @@ add_qtc_plugin(Core jsexpander.cpp jsexpander.h locator/basefilefilter.cpp locator/basefilefilter.h locator/commandlocator.cpp locator/commandlocator.h - locator/directoryfilter.cpp locator/directoryfilter.h locator/directoryfilter.ui + locator/directoryfilter.cpp locator/directoryfilter.h locator/executefilter.cpp locator/executefilter.h locator/externaltoolsfilter.cpp locator/externaltoolsfilter.h locator/filesystemfilter.cpp locator/filesystemfilter.h diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs index 1787fa06d12..a64c977e2e9 100644 --- a/src/plugins/coreplugin/coreplugin.qbs +++ b/src/plugins/coreplugin/coreplugin.qbs @@ -341,7 +341,6 @@ Project { "commandlocator.h", "directoryfilter.cpp", "directoryfilter.h", - "directoryfilter.ui", "executefilter.cpp", "executefilter.h", "externaltoolsfilter.cpp", diff --git a/src/plugins/coreplugin/locator/directoryfilter.cpp b/src/plugins/coreplugin/locator/directoryfilter.cpp index a1d0e17bfd4..8a412eb9075 100644 --- a/src/plugins/coreplugin/locator/directoryfilter.cpp +++ b/src/plugins/coreplugin/locator/directoryfilter.cpp @@ -2,18 +2,27 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 #include "directoryfilter.h" -#include "ui_directoryfilter.h" #include "locator.h" #include + #include #include #include +#include +#include +#include +#include +#include #include #include #include +#include +#include +#include +#include using namespace Utils; @@ -137,68 +146,152 @@ void DirectoryFilter::restoreState(const QByteArray &state) updateFileIterator(); } +class DirectoryFilterOptions : public QDialog +{ + Q_DECLARE_TR_FUNCTIONS(Core::Internal::DirectoryFilterOptions) + +public: + DirectoryFilterOptions(QWidget *parent) + : QDialog(parent) + { + nameLabel = new QLabel(tr("Name:")); + nameEdit = new QLineEdit(this); + + filePatternLabel = new QLabel(this); + filePattern = new QLineEdit(this); + + exclusionPatternLabel = new QLabel(this); + exclusionPattern = new QLineEdit(this); + + prefixLabel = new QLabel(this); + + shortcutEdit = new QLineEdit(this); + shortcutEdit->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + shortcutEdit->setMaximumSize(QSize(16777215, 16777215)); + shortcutEdit->setToolTip(tr("Specify a short word/abbreviation that can be used to " + "restrict completions to files from this directory tree.\n" + "To do this, you type this shortcut and a space in the " + "Locator entry field, and then the word to search for.")); + + defaultFlag = new QCheckBox(this); + defaultFlag->setChecked(false); + + directoryLabel = new QLabel(tr("Directories:")); + + addButton = new QPushButton(tr("Add...")); + editButton = new QPushButton(tr("Edit...")); + removeButton = new QPushButton(tr("Remove")); + + directoryList = new QListWidget(this); + QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding); + sizePolicy1.setHorizontalStretch(1); + sizePolicy1.setVerticalStretch(0); + directoryList->setSizePolicy(sizePolicy1); + + auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); + + using namespace Layouting; + + Column buttons { + addButton, + editButton, + removeButton, + st + }; + + Column { + Grid { + nameLabel, Span(3, nameEdit), br, + Column { directoryLabel, st }, Span(2, directoryList), buttons, br, + filePatternLabel, Span(3, filePattern), br, + exclusionPatternLabel, Span(3, exclusionPattern), br, + prefixLabel, shortcutEdit, Span(2, defaultFlag) + }, + st, + buttonBox + }.attachTo(this); + + connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + } + + QLabel *nameLabel; + QLineEdit *nameEdit; + QLabel *filePatternLabel; + QLineEdit *filePattern; + QLabel *exclusionPatternLabel; + QLineEdit *exclusionPattern; + QLabel *prefixLabel; + QLineEdit *shortcutEdit; + QCheckBox *defaultFlag; + QPushButton *addButton; + QPushButton *editButton; + QPushButton *removeButton; + QLabel *directoryLabel; + QListWidget *directoryList; +}; + bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) { - if (!m_ui) { - m_ui = new Internal::Ui::DirectoryFilterOptions; - } bool success = false; - QDialog dialog(parent); + + DirectoryFilterOptions dialog(parent); m_dialog = &dialog; - m_ui->setupUi(&dialog); + dialog.setWindowTitle(ILocatorFilter::msgConfigureDialogTitle()); - m_ui->prefixLabel->setText(ILocatorFilter::msgPrefixLabel()); - m_ui->prefixLabel->setToolTip(ILocatorFilter::msgPrefixToolTip()); - m_ui->defaultFlag->setText(ILocatorFilter::msgIncludeByDefault()); - m_ui->defaultFlag->setToolTip(ILocatorFilter::msgIncludeByDefaultToolTip()); - m_ui->nameEdit->setText(displayName()); - m_ui->nameEdit->selectAll(); - connect(m_ui->addButton, + m_dialog->prefixLabel->setText(ILocatorFilter::msgPrefixLabel()); + m_dialog->prefixLabel->setToolTip(ILocatorFilter::msgPrefixToolTip()); + m_dialog->defaultFlag->setText(ILocatorFilter::msgIncludeByDefault()); + m_dialog->defaultFlag->setToolTip(ILocatorFilter::msgIncludeByDefaultToolTip()); + m_dialog->nameEdit->setText(displayName()); + m_dialog->nameEdit->selectAll(); + + connect(m_dialog->addButton, &QPushButton::clicked, this, &DirectoryFilter::handleAddDirectory, Qt::DirectConnection); - connect(m_ui->editButton, + connect(m_dialog->editButton, &QPushButton::clicked, this, &DirectoryFilter::handleEditDirectory, Qt::DirectConnection); - connect(m_ui->removeButton, + connect(m_dialog->removeButton, &QPushButton::clicked, this, &DirectoryFilter::handleRemoveDirectory, Qt::DirectConnection); - connect(m_ui->directoryList, + connect(m_dialog->directoryList, &QListWidget::itemSelectionChanged, this, &DirectoryFilter::updateOptionButtons, Qt::DirectConnection); - m_ui->directoryList->clear(); + m_dialog->directoryList->clear(); // Note: assuming we only change m_directories in the Gui thread, // we don't need to protect it here with mutex - m_ui->directoryList->addItems(Utils::transform(m_directories, &FilePath::toString)); - m_ui->nameLabel->setVisible(m_isCustomFilter); - m_ui->nameEdit->setVisible(m_isCustomFilter); - m_ui->directoryLabel->setVisible(m_isCustomFilter); - m_ui->directoryList->setVisible(m_isCustomFilter); - m_ui->addButton->setVisible(m_isCustomFilter); - m_ui->editButton->setVisible(m_isCustomFilter); - m_ui->removeButton->setVisible(m_isCustomFilter); - m_ui->filePatternLabel->setText(Utils::msgFilePatternLabel()); - m_ui->filePatternLabel->setBuddy(m_ui->filePattern); - m_ui->filePattern->setToolTip(Utils::msgFilePatternToolTip()); + m_dialog->directoryList->addItems(Utils::transform(m_directories, &FilePath::toString)); + m_dialog->nameLabel->setVisible(m_isCustomFilter); + m_dialog->nameEdit->setVisible(m_isCustomFilter); + m_dialog->directoryLabel->setVisible(m_isCustomFilter); + m_dialog->directoryList->setVisible(m_isCustomFilter); + m_dialog->addButton->setVisible(m_isCustomFilter); + m_dialog->editButton->setVisible(m_isCustomFilter); + m_dialog->removeButton->setVisible(m_isCustomFilter); + m_dialog->filePatternLabel->setText(Utils::msgFilePatternLabel()); + m_dialog->filePatternLabel->setBuddy(m_dialog->filePattern); + m_dialog->filePattern->setToolTip(Utils::msgFilePatternToolTip()); // Note: assuming we only change m_filters in the Gui thread, // we don't need to protect it here with mutex - m_ui->filePattern->setText(Utils::transform(m_filters, &QDir::toNativeSeparators).join(',')); - m_ui->exclusionPatternLabel->setText(Utils::msgExclusionPatternLabel()); - m_ui->exclusionPatternLabel->setBuddy(m_ui->exclusionPattern); - m_ui->exclusionPattern->setToolTip(Utils::msgFilePatternToolTip()); + m_dialog->filePattern->setText(Utils::transform(m_filters, &QDir::toNativeSeparators).join(',')); + m_dialog->exclusionPatternLabel->setText(Utils::msgExclusionPatternLabel()); + m_dialog->exclusionPatternLabel->setBuddy(m_dialog->exclusionPattern); + m_dialog->exclusionPattern->setToolTip(Utils::msgFilePatternToolTip()); // Note: assuming we only change m_exclusionFilters in the Gui thread, // we don't need to protect it here with mutex - m_ui->exclusionPattern->setText( + m_dialog->exclusionPattern->setText( Utils::transform(m_exclusionFilters, &QDir::toNativeSeparators).join(',')); - m_ui->shortcutEdit->setText(shortcutString()); - m_ui->defaultFlag->setChecked(isIncludedByDefault()); + m_dialog->shortcutEdit->setText(shortcutString()); + m_dialog->defaultFlag->setChecked(isIncludedByDefault()); updateOptionButtons(); dialog.adjustSize(); if (dialog.exec() == QDialog::Accepted) { @@ -207,21 +300,21 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) const FilePaths oldDirectories = m_directories; const QStringList oldFilters = m_filters; const QStringList oldExclusionFilters = m_exclusionFilters; - setDisplayName(m_ui->nameEdit->text().trimmed()); + setDisplayName(m_dialog->nameEdit->text().trimmed()); m_directories.clear(); const int oldCount = oldDirectories.count(); - const int newCount = m_ui->directoryList->count(); + const int newCount = m_dialog->directoryList->count(); if (oldCount != newCount) directoriesChanged = true; for (int i = 0; i < newCount; ++i) { - m_directories.append(FilePath::fromString(m_ui->directoryList->item(i)->text())); + m_directories.append(FilePath::fromString(m_dialog->directoryList->item(i)->text())); if (!directoriesChanged && m_directories.at(i) != oldDirectories.at(i)) directoriesChanged = true; } - m_filters = Utils::splitFilterUiText(m_ui->filePattern->text()); - m_exclusionFilters = Utils::splitFilterUiText(m_ui->exclusionPattern->text()); - setShortcutString(m_ui->shortcutEdit->text().trimmed()); - setIncludedByDefault(m_ui->defaultFlag->isChecked()); + m_filters = Utils::splitFilterUiText(m_dialog->filePattern->text()); + m_exclusionFilters = Utils::splitFilterUiText(m_dialog->exclusionPattern->text()); + setShortcutString(m_dialog->shortcutEdit->text().trimmed()); + setIncludedByDefault(m_dialog->defaultFlag->isChecked()); needsRefresh = directoriesChanged || oldFilters != m_filters || oldExclusionFilters != m_exclusionFilters; success = true; @@ -233,14 +326,14 @@ void DirectoryFilter::handleAddDirectory() { FilePath dir = FileUtils::getExistingDirectory(m_dialog, tr("Select Directory")); if (!dir.isEmpty()) - m_ui->directoryList->addItem(dir.toUserOutput()); + m_dialog->directoryList->addItem(dir.toUserOutput()); } void DirectoryFilter::handleEditDirectory() { - if (m_ui->directoryList->selectedItems().count() < 1) + if (m_dialog->directoryList->selectedItems().count() < 1) return; - QListWidgetItem *currentItem = m_ui->directoryList->selectedItems().at(0); + QListWidgetItem *currentItem = m_dialog->directoryList->selectedItems().at(0); FilePath dir = FileUtils::getExistingDirectory(m_dialog, tr("Select Directory"), FilePath::fromUserInput(currentItem->text())); if (!dir.isEmpty()) @@ -249,17 +342,17 @@ void DirectoryFilter::handleEditDirectory() void DirectoryFilter::handleRemoveDirectory() { - if (m_ui->directoryList->selectedItems().count() < 1) + if (m_dialog->directoryList->selectedItems().count() < 1) return; - QListWidgetItem *currentItem = m_ui->directoryList->selectedItems().at(0); - delete m_ui->directoryList->takeItem(m_ui->directoryList->row(currentItem)); + QListWidgetItem *currentItem = m_dialog->directoryList->selectedItems().at(0); + delete m_dialog->directoryList->takeItem(m_dialog->directoryList->row(currentItem)); } void DirectoryFilter::updateOptionButtons() { - bool haveSelectedItem = !m_ui->directoryList->selectedItems().isEmpty(); - m_ui->editButton->setEnabled(haveSelectedItem); - m_ui->removeButton->setEnabled(haveSelectedItem); + bool haveSelectedItem = !m_dialog->directoryList->selectedItems().isEmpty(); + m_dialog->editButton->setEnabled(haveSelectedItem); + m_dialog->removeButton->setEnabled(haveSelectedItem); } void DirectoryFilter::updateFileIterator() diff --git a/src/plugins/coreplugin/locator/directoryfilter.h b/src/plugins/coreplugin/locator/directoryfilter.h index a0fa5da09cb..205dbf52805 100644 --- a/src/plugins/coreplugin/locator/directoryfilter.h +++ b/src/plugins/coreplugin/locator/directoryfilter.h @@ -13,11 +13,6 @@ #include namespace Core { -namespace Internal { -namespace Ui { -class DirectoryFilterOptions; -} // namespace Ui -} // namespace Internal class CORE_EXPORT DirectoryFilter : public BaseFileFilter { @@ -53,8 +48,7 @@ private: QStringList m_exclusionFilters; // Our config dialog, uses in addDirectory and editDirectory // to give their dialogs the right parent - QDialog *m_dialog = nullptr; - Internal::Ui::DirectoryFilterOptions *m_ui = nullptr; + class DirectoryFilterOptions *m_dialog = nullptr; mutable QMutex m_lock; Utils::FilePaths m_files; bool m_isCustomFilter = true; diff --git a/src/plugins/coreplugin/locator/directoryfilter.ui b/src/plugins/coreplugin/locator/directoryfilter.ui deleted file mode 100644 index 5889a827502..00000000000 --- a/src/plugins/coreplugin/locator/directoryfilter.ui +++ /dev/null @@ -1,214 +0,0 @@ - - - Core::Internal::DirectoryFilterOptions - - - - 0 - 0 - 393 - 300 - - - - - - - - - Name: - - - - - - - - - - File pattern: - - - - - - - - - - Exclusion pattern: - - - - - - - - - - Prefix: - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Specify a short word/abbreviation that can be used to restrict completions to files from this directory tree. -To do this, you type this shortcut and a space in the Locator entry field, and then the word to search for. - - - - - - - Include by default - - - false - - - - - - - - - Add... - - - - - - - Edit... - - - - - - - Remove - - - - - - - Qt::Vertical - - - - 0 - 0 - - - - - - - - - - - - Directories: - - - - - - - Qt::Vertical - - - - 0 - 0 - - - - - - - - - - - 1 - 0 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - Core::Internal::DirectoryFilterOptions - accept() - - - 353 - 174 - - - 390 - 152 - - - - - buttonBox - rejected() - Core::Internal::DirectoryFilterOptions - reject() - - - 280 - 176 - - - 391 - 141 - - - - -