ProjectExplorer: Use IOptionPage::setWidgetCreator() for main kits page

Change-Id: I25545bfb00af3715adae35ba70e52e963dcdfc76
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-04-20 11:02:35 +02:00
parent 1a1b040642
commit 198d07e256
2 changed files with 14 additions and 37 deletions

View File

@@ -23,11 +23,11 @@
namespace ProjectExplorer {
namespace Internal {
// --------------------------------------------------------------------------
// KitOptionsPageWidget:
// --------------------------------------------------------------------------
// KitOptionsPageWidget
class KitOptionsPageWidget : public QWidget
static KitOptionsPageWidget *kitOptionsPageWidget = nullptr;
class KitOptionsPageWidget : public Core::IOptionsPageWidget
{
public:
KitOptionsPageWidget();
@@ -42,6 +42,8 @@ public:
void makeDefaultKit();
void updateState();
void apply() final { m_model->apply(); }
public:
QTreeView *m_kitsView = nullptr;
QPushButton *m_addButton = nullptr;
@@ -58,6 +60,7 @@ public:
KitOptionsPageWidget::KitOptionsPageWidget()
{
kitOptionsPageWidget = this;
m_kitsView = new QTreeView(this);
m_kitsView->setUniformRowHeights(true);
m_kitsView->header()->setStretchLastSection(true);
@@ -249,28 +252,7 @@ KitOptionsPage::KitOptionsPage()
setCategory(Constants::KITS_SETTINGS_CATEGORY);
setDisplayCategory(Tr::tr("Kits"));
setCategoryIconPath(":/projectexplorer/images/settingscategory_kits.png");
}
QWidget *KitOptionsPage::widget()
{
if (!m_widget)
m_widget = new Internal::KitOptionsPageWidget;
return m_widget;
}
void KitOptionsPage::apply()
{
if (m_widget)
m_widget->m_model->apply();
}
void KitOptionsPage::finish()
{
if (m_widget) {
delete m_widget;
m_widget = nullptr;
}
setWidgetCreator([] { return new Internal::KitOptionsPageWidget; });
}
void KitOptionsPage::showKit(Kit *k)
@@ -278,13 +260,15 @@ void KitOptionsPage::showKit(Kit *k)
if (!k)
return;
(void) widget();
QModelIndex index = m_widget->m_model->indexOf(k);
m_widget->m_selectionModel->select(index,
Internal::KitOptionsPageWidget *widget = Internal::kitOptionsPageWidget;
QTC_ASSERT(widget, return);
QModelIndex index = widget->m_model->indexOf(k);
widget->m_selectionModel->select(index,
QItemSelectionModel::Clear
| QItemSelectionModel::SelectCurrent
| QItemSelectionModel::Rows);
m_widget->m_kitsView->scrollTo(index);
widget->m_kitsView->scrollTo(index);
}
KitOptionsPage *KitOptionsPage::instance()

View File

@@ -20,15 +20,8 @@ class PROJECTEXPLORER_EXPORT KitOptionsPage : public Core::IOptionsPage
public:
KitOptionsPage();
QWidget *widget() override;
void apply() override;
void finish() override;
void showKit(Kit *k);
static KitOptionsPage *instance();
private:
QPointer<Internal::KitOptionsPageWidget> m_widget;
};
} // namespace ProjectExplorer