diff --git a/src/plugins/todo/CMakeLists.txt b/src/plugins/todo/CMakeLists.txt index 9b3897fe6b2..149488b589e 100644 --- a/src/plugins/todo/CMakeLists.txt +++ b/src/plugins/todo/CMakeLists.txt @@ -20,5 +20,5 @@ add_qtc_plugin(Todo todooutputtreeviewdelegate.cpp todooutputtreeviewdelegate.h todoplugin.cpp todoplugin.h todoplugin.qrc - todoprojectsettingswidget.cpp todoprojectsettingswidget.h todoprojectsettingswidget.ui + todoprojectsettingswidget.cpp todoprojectsettingswidget.h ) diff --git a/src/plugins/todo/todo.qbs b/src/plugins/todo/todo.qbs index 60faa34bc16..47e0222cc8c 100644 --- a/src/plugins/todo/todo.qbs +++ b/src/plugins/todo/todo.qbs @@ -26,7 +26,6 @@ QtcPlugin { "optionsdialog.h", "todoprojectsettingswidget.cpp", "todoprojectsettingswidget.h", - "todoprojectsettingswidget.ui", "qmljstodoitemsscanner.cpp", "qmljstodoitemsscanner.h", "settings.cpp", diff --git a/src/plugins/todo/todoprojectsettingswidget.cpp b/src/plugins/todo/todoprojectsettingswidget.cpp index d2dbbd5aa58..cd5e598a85a 100644 --- a/src/plugins/todo/todoprojectsettingswidget.cpp +++ b/src/plugins/todo/todoprojectsettingswidget.cpp @@ -24,49 +24,72 @@ ****************************************************************************/ #include "todoprojectsettingswidget.h" -#include "ui_todoprojectsettingswidget.h" + #include "constants.h" #include +#include + +#include +#include + +namespace Todo { +namespace Internal { + static QString excludePlaceholder() { return Todo::Internal::TodoProjectSettingsWidget::tr(""); } -namespace Todo { -namespace Internal { - -TodoProjectSettingsWidget::TodoProjectSettingsWidget(ProjectExplorer::Project *project) : - ui(new Ui::TodoProjectSettingsWidget), - m_project(project) +TodoProjectSettingsWidget::TodoProjectSettingsWidget(ProjectExplorer::Project *project) + : m_project(project) { - ui->setupUi(this); + m_excludedPatternsList = new QListWidget; + m_excludedPatternsList->setSortingEnabled(true); + m_excludedPatternsList->setToolTip(tr("Regular expressions for file paths to be excluded from scanning.")); + + m_removeExcludedPatternButton = new QPushButton(tr("Remove")); + + auto addExcludedPatternButton = new QPushButton(tr("Add")); + + using namespace Utils::Layouting; + + Column { + Group { + Title(tr("Excluded Files")), + Row { + m_excludedPatternsList, + Column { + addExcludedPatternButton, + m_removeExcludedPatternButton, + Stretch() + } + } + } + }.attachTo(this); setExcludedPatternsButtonsEnabled(); - connect(ui->addExcludedPatternButton, &QPushButton::clicked, + connect(addExcludedPatternButton, &QPushButton::clicked, this, &TodoProjectSettingsWidget::addExcludedPatternButtonClicked); - connect(ui->removeExcludedPatternButton, &QPushButton::clicked, + connect(m_removeExcludedPatternButton, &QPushButton::clicked, this, &TodoProjectSettingsWidget::removeExcludedPatternButtonClicked); - connect(ui->excludedPatternsList, &QListWidget::itemChanged, + connect(m_excludedPatternsList, &QListWidget::itemChanged, this, &TodoProjectSettingsWidget::excludedPatternChanged, Qt::QueuedConnection); - connect(ui->excludedPatternsList, &QListWidget::itemSelectionChanged, + connect(m_excludedPatternsList, &QListWidget::itemSelectionChanged, this, &TodoProjectSettingsWidget::setExcludedPatternsButtonsEnabled); loadSettings(); } -TodoProjectSettingsWidget::~TodoProjectSettingsWidget() -{ - delete ui; -} +TodoProjectSettingsWidget::~TodoProjectSettingsWidget() = default; QListWidgetItem *TodoProjectSettingsWidget::addToExcludedPatternsList(const QString &pattern) { auto item = new QListWidgetItem(pattern); item->setFlags(item->flags() | Qt::ItemIsEditable); prepareItem(item); - ui->excludedPatternsList->addItem(item); + m_excludedPatternsList->addItem(item); return item; } @@ -74,7 +97,7 @@ void TodoProjectSettingsWidget::loadSettings() { QVariant s = m_project->namedSettings(Constants::SETTINGS_NAME_KEY); QVariantMap settings = s.toMap(); - ui->excludedPatternsList->clear(); + m_excludedPatternsList->clear(); for (const QVariant &pattern : settings[Constants::EXCLUDES_LIST_KEY].toList()) addToExcludedPatternsList(pattern.toString()); } @@ -84,8 +107,8 @@ void TodoProjectSettingsWidget::saveSettings() QVariantMap settings; QVariantList excludes; - for (int i = 0; i < ui->excludedPatternsList->count(); ++i) - excludes << ui->excludedPatternsList->item(i)->text(); + for (int i = 0; i < m_excludedPatternsList->count(); ++i) + excludes << m_excludedPatternsList->item(i)->text(); settings[Constants::EXCLUDES_LIST_KEY] = excludes; @@ -96,40 +119,40 @@ void TodoProjectSettingsWidget::saveSettings() void TodoProjectSettingsWidget::prepareItem(QListWidgetItem *item) const { if (QRegularExpression(item->text()).isValid()) - item->setForeground(QBrush(ui->excludedPatternsList->palette().color(QPalette::Active, QPalette::Text))); + item->setForeground(QBrush(m_excludedPatternsList->palette().color(QPalette::Active, QPalette::Text))); else item->setForeground(QBrush(Qt::red)); } void TodoProjectSettingsWidget::addExcludedPatternButtonClicked() { - if (!ui->excludedPatternsList->findItems(excludePlaceholder(), Qt::MatchFixedString).isEmpty()) + if (!m_excludedPatternsList->findItems(excludePlaceholder(), Qt::MatchFixedString).isEmpty()) return; - ui->excludedPatternsList->editItem(addToExcludedPatternsList(excludePlaceholder())); + m_excludedPatternsList->editItem(addToExcludedPatternsList(excludePlaceholder())); } void TodoProjectSettingsWidget::removeExcludedPatternButtonClicked() { - delete ui->excludedPatternsList->takeItem(ui->excludedPatternsList->currentRow()); + delete m_excludedPatternsList->takeItem(m_excludedPatternsList->currentRow()); saveSettings(); } void TodoProjectSettingsWidget::setExcludedPatternsButtonsEnabled() { - const bool isSomethingSelected = !ui->excludedPatternsList->selectedItems().isEmpty(); - ui->removeExcludedPatternButton->setEnabled(isSomethingSelected); + const bool isSomethingSelected = !m_excludedPatternsList->selectedItems().isEmpty(); + m_removeExcludedPatternButton->setEnabled(isSomethingSelected); } void TodoProjectSettingsWidget::excludedPatternChanged(QListWidgetItem *item) { if (item->text().isEmpty() || item->text() == excludePlaceholder()) { - ui->excludedPatternsList->removeItemWidget(item); + m_excludedPatternsList->removeItemWidget(item); delete item; } else { prepareItem(item); } saveSettings(); - ui->excludedPatternsList->setCurrentItem(nullptr); + m_excludedPatternsList->setCurrentItem(nullptr); } } // namespace Internal diff --git a/src/plugins/todo/todoprojectsettingswidget.h b/src/plugins/todo/todoprojectsettingswidget.h index acbf5ea44c4..5d22b72a044 100644 --- a/src/plugins/todo/todoprojectsettingswidget.h +++ b/src/plugins/todo/todoprojectsettingswidget.h @@ -30,20 +30,16 @@ #include QT_BEGIN_NAMESPACE +class QListWidget; class QListWidgetItem; +class QPushButton; QT_END_NAMESPACE -namespace ProjectExplorer { -class Project; -} +namespace ProjectExplorer { class Project; } namespace Todo { namespace Internal { -namespace Ui { -class TodoProjectSettingsWidget; -} - class TodoProjectSettingsWidget : public ProjectExplorer::ProjectSettingsWidget { Q_OBJECT @@ -65,10 +61,10 @@ private: void saveSettings(); void prepareItem(QListWidgetItem *item) const; - Ui::TodoProjectSettingsWidget *ui; ProjectExplorer::Project *m_project; + QListWidget *m_excludedPatternsList; + QPushButton *m_removeExcludedPatternButton; }; - } // namespace Internal } // namespace Todo diff --git a/src/plugins/todo/todoprojectsettingswidget.ui b/src/plugins/todo/todoprojectsettingswidget.ui deleted file mode 100644 index a8149df9919..00000000000 --- a/src/plugins/todo/todoprojectsettingswidget.ui +++ /dev/null @@ -1,71 +0,0 @@ - - - Todo::Internal::TodoProjectSettingsWidget - - - - 0 - 0 - 814 - 330 - - - - - - - Excluded Files - - - - - - Regular expressions for file paths to be excluded from scanning. - - - true - - - - - - - - - Add - - - - - - - Remove - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 40 - - - - - - - - - - - - - -