forked from qt-creator/qt-creator
qmlls: link new settings page from old settings page
Add a button from the old settings page that opens up the new qmlls settings page, for both global and project specific settings. Task-number: QTCREATORBUG-31897 Change-Id: Ib6b83d7b2427aea99b7be0eec6219ba2fb0c2e59 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -18,6 +18,7 @@ namespace Constants {
|
|||||||
|
|
||||||
const char LANGUAGECLIENT_SETTINGS_CATEGORY[] = "ZY.LanguageClient";
|
const char LANGUAGECLIENT_SETTINGS_CATEGORY[] = "ZY.LanguageClient";
|
||||||
const char LANGUAGECLIENT_SETTINGS_PAGE[] = "LanguageClient.General";
|
const char LANGUAGECLIENT_SETTINGS_PAGE[] = "LanguageClient.General";
|
||||||
|
const char LANGUAGECLIENT_SETTINGS_PANEL[] = "LanguageClient.General";
|
||||||
const char LANGUAGECLIENT_STDIO_SETTINGS_ID[] = "LanguageClient::StdIOSettingsID";
|
const char LANGUAGECLIENT_STDIO_SETTINGS_ID[] = "LanguageClient::StdIOSettingsID";
|
||||||
const char LANGUAGECLIENT_SETTINGS_TR[] = QT_TRANSLATE_NOOP("QtC::LanguageClient", "Language Client");
|
const char LANGUAGECLIENT_SETTINGS_TR[] = QT_TRANSLATE_NOOP("QtC::LanguageClient", "Language Client");
|
||||||
const char LANGUAGECLIENT_DOCUMENT_FILTER_ID[] = "Current Document Symbols";
|
const char LANGUAGECLIENT_DOCUMENT_FILTER_ID[] = "Current Document Symbols";
|
||||||
|
@@ -1344,6 +1344,7 @@ public:
|
|||||||
{
|
{
|
||||||
setPriority(35);
|
setPriority(35);
|
||||||
setDisplayName(Tr::tr("Language Server"));
|
setDisplayName(Tr::tr("Language Server"));
|
||||||
|
setId(Constants::LANGUAGECLIENT_SETTINGS_PANEL);
|
||||||
setCreateWidgetFunction([](Project *project) {
|
setCreateWidgetFunction([](Project *project) {
|
||||||
return new LanguageClientProjectSettingsWidget(project);
|
return new LanguageClientProjectSettingsWidget(project);
|
||||||
});
|
});
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include <languageclient/languageclientmanager.h>
|
#include <languageclient/languageclientmanager.h>
|
||||||
#include <languageclient/languageclientsettings.h>
|
#include <languageclient/languageclientsettings.h>
|
||||||
|
|
||||||
|
#include <projectexplorer/projectexplorer.h>
|
||||||
#include <projectexplorer/projectmanager.h>
|
#include <projectexplorer/projectmanager.h>
|
||||||
#include <projectexplorer/projectpanelfactory.h>
|
#include <projectexplorer/projectpanelfactory.h>
|
||||||
#include <projectexplorer/projectsettingswidget.h>
|
#include <projectexplorer/projectsettingswidget.h>
|
||||||
@@ -41,6 +42,7 @@
|
|||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
#include <QTreeView>
|
#include <QTreeView>
|
||||||
|
|
||||||
@@ -259,6 +261,7 @@ public:
|
|||||||
analyzerMessagesView->setContextMenuPolicy(Qt::CustomContextMenu);
|
analyzerMessagesView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
connect(analyzerMessagesView, &QTreeView::customContextMenuRequested,
|
connect(analyzerMessagesView, &QTreeView::customContextMenuRequested,
|
||||||
this, &QmlJsEditingSettingsPageWidget::showContextMenu);
|
this, &QmlJsEditingSettingsPageWidget::showContextMenu);
|
||||||
|
|
||||||
using namespace Layouting;
|
using namespace Layouting;
|
||||||
// clang-format off
|
// clang-format off
|
||||||
QWidget *formattingGroup = nullptr;
|
QWidget *formattingGroup = nullptr;
|
||||||
@@ -292,7 +295,13 @@ public:
|
|||||||
},
|
},
|
||||||
Group {
|
Group {
|
||||||
title(Tr::tr("QML Language Server")),
|
title(Tr::tr("QML Language Server")),
|
||||||
// TODO: link to new settings
|
Row {
|
||||||
|
PushButton {
|
||||||
|
text(Tr::tr("Open Language Server preferences...")),
|
||||||
|
onClicked(this, [] { Core::ICore::showOptionsDialog(LanguageClient::Constants::LANGUAGECLIENT_SETTINGS_PAGE); })
|
||||||
|
},
|
||||||
|
st
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Group {
|
Group {
|
||||||
title(Tr::tr("Static Analyzer")),
|
title(Tr::tr("Static Analyzer")),
|
||||||
@@ -375,77 +384,33 @@ QmlJsEditingSettingsPage::QmlJsEditingSettingsPage()
|
|||||||
setSettingsProvider([] { return &settings(); });
|
setSettingsProvider([] { return &settings(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectSettings::ProjectSettings(Project *project)
|
|
||||||
{
|
|
||||||
setAutoApply(true);
|
|
||||||
|
|
||||||
const Key group = QmlJSEditor::Constants::SETTINGS_CATEGORY_QML;
|
|
||||||
|
|
||||||
useQmlls.setSettingsKey(group, USE_QMLLS);
|
|
||||||
useQmlls.setDefaultValue(true);
|
|
||||||
useQmlls.setLabelText(Tr::tr("Turn on"));
|
|
||||||
useQmlls.setToolTip(Tr::tr("Enable QML Language Server on this project."));
|
|
||||||
|
|
||||||
useGlobalSettings.setSettingsKey(group, USE_GLOBAL_SETTINGS);
|
|
||||||
useGlobalSettings.setDefaultValue(true);
|
|
||||||
|
|
||||||
Store map = storeFromVariant(project->namedSettings(SETTINGS_KEY_MAIN));
|
|
||||||
fromMap(map);
|
|
||||||
|
|
||||||
useQmlls.addOnChanged(this, [this, project] { save(project); });
|
|
||||||
useGlobalSettings.addOnChanged(this, [this, project] { save(project); });
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProjectSettings::save(Project *project)
|
|
||||||
{
|
|
||||||
Store map;
|
|
||||||
toMap(map);
|
|
||||||
project->setNamedSettings(SETTINGS_KEY_MAIN, variantFromStore(map));
|
|
||||||
|
|
||||||
// TODO: this does not do anything for now. Either force re-apply when the functionality
|
|
||||||
// is available in LanguageClient (tracked in QTCREATORBUG-32015) or remove ProjectSettings
|
|
||||||
// class completely in favor of the LanguageClient project specific settings implementation
|
|
||||||
// (tracked in QTCREATORBUG-31987).
|
|
||||||
LanguageClientManager::applySettings();
|
|
||||||
}
|
|
||||||
|
|
||||||
class QmlJsEditingProjectSettingsWidget final : public ProjectSettingsWidget
|
class QmlJsEditingProjectSettingsWidget final : public ProjectSettingsWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit QmlJsEditingProjectSettingsWidget(Project *project)
|
explicit QmlJsEditingProjectSettingsWidget(Project *)
|
||||||
: m_settings{project}
|
|
||||||
{
|
{
|
||||||
setUseGlobalSettingsCheckBoxVisible(true);
|
setUseGlobalSettingsCheckBoxVisible(false);
|
||||||
setGlobalSettingsId(SETTINGS_PAGE);
|
setGlobalSettingsId(SETTINGS_PAGE);
|
||||||
setExpanding(true);
|
setExpanding(true);
|
||||||
|
|
||||||
setUseGlobalSettings(m_settings.useGlobalSettings());
|
|
||||||
|
|
||||||
setEnabled(!m_settings.useGlobalSettings());
|
|
||||||
|
|
||||||
using namespace Layouting;
|
using namespace Layouting;
|
||||||
// clang-format off
|
// clang-format off
|
||||||
Column {
|
Column {
|
||||||
Group {
|
Group {
|
||||||
title(Tr::tr("QML Language Server")),
|
title(Tr::tr("QML Language Server")),
|
||||||
Column {
|
Row {
|
||||||
&m_settings.useQmlls,
|
PushButton {
|
||||||
|
text(Tr::tr("Open Language Server preferences...")),
|
||||||
|
onClicked(this, [] { ProjectExplorerPlugin::activateProjectPanel(LanguageClient::Constants::LANGUAGECLIENT_SETTINGS_PANEL); })
|
||||||
|
},
|
||||||
|
st,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
tight,
|
tight,
|
||||||
st,
|
st,
|
||||||
}.attachTo(this);
|
}.attachTo(this);
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
connect(
|
|
||||||
this, &ProjectSettingsWidget::useGlobalSettingsChanged, this, [this](bool newUseGlobal) {
|
|
||||||
setEnabled(!newUseGlobal);
|
|
||||||
m_settings.useGlobalSettings.setValue(newUseGlobal);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
ProjectSettings m_settings;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class QmlJsEditingProjectPanelFactory : public ProjectPanelFactory
|
class QmlJsEditingProjectPanelFactory : public ProjectPanelFactory
|
||||||
|
@@ -44,17 +44,6 @@ public:
|
|||||||
QmlJsEditingSettingsPage();
|
QmlJsEditingSettingsPage();
|
||||||
};
|
};
|
||||||
|
|
||||||
class ProjectSettings : public Utils::AspectContainer
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ProjectSettings(ProjectExplorer::Project *project);
|
|
||||||
|
|
||||||
Utils::BoolAspect useQmlls{this};
|
|
||||||
Utils::BoolAspect useGlobalSettings{this};
|
|
||||||
|
|
||||||
void save(ProjectExplorer::Project *project);
|
|
||||||
};
|
|
||||||
|
|
||||||
void setupQmlJsEditingProjectPanel();
|
void setupQmlJsEditingProjectPanel();
|
||||||
|
|
||||||
} // QmlJSEditor::Internal
|
} // QmlJSEditor::Internal
|
||||||
|
Reference in New Issue
Block a user