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

View File

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