CppTools: Apply new SettingsPage patterns

Change-Id: Id7410041d5813dc3df9aeb650074f961e394cd2d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2020-01-17 15:15:24 +01:00
parent b7bd33641d
commit 57c41edf54
3 changed files with 35 additions and 73 deletions

View File

@@ -36,13 +36,39 @@
#include <QTextStream>
using namespace CppTools;
using namespace CppTools::Internal;
namespace CppTools {
namespace Internal {
CppCodeModelSettingsWidget::CppCodeModelSettingsWidget()
class CppCodeModelSettingsWidget final : public Core::IOptionsPageWidget
{
Q_DECLARE_TR_FUNCTIONS(CppTools::Internal::CppCodeModelSettingsWidget)
public:
CppCodeModelSettingsWidget(const QSharedPointer<CppCodeModelSettings> &s);
~CppCodeModelSettingsWidget() override;
private:
void apply() final;
void setupGeneralWidgets();
void setupClangCodeModelWidgets();
bool applyGeneralWidgetsToSettings() const;
bool applyClangCodeModelWidgetsToSettings() const;
Ui::CppCodeModelSettingsPage *m_ui = nullptr;
QSharedPointer<CppCodeModelSettings> m_settings;
};
CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const QSharedPointer<CppCodeModelSettings> &s)
: m_ui(new Ui::CppCodeModelSettingsPage)
{
m_ui->setupUi(this);
m_settings = s;
setupGeneralWidgets();
setupClangCodeModelWidgets();
}
CppCodeModelSettingsWidget::~CppCodeModelSettingsWidget()
@@ -50,15 +76,7 @@ CppCodeModelSettingsWidget::~CppCodeModelSettingsWidget()
delete m_ui;
}
void CppCodeModelSettingsWidget::setSettings(const QSharedPointer<CppCodeModelSettings> &s)
{
m_settings = s;
setupGeneralWidgets();
setupClangCodeModelWidgets();
}
void CppCodeModelSettingsWidget::applyToSettings() const
void CppCodeModelSettingsWidget::apply()
{
bool changed = false;
@@ -160,31 +178,14 @@ bool CppCodeModelSettingsWidget::applyGeneralWidgetsToSettings() const
}
CppCodeModelSettingsPage::CppCodeModelSettingsPage(QSharedPointer<CppCodeModelSettings> &settings)
: m_settings(settings)
{
setId(Constants::CPP_CODE_MODEL_SETTINGS_ID);
setDisplayName(QCoreApplication::translate("CppTools",Constants::CPP_CODE_MODEL_SETTINGS_NAME));
setDisplayName(CppCodeModelSettingsWidget::tr("Code Model"));
setCategory(Constants::CPP_SETTINGS_CATEGORY);
setDisplayCategory(QCoreApplication::translate("CppTools", "C++"));
setCategoryIconPath(":/projectexplorer/images/settingscategory_cpp.png");
setWidgetCreator([settings] { return new CppCodeModelSettingsWidget(settings); });
}
QWidget *CppCodeModelSettingsPage::widget()
{
if (!m_widget) {
m_widget = new CppCodeModelSettingsWidget;
m_widget->setSettings(m_settings);
}
return m_widget;
}
void CppCodeModelSettingsPage::apply()
{
if (m_widget)
m_widget->applyToSettings();
}
void CppCodeModelSettingsPage::finish()
{
delete m_widget;
}
} // Internal
} // CppTools

View File

@@ -30,52 +30,14 @@
#include <coreplugin/dialogs/ioptionspage.h>
#include <QPointer>
#include <QWidget>
QT_FORWARD_DECLARE_CLASS(QComboBox)
QT_FORWARD_DECLARE_CLASS(QSettings)
namespace CppTools {
namespace Internal {
namespace Ui { class CppCodeModelSettingsPage; }
class CppCodeModelSettingsWidget: public QWidget
{
Q_OBJECT
public:
CppCodeModelSettingsWidget();
~CppCodeModelSettingsWidget() override;
void setSettings(const QSharedPointer<CppCodeModelSettings> &s);
void applyToSettings() const;
private:
void setupGeneralWidgets();
void setupClangCodeModelWidgets();
bool applyGeneralWidgetsToSettings() const;
bool applyClangCodeModelWidgetsToSettings() const;
private:
Ui::CppCodeModelSettingsPage *m_ui = nullptr;
QSharedPointer<CppCodeModelSettings> m_settings;
};
class CppCodeModelSettingsPage: public Core::IOptionsPage
class CppCodeModelSettingsPage final : public Core::IOptionsPage
{
public:
explicit CppCodeModelSettingsPage(QSharedPointer<CppCodeModelSettings> &settings);
QWidget *widget() override;
void apply() override;
void finish() override;
private:
const QSharedPointer<CppCodeModelSettings> m_settings;
QPointer<CppCodeModelSettingsWidget> m_widget;
};
} // Internal namespace

View File

@@ -65,7 +65,6 @@ const char CPP_CODE_STYLE_SETTINGS_NAME[] = QT_TRANSLATE_NOOP("CppTools", "Code
const char CPP_FILE_SETTINGS_ID[] = "B.Cpp.File Naming";
const char CPP_FILE_SETTINGS_NAME[] = QT_TRANSLATE_NOOP("CppTools", "File Naming");
const char CPP_CODE_MODEL_SETTINGS_ID[] = "C.Cpp.Code Model";
const char CPP_CODE_MODEL_SETTINGS_NAME[] = QT_TRANSLATE_NOOP("CppTools", "Code Model");
const char CPP_DIAGNOSTIC_CONFIG_SETTINGS_ID[] = "C.Cpp.Diagnostic Config";
const char CPP_DIAGNOSTIC_CONFIG_SETTINGS_NAME[] = QT_TRANSLATE_NOOP("CppTools", "Diagnostic Configurations");
const char CPP_SETTINGS_CATEGORY[] = "I.C++";