diff --git a/src/plugins/clangtools/CMakeLists.txt b/src/plugins/clangtools/CMakeLists.txt index 9527f9b2758..59f9f320abd 100644 --- a/src/plugins/clangtools/CMakeLists.txt +++ b/src/plugins/clangtools/CMakeLists.txt @@ -39,7 +39,7 @@ add_qtc_plugin(ClangTools documentclangtoolrunner.cpp documentclangtoolrunner.h documentquickfixfactory.cpp documentquickfixfactory.h executableinfo.cpp executableinfo.h - filterdialog.cpp filterdialog.h filterdialog.ui + filterdialog.cpp filterdialog.h runsettingswidget.cpp runsettingswidget.h runsettingswidget.ui settingswidget.cpp settingswidget.h settingswidget.ui tidychecks.ui diff --git a/src/plugins/clangtools/clangtools.qbs b/src/plugins/clangtools/clangtools.qbs index 9be1d720a18..36b44a4c512 100644 --- a/src/plugins/clangtools/clangtools.qbs +++ b/src/plugins/clangtools/clangtools.qbs @@ -69,7 +69,6 @@ QtcPlugin { "executableinfo.h", "filterdialog.cpp", "filterdialog.h", - "filterdialog.ui", "runsettingswidget.cpp", "runsettingswidget.h", "runsettingswidget.ui", diff --git a/src/plugins/clangtools/filterdialog.cpp b/src/plugins/clangtools/filterdialog.cpp index 4ebca5f58fd..34c40bd618b 100644 --- a/src/plugins/clangtools/filterdialog.cpp +++ b/src/plugins/clangtools/filterdialog.cpp @@ -2,15 +2,20 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 #include "filterdialog.h" -#include "ui_filterdialog.h" #include +#include #include +#include +#include +#include +#include #include +#include +#include -namespace ClangTools { -namespace Internal { +namespace ClangTools::Internal { enum Columns { CheckName, Count }; @@ -59,61 +64,76 @@ public: FilterDialog::FilterDialog(const Checks &checks, QWidget *parent) : QDialog(parent) - , m_ui(new Ui::FilterDialog) { - m_ui->setupUi(this); + resize(400, 400); + setWindowTitle(tr("Filter Diagnostics")); + + auto selectAll = new QPushButton(tr("Select All")); + auto selectWithFixits = new QPushButton(tr("Select All with Fixits")); + auto selectNone = new QPushButton(tr("Clear Selection")); + + auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); m_model = new FilterChecksModel(checks); - // View - m_ui->view->setModel(m_model); - m_ui->view->header()->setStretchLastSection(false); - m_ui->view->header()->setSectionResizeMode(Columns::CheckName, QHeaderView::Stretch); - m_ui->view->header()->setSectionResizeMode(Columns::Count, QHeaderView::ResizeToContents); - m_ui->view->setSelectionMode(QAbstractItemView::MultiSelection); - m_ui->view->setSelectionBehavior(QAbstractItemView::SelectRows); - m_ui->view->setIndentation(0); - connect(m_ui->view->selectionModel(), &QItemSelectionModel::selectionChanged, this, [&](){ - const bool hasSelection = !m_ui->view->selectionModel()->selectedRows().isEmpty(); - m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(hasSelection); + m_view = new QTreeView(this); + m_view->setModel(m_model); + m_view->header()->setStretchLastSection(false); + m_view->header()->setSectionResizeMode(Columns::CheckName, QHeaderView::Stretch); + m_view->header()->setSectionResizeMode(Columns::Count, QHeaderView::ResizeToContents); + m_view->setSelectionMode(QAbstractItemView::MultiSelection); + m_view->setSelectionBehavior(QAbstractItemView::SelectRows); + m_view->setIndentation(0); + + using namespace Utils::Layouting; + + Column { + tr("Select the diagnostics to display."), + Row { selectAll, selectWithFixits, selectNone, st }, + m_view, + buttonBox, + }.attachTo(this); + + connect(m_view->selectionModel(), &QItemSelectionModel::selectionChanged, this, [&] { + const bool hasSelection = !m_view->selectionModel()->selectedRows().isEmpty(); + buttonBox->button(QDialogButtonBox::Ok)->setEnabled(hasSelection); }); + connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + // Buttons - connect(m_ui->selectNone, &QPushButton::clicked, m_ui->view, &QTreeView::clearSelection); - connect(m_ui->selectAll, &QPushButton::clicked, m_ui->view, &QTreeView::selectAll); - connect(m_ui->selectWithFixits, &QPushButton::clicked, m_ui->view, [this] { - m_ui->view->clearSelection(); + connect(selectNone, &QPushButton::clicked, m_view, &QTreeView::clearSelection); + connect(selectAll, &QPushButton::clicked, m_view, &QTreeView::selectAll); + connect(selectWithFixits, &QPushButton::clicked, m_view, [this] { + m_view->clearSelection(); m_model->forItemsAtLevel<1>([&](CheckItem *item) { if (item->check.hasFixit) - m_ui->view->selectionModel()->select(item->index(), selectionFlags()); + m_view->selectionModel()->select(item->index(), selectionFlags()); }); }); - m_ui->selectWithFixits->setEnabled( + selectWithFixits->setEnabled( Utils::anyOf(checks, [](const Check &c) { return c.hasFixit; })); // Select checks that are not filtered out m_model->forItemsAtLevel<1>([this](CheckItem *item) { if (item->check.isShown) - m_ui->view->selectionModel()->select(item->index(), selectionFlags()); + m_view->selectionModel()->select(item->index(), selectionFlags()); }); } -FilterDialog::~FilterDialog() -{ - delete m_ui; -} +FilterDialog::~FilterDialog() = default; QSet FilterDialog::selectedChecks() const { QSet checks; m_model->forItemsAtLevel<1>([&](CheckItem *item) { - if (m_ui->view->selectionModel()->isSelected(item->index())) + if (m_view->selectionModel()->isSelected(item->index())) checks << item->check.name; }); return checks; } -} // namespace Internal -} // namespace ClangTools +} // ClangTools::Internal #include "filterdialog.moc" diff --git a/src/plugins/clangtools/filterdialog.h b/src/plugins/clangtools/filterdialog.h index 8ac12ab88d9..cbfa29f100a 100644 --- a/src/plugins/clangtools/filterdialog.h +++ b/src/plugins/clangtools/filterdialog.h @@ -5,14 +5,16 @@ #include -namespace ClangTools { -namespace Internal { +QT_BEGIN_NAMESPACE +class QTreeView; +QT_END_NAMESPACE -namespace Ui { class FilterDialog; } +namespace ClangTools::Internal { class FilterChecksModel; -class Check { +class Check +{ public: QString name; QString displayName; @@ -33,9 +35,8 @@ public: QSet selectedChecks() const; private: - Ui::FilterDialog *m_ui; FilterChecksModel *m_model; + QTreeView *m_view; }; -} // namespace Internal -} // namespace ClangTools +} // ClangTools::Internal diff --git a/src/plugins/clangtools/filterdialog.ui b/src/plugins/clangtools/filterdialog.ui deleted file mode 100644 index 897b0e72d15..00000000000 --- a/src/plugins/clangtools/filterdialog.ui +++ /dev/null @@ -1,99 +0,0 @@ - - - ClangTools::Internal::FilterDialog - - - - 0 - 0 - 400 - 400 - - - - Filter Diagnostics - - - - - - Select the diagnostics to display. - - - - - - - - - Select All - - - - - - - Select All with Fixits - - - - - - - Clear Selection - - - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - ClangTools::Internal::FilterDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - ClangTools::Internal::FilterDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - -