forked from qt-creator/qt-creator
Help: Use IOptionPage::setWidgetCreator() for general settings
Change-Id: I71a500cc349fed92c38368989fc258902c942e29 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -23,6 +23,7 @@
|
|||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QFontComboBox>
|
#include <QFontComboBox>
|
||||||
|
#include <QFontDatabase>
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
@@ -35,19 +36,42 @@
|
|||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
#include <QApplication>
|
|
||||||
|
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace Help {
|
namespace Help::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
class GeneralSettingsPageWidget : public QWidget
|
class GeneralSettingsPageWidget : public IOptionsPageWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GeneralSettingsPageWidget();
|
GeneralSettingsPageWidget();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void apply() final;
|
||||||
|
|
||||||
|
void setCurrentPage();
|
||||||
|
void setBlankPage();
|
||||||
|
void setDefaultPage();
|
||||||
|
void importBookmarks();
|
||||||
|
void exportBookmarks();
|
||||||
|
|
||||||
|
void updateFontSizeSelector();
|
||||||
|
void updateFontStyleSelector();
|
||||||
|
void updateFontFamilySelector();
|
||||||
|
void updateFont();
|
||||||
|
int closestPointSizeIndex(int desiredPointSize) const;
|
||||||
|
|
||||||
|
QFont m_font;
|
||||||
|
int m_fontZoom = 100;
|
||||||
|
QFontDatabase m_fontDatabase;
|
||||||
|
|
||||||
|
QString m_homePage;
|
||||||
|
int m_contextOption;
|
||||||
|
|
||||||
|
int m_startOption;
|
||||||
|
bool m_returnOnClose;
|
||||||
|
bool m_scrollWheelZoomingEnabled;
|
||||||
|
|
||||||
QSpinBox *zoomSpinBox;
|
QSpinBox *zoomSpinBox;
|
||||||
QFontComboBox *familyComboBox;
|
QFontComboBox *familyComboBox;
|
||||||
QComboBox *styleComboBox;
|
QComboBox *styleComboBox;
|
||||||
@@ -62,7 +86,7 @@ public:
|
|||||||
QPushButton *importButton;
|
QPushButton *importButton;
|
||||||
QPushButton *exportButton;
|
QPushButton *exportButton;
|
||||||
QCheckBox *scrollWheelZooming;
|
QCheckBox *scrollWheelZooming;
|
||||||
QCheckBox *m_returnOnClose;
|
QCheckBox *m_returnOnCloseCheckBox;
|
||||||
QComboBox *viewerBackend;
|
QComboBox *viewerBackend;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -152,8 +176,8 @@ GeneralSettingsPageWidget::GeneralSettingsPageWidget()
|
|||||||
auto behaviourGroupBox = new QGroupBox(Tr::tr("Behaviour"));
|
auto behaviourGroupBox = new QGroupBox(Tr::tr("Behaviour"));
|
||||||
scrollWheelZooming = new QCheckBox(Tr::tr("Enable scroll wheel zooming"));
|
scrollWheelZooming = new QCheckBox(Tr::tr("Enable scroll wheel zooming"));
|
||||||
|
|
||||||
m_returnOnClose = new QCheckBox(Tr::tr("Return to editor on closing the last page"));
|
m_returnOnCloseCheckBox = new QCheckBox(Tr::tr("Return to editor on closing the last page"));
|
||||||
m_returnOnClose->setToolTip(
|
m_returnOnCloseCheckBox->setToolTip(
|
||||||
Tr::tr("Switches to editor context after last help page is closed."));
|
Tr::tr("Switches to editor context after last help page is closed."));
|
||||||
|
|
||||||
auto viewerBackendLabel = new QLabel(Tr::tr("Viewer backend:"));
|
auto viewerBackendLabel = new QLabel(Tr::tr("Viewer backend:"));
|
||||||
@@ -172,7 +196,7 @@ GeneralSettingsPageWidget::GeneralSettingsPageWidget()
|
|||||||
auto behaviourGroupBoxLayout = new QVBoxLayout;
|
auto behaviourGroupBoxLayout = new QVBoxLayout;
|
||||||
behaviourGroupBox->setLayout(behaviourGroupBoxLayout);
|
behaviourGroupBox->setLayout(behaviourGroupBoxLayout);
|
||||||
behaviourGroupBoxLayout->addWidget(scrollWheelZooming);
|
behaviourGroupBoxLayout->addWidget(scrollWheelZooming);
|
||||||
behaviourGroupBoxLayout->addWidget(m_returnOnClose);
|
behaviourGroupBoxLayout->addWidget(m_returnOnCloseCheckBox);
|
||||||
behaviourGroupBoxLayout->addLayout(viewerBackendLayout);
|
behaviourGroupBoxLayout->addLayout(viewerBackendLayout);
|
||||||
|
|
||||||
// bookmarks
|
// bookmarks
|
||||||
@@ -203,167 +227,145 @@ GeneralSettingsPageWidget::GeneralSettingsPageWidget()
|
|||||||
mainLayout->addWidget(behaviourGroupBox);
|
mainLayout->addWidget(behaviourGroupBox);
|
||||||
mainLayout->addLayout(bookmarksLayout);
|
mainLayout->addLayout(bookmarksLayout);
|
||||||
mainLayout->addStretch(1);
|
mainLayout->addStretch(1);
|
||||||
}
|
|
||||||
|
|
||||||
GeneralSettingsPage::GeneralSettingsPage()
|
m_font = LocalHelpManager::fallbackFont();
|
||||||
{
|
m_fontZoom = LocalHelpManager::fontZoom();
|
||||||
setId("A.General settings");
|
zoomSpinBox->setValue(m_fontZoom);
|
||||||
setDisplayName(Tr::tr("General"));
|
|
||||||
setCategory(Help::Constants::HELP_CATEGORY);
|
|
||||||
setDisplayCategory(Tr::tr("Help"));
|
|
||||||
setCategoryIconPath(":/help/images/settingscategory_help.png");
|
|
||||||
}
|
|
||||||
|
|
||||||
QWidget *GeneralSettingsPage::widget()
|
updateFontSizeSelector();
|
||||||
{
|
updateFontStyleSelector();
|
||||||
if (!m_widget) {
|
updateFontFamilySelector();
|
||||||
m_widget = new GeneralSettingsPageWidget;
|
|
||||||
|
|
||||||
m_font = LocalHelpManager::fallbackFont();
|
connect(familyComboBox, &QFontComboBox::currentFontChanged, this, [this] {
|
||||||
m_fontZoom = LocalHelpManager::fontZoom();
|
updateFont();
|
||||||
m_widget->zoomSpinBox->setValue(m_fontZoom);
|
|
||||||
|
|
||||||
updateFontSizeSelector();
|
|
||||||
updateFontStyleSelector();
|
updateFontStyleSelector();
|
||||||
updateFontFamilySelector();
|
updateFontSizeSelector();
|
||||||
|
updateFont(); // changes that might have happened when updating the selectors
|
||||||
|
});
|
||||||
|
|
||||||
connect(m_widget->familyComboBox, &QFontComboBox::currentFontChanged, this, [this] {
|
connect(styleComboBox, &QComboBox::currentIndexChanged, this, [this] {
|
||||||
updateFont();
|
updateFont();
|
||||||
updateFontStyleSelector();
|
updateFontSizeSelector();
|
||||||
updateFontSizeSelector();
|
updateFont(); // changes that might have happened when updating the selectors
|
||||||
updateFont(); // changes that might have happened when updating the selectors
|
});
|
||||||
});
|
|
||||||
|
|
||||||
connect(m_widget->styleComboBox, &QComboBox::currentIndexChanged, this, [this] {
|
connect(sizeComboBox, &QComboBox::currentIndexChanged,
|
||||||
updateFont();
|
this, &GeneralSettingsPageWidget::updateFont);
|
||||||
updateFontSizeSelector();
|
|
||||||
updateFont(); // changes that might have happened when updating the selectors
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(m_widget->sizeComboBox, &QComboBox::currentIndexChanged,
|
connect(zoomSpinBox, &QSpinBox::valueChanged,
|
||||||
this, &GeneralSettingsPage::updateFont);
|
this, [this](int value) { m_fontZoom = value; });
|
||||||
|
|
||||||
connect(m_widget->zoomSpinBox, &QSpinBox::valueChanged,
|
m_homePage = LocalHelpManager::homePage();
|
||||||
this, [this](int value) { m_fontZoom = value; });
|
homePageLineEdit->setText(m_homePage);
|
||||||
|
|
||||||
m_homePage = LocalHelpManager::homePage();
|
m_startOption = LocalHelpManager::startOption();
|
||||||
m_widget->homePageLineEdit->setText(m_homePage);
|
helpStartComboBox->setCurrentIndex(m_startOption);
|
||||||
|
|
||||||
m_startOption = LocalHelpManager::startOption();
|
m_contextOption = LocalHelpManager::contextHelpOption();
|
||||||
m_widget->helpStartComboBox->setCurrentIndex(m_startOption);
|
contextHelpComboBox->setCurrentIndex(m_contextOption);
|
||||||
|
|
||||||
m_contextOption = LocalHelpManager::contextHelpOption();
|
connect(currentPageButton, &QPushButton::clicked,
|
||||||
m_widget->contextHelpComboBox->setCurrentIndex(m_contextOption);
|
this, &GeneralSettingsPageWidget::setCurrentPage);
|
||||||
|
connect(blankPageButton, &QPushButton::clicked,
|
||||||
|
this, &GeneralSettingsPageWidget::setBlankPage);
|
||||||
|
connect(defaultPageButton, &QPushButton::clicked,
|
||||||
|
this, &GeneralSettingsPageWidget::setDefaultPage);
|
||||||
|
|
||||||
connect(m_widget->currentPageButton, &QPushButton::clicked,
|
HelpViewer *viewer = HelpPlugin::modeHelpWidget()->currentViewer();
|
||||||
this, &GeneralSettingsPage::setCurrentPage);
|
if (!viewer)
|
||||||
connect(m_widget->blankPageButton, &QPushButton::clicked,
|
currentPageButton->setEnabled(false);
|
||||||
this, &GeneralSettingsPage::setBlankPage);
|
|
||||||
connect(m_widget->defaultPageButton,
|
|
||||||
&QPushButton::clicked,
|
|
||||||
this,
|
|
||||||
&GeneralSettingsPage::setDefaultPage);
|
|
||||||
|
|
||||||
HelpViewer *viewer = HelpPlugin::modeHelpWidget()->currentViewer();
|
errorLabel->setVisible(false);
|
||||||
if (!viewer)
|
connect(importButton, &QPushButton::clicked,
|
||||||
m_widget->currentPageButton->setEnabled(false);
|
this, &GeneralSettingsPageWidget::importBookmarks);
|
||||||
|
connect(exportButton, &QPushButton::clicked,
|
||||||
|
this, &GeneralSettingsPageWidget::exportBookmarks);
|
||||||
|
|
||||||
m_widget->errorLabel->setVisible(false);
|
m_returnOnClose = LocalHelpManager::returnOnClose();
|
||||||
connect(m_widget->importButton, &QPushButton::clicked,
|
m_returnOnCloseCheckBox->setChecked(m_returnOnClose);
|
||||||
this, &GeneralSettingsPage::importBookmarks);
|
|
||||||
connect(m_widget->exportButton, &QPushButton::clicked,
|
|
||||||
this, &GeneralSettingsPage::exportBookmarks);
|
|
||||||
|
|
||||||
m_returnOnClose = LocalHelpManager::returnOnClose();
|
m_scrollWheelZoomingEnabled = LocalHelpManager::isScrollWheelZoomingEnabled();
|
||||||
m_widget->m_returnOnClose->setChecked(m_returnOnClose);
|
scrollWheelZooming->setChecked(m_scrollWheelZoomingEnabled);
|
||||||
|
|
||||||
m_scrollWheelZoomingEnabled = LocalHelpManager::isScrollWheelZoomingEnabled();
|
viewerBackend->addItem(
|
||||||
m_widget->scrollWheelZooming->setChecked(m_scrollWheelZoomingEnabled);
|
Tr::tr("Default (%1)", "Default viewer backend")
|
||||||
|
.arg(LocalHelpManager::defaultViewerBackend().displayName));
|
||||||
m_widget->viewerBackend->addItem(
|
const QByteArray currentBackend = LocalHelpManager::viewerBackendId();
|
||||||
Tr::tr("Default (%1)", "Default viewer backend")
|
const QVector<HelpViewerFactory> backends = LocalHelpManager::viewerBackends();
|
||||||
.arg(LocalHelpManager::defaultViewerBackend().displayName));
|
for (const HelpViewerFactory &f : backends) {
|
||||||
const QByteArray currentBackend = LocalHelpManager::viewerBackendId();
|
viewerBackend->addItem(f.displayName, f.id);
|
||||||
const QVector<HelpViewerFactory> backends = LocalHelpManager::viewerBackends();
|
if (f.id == currentBackend)
|
||||||
for (const HelpViewerFactory &f : backends) {
|
viewerBackend->setCurrentIndex(viewerBackend->count() - 1);
|
||||||
m_widget->viewerBackend->addItem(f.displayName, f.id);
|
|
||||||
if (f.id == currentBackend)
|
|
||||||
m_widget->viewerBackend->setCurrentIndex(m_widget->viewerBackend->count() - 1);
|
|
||||||
}
|
|
||||||
if (backends.size() == 1)
|
|
||||||
m_widget->viewerBackend->setEnabled(false);
|
|
||||||
}
|
}
|
||||||
return m_widget;
|
if (backends.size() == 1)
|
||||||
|
viewerBackend->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::apply()
|
void GeneralSettingsPageWidget::apply()
|
||||||
{
|
{
|
||||||
if (!m_widget) // page was never shown
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (m_font != LocalHelpManager::fallbackFont())
|
if (m_font != LocalHelpManager::fallbackFont())
|
||||||
LocalHelpManager::setFallbackFont(m_font);
|
LocalHelpManager::setFallbackFont(m_font);
|
||||||
|
|
||||||
if (m_fontZoom != LocalHelpManager::fontZoom())
|
if (m_fontZoom != LocalHelpManager::fontZoom())
|
||||||
LocalHelpManager::setFontZoom(m_fontZoom);
|
LocalHelpManager::setFontZoom(m_fontZoom);
|
||||||
|
|
||||||
QString homePage = QUrl::fromUserInput(m_widget->homePageLineEdit->text()).toString();
|
QString homePage = QUrl::fromUserInput(homePageLineEdit->text()).toString();
|
||||||
if (homePage.isEmpty())
|
if (homePage.isEmpty())
|
||||||
homePage = Help::Constants::AboutBlank;
|
homePage = Help::Constants::AboutBlank;
|
||||||
m_widget->homePageLineEdit->setText(homePage);
|
homePageLineEdit->setText(homePage);
|
||||||
if (m_homePage != homePage) {
|
if (m_homePage != homePage) {
|
||||||
m_homePage = homePage;
|
m_homePage = homePage;
|
||||||
LocalHelpManager::setHomePage(homePage);
|
LocalHelpManager::setHomePage(homePage);
|
||||||
}
|
}
|
||||||
|
|
||||||
const int startOption = m_widget->helpStartComboBox->currentIndex();
|
const int startOption = helpStartComboBox->currentIndex();
|
||||||
if (m_startOption != startOption) {
|
if (m_startOption != startOption) {
|
||||||
m_startOption = startOption;
|
m_startOption = startOption;
|
||||||
LocalHelpManager::setStartOption(LocalHelpManager::StartOption(m_startOption));
|
LocalHelpManager::setStartOption(LocalHelpManager::StartOption(m_startOption));
|
||||||
}
|
}
|
||||||
|
|
||||||
const int helpOption = m_widget->contextHelpComboBox->currentIndex();
|
const int helpOption = contextHelpComboBox->currentIndex();
|
||||||
if (m_contextOption != helpOption) {
|
if (m_contextOption != helpOption) {
|
||||||
m_contextOption = helpOption;
|
m_contextOption = helpOption;
|
||||||
LocalHelpManager::setContextHelpOption(HelpManager::HelpViewerLocation(m_contextOption));
|
LocalHelpManager::setContextHelpOption(HelpManager::HelpViewerLocation(m_contextOption));
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool close = m_widget->m_returnOnClose->isChecked();
|
const bool close = m_returnOnCloseCheckBox->isChecked();
|
||||||
if (m_returnOnClose != close) {
|
if (m_returnOnClose != close) {
|
||||||
m_returnOnClose = close;
|
m_returnOnClose = close;
|
||||||
LocalHelpManager::setReturnOnClose(m_returnOnClose);
|
LocalHelpManager::setReturnOnClose(m_returnOnClose);
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool zoom = m_widget->scrollWheelZooming->isChecked();
|
const bool zoom = scrollWheelZooming->isChecked();
|
||||||
if (m_scrollWheelZoomingEnabled != zoom) {
|
if (m_scrollWheelZoomingEnabled != zoom) {
|
||||||
m_scrollWheelZoomingEnabled = zoom;
|
m_scrollWheelZoomingEnabled = zoom;
|
||||||
LocalHelpManager::setScrollWheelZoomingEnabled(m_scrollWheelZoomingEnabled);
|
LocalHelpManager::setScrollWheelZoomingEnabled(m_scrollWheelZoomingEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QByteArray viewerBackendId = m_widget->viewerBackend->currentData().toByteArray();
|
const QByteArray viewerBackendId = viewerBackend->currentData().toByteArray();
|
||||||
LocalHelpManager::setViewerBackendId(viewerBackendId);
|
LocalHelpManager::setViewerBackendId(viewerBackendId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::setCurrentPage()
|
void GeneralSettingsPageWidget::setCurrentPage()
|
||||||
{
|
{
|
||||||
HelpViewer *viewer = HelpPlugin::modeHelpWidget()->currentViewer();
|
HelpViewer *viewer = HelpPlugin::modeHelpWidget()->currentViewer();
|
||||||
if (viewer)
|
if (viewer)
|
||||||
m_widget->homePageLineEdit->setText(viewer->source().toString());
|
homePageLineEdit->setText(viewer->source().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::setBlankPage()
|
void GeneralSettingsPageWidget::setBlankPage()
|
||||||
{
|
{
|
||||||
m_widget->homePageLineEdit->setText(Help::Constants::AboutBlank);
|
homePageLineEdit->setText(Help::Constants::AboutBlank);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::setDefaultPage()
|
void GeneralSettingsPageWidget::setDefaultPage()
|
||||||
{
|
{
|
||||||
m_widget->homePageLineEdit->setText(LocalHelpManager::defaultHomePage());
|
homePageLineEdit->setText(LocalHelpManager::defaultHomePage());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::importBookmarks()
|
void GeneralSettingsPageWidget::importBookmarks()
|
||||||
{
|
{
|
||||||
m_widget->errorLabel->setVisible(false);
|
errorLabel->setVisible(false);
|
||||||
|
|
||||||
FilePath filePath = FileUtils::getOpenFilePath(nullptr,
|
FilePath filePath = FileUtils::getOpenFilePath(nullptr,
|
||||||
Tr::tr("Import Bookmarks"),
|
Tr::tr("Import Bookmarks"),
|
||||||
@@ -381,13 +383,13 @@ void GeneralSettingsPage::importBookmarks()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_widget->errorLabel->setVisible(true);
|
errorLabel->setVisible(true);
|
||||||
m_widget->errorLabel->setText(Tr::tr("Cannot import bookmarks."));
|
errorLabel->setText(Tr::tr("Cannot import bookmarks."));
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::exportBookmarks()
|
void GeneralSettingsPageWidget::exportBookmarks()
|
||||||
{
|
{
|
||||||
m_widget->errorLabel->setVisible(false);
|
errorLabel->setVisible(false);
|
||||||
|
|
||||||
FilePath filePath = FileUtils::getSaveFilePath(nullptr,
|
FilePath filePath = FileUtils::getSaveFilePath(nullptr,
|
||||||
Tr::tr("Save File"),
|
Tr::tr("Save File"),
|
||||||
@@ -405,12 +407,12 @@ void GeneralSettingsPage::exportBookmarks()
|
|||||||
saver.setResult(&writer);
|
saver.setResult(&writer);
|
||||||
}
|
}
|
||||||
if (!saver.finalize()) {
|
if (!saver.finalize()) {
|
||||||
m_widget->errorLabel->setVisible(true);
|
errorLabel->setVisible(true);
|
||||||
m_widget->errorLabel->setText(saver.errorString());
|
errorLabel->setText(saver.errorString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::updateFontSizeSelector()
|
void GeneralSettingsPageWidget::updateFontSizeSelector()
|
||||||
{
|
{
|
||||||
const QString &family = m_font.family();
|
const QString &family = m_font.family();
|
||||||
const QString &fontStyle = m_fontDatabase.styleString(m_font);
|
const QString &fontStyle = m_fontDatabase.styleString(m_font);
|
||||||
@@ -419,81 +421,81 @@ void GeneralSettingsPage::updateFontSizeSelector()
|
|||||||
if (pointSizes.empty())
|
if (pointSizes.empty())
|
||||||
pointSizes = QFontDatabase::standardSizes();
|
pointSizes = QFontDatabase::standardSizes();
|
||||||
|
|
||||||
QSignalBlocker blocker(m_widget->sizeComboBox);
|
QSignalBlocker blocker(sizeComboBox);
|
||||||
m_widget->sizeComboBox->clear();
|
sizeComboBox->clear();
|
||||||
m_widget->sizeComboBox->setCurrentIndex(-1);
|
sizeComboBox->setCurrentIndex(-1);
|
||||||
m_widget->sizeComboBox->setEnabled(!pointSizes.empty());
|
sizeComboBox->setEnabled(!pointSizes.empty());
|
||||||
|
|
||||||
// try to maintain selection or select closest.
|
// try to maintain selection or select closest.
|
||||||
if (!pointSizes.empty()) {
|
if (!pointSizes.empty()) {
|
||||||
QString n;
|
QString n;
|
||||||
for (int pointSize : std::as_const(pointSizes))
|
for (int pointSize : std::as_const(pointSizes))
|
||||||
m_widget->sizeComboBox->addItem(n.setNum(pointSize), QVariant(pointSize));
|
sizeComboBox->addItem(n.setNum(pointSize), QVariant(pointSize));
|
||||||
const int closestIndex = closestPointSizeIndex(m_font.pointSize());
|
const int closestIndex = closestPointSizeIndex(m_font.pointSize());
|
||||||
if (closestIndex != -1)
|
if (closestIndex != -1)
|
||||||
m_widget->sizeComboBox->setCurrentIndex(closestIndex);
|
sizeComboBox->setCurrentIndex(closestIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::updateFontStyleSelector()
|
void GeneralSettingsPageWidget::updateFontStyleSelector()
|
||||||
{
|
{
|
||||||
const QString &fontStyle = m_fontDatabase.styleString(m_font);
|
const QString &fontStyle = m_fontDatabase.styleString(m_font);
|
||||||
const QStringList &styles = m_fontDatabase.styles(m_font.family());
|
const QStringList &styles = m_fontDatabase.styles(m_font.family());
|
||||||
|
|
||||||
QSignalBlocker blocker(m_widget->styleComboBox);
|
QSignalBlocker blocker(styleComboBox);
|
||||||
m_widget->styleComboBox->clear();
|
styleComboBox->clear();
|
||||||
m_widget->styleComboBox->setCurrentIndex(-1);
|
styleComboBox->setCurrentIndex(-1);
|
||||||
m_widget->styleComboBox->setEnabled(!styles.empty());
|
styleComboBox->setEnabled(!styles.empty());
|
||||||
|
|
||||||
if (!styles.empty()) {
|
if (!styles.empty()) {
|
||||||
int normalIndex = -1;
|
int normalIndex = -1;
|
||||||
const QString normalStyle = "Normal";
|
const QString normalStyle = "Normal";
|
||||||
for (const QString &style : styles) {
|
for (const QString &style : styles) {
|
||||||
// try to maintain selection or select 'normal' preferably
|
// try to maintain selection or select 'normal' preferably
|
||||||
const int newIndex = m_widget->styleComboBox->count();
|
const int newIndex = styleComboBox->count();
|
||||||
m_widget->styleComboBox->addItem(style);
|
styleComboBox->addItem(style);
|
||||||
if (fontStyle == style) {
|
if (fontStyle == style) {
|
||||||
m_widget->styleComboBox->setCurrentIndex(newIndex);
|
styleComboBox->setCurrentIndex(newIndex);
|
||||||
} else {
|
} else {
|
||||||
if (fontStyle == normalStyle)
|
if (fontStyle == normalStyle)
|
||||||
normalIndex = newIndex;
|
normalIndex = newIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_widget->styleComboBox->currentIndex() == -1 && normalIndex != -1)
|
if (styleComboBox->currentIndex() == -1 && normalIndex != -1)
|
||||||
m_widget->styleComboBox->setCurrentIndex(normalIndex);
|
styleComboBox->setCurrentIndex(normalIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::updateFontFamilySelector()
|
void GeneralSettingsPageWidget::updateFontFamilySelector()
|
||||||
{
|
{
|
||||||
m_widget->familyComboBox->setCurrentFont(m_font);
|
familyComboBox->setCurrentFont(m_font);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::updateFont()
|
void GeneralSettingsPageWidget::updateFont()
|
||||||
{
|
{
|
||||||
const QString &family = m_widget->familyComboBox->currentFont().family();
|
const QString &family = familyComboBox->currentFont().family();
|
||||||
m_font.setFamily(family);
|
m_font.setFamily(family);
|
||||||
|
|
||||||
int fontSize = 14;
|
int fontSize = 14;
|
||||||
int currentIndex = m_widget->sizeComboBox->currentIndex();
|
int currentIndex = sizeComboBox->currentIndex();
|
||||||
if (currentIndex != -1)
|
if (currentIndex != -1)
|
||||||
fontSize = m_widget->sizeComboBox->itemData(currentIndex).toInt();
|
fontSize = sizeComboBox->itemData(currentIndex).toInt();
|
||||||
m_font.setPointSize(fontSize);
|
m_font.setPointSize(fontSize);
|
||||||
|
|
||||||
currentIndex = m_widget->styleComboBox->currentIndex();
|
currentIndex = styleComboBox->currentIndex();
|
||||||
if (currentIndex != -1)
|
if (currentIndex != -1)
|
||||||
m_font.setStyleName(m_widget->styleComboBox->itemText(currentIndex));
|
m_font.setStyleName(styleComboBox->itemText(currentIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
int GeneralSettingsPage::closestPointSizeIndex(int desiredPointSize) const
|
int GeneralSettingsPageWidget::closestPointSizeIndex(int desiredPointSize) const
|
||||||
{
|
{
|
||||||
// try to maintain selection or select closest.
|
// try to maintain selection or select closest.
|
||||||
int closestIndex = -1;
|
int closestIndex = -1;
|
||||||
int closestAbsError = 0xFFFF;
|
int closestAbsError = 0xFFFF;
|
||||||
|
|
||||||
const int pointSizeCount = m_widget->sizeComboBox->count();
|
const int pointSizeCount = sizeComboBox->count();
|
||||||
for (int i = 0; i < pointSizeCount; i++) {
|
for (int i = 0; i < pointSizeCount; i++) {
|
||||||
const int itemPointSize = m_widget->sizeComboBox->itemData(i).toInt();
|
const int itemPointSize = sizeComboBox->itemData(i).toInt();
|
||||||
const int absError = qAbs(desiredPointSize - itemPointSize);
|
const int absError = qAbs(desiredPointSize - itemPointSize);
|
||||||
if (absError < closestAbsError) {
|
if (absError < closestAbsError) {
|
||||||
closestIndex = i;
|
closestIndex = i;
|
||||||
@@ -508,10 +510,16 @@ int GeneralSettingsPage::closestPointSizeIndex(int desiredPointSize) const
|
|||||||
return closestIndex;
|
return closestIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeneralSettingsPage::finish()
|
// GeneralSettingPage
|
||||||
|
|
||||||
|
GeneralSettingsPage::GeneralSettingsPage()
|
||||||
{
|
{
|
||||||
delete m_widget;
|
setId("A.General settings");
|
||||||
|
setDisplayName(Tr::tr("General"));
|
||||||
|
setCategory(Help::Constants::HELP_CATEGORY);
|
||||||
|
setDisplayCategory(Tr::tr("Help"));
|
||||||
|
setCategoryIconPath(":/help/images/settingscategory_help.png");
|
||||||
|
setWidgetCreator([] { return new GeneralSettingsPageWidget; });
|
||||||
}
|
}
|
||||||
|
|
||||||
} // Internal
|
} // Help::Interal
|
||||||
} // Help
|
|
||||||
|
|||||||
@@ -5,51 +5,12 @@
|
|||||||
|
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
|
|
||||||
#include <QFontDatabase>
|
namespace Help::Internal {
|
||||||
#include <QPointer>
|
|
||||||
|
|
||||||
namespace Help {
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
class GeneralSettingsPageWidget;
|
|
||||||
|
|
||||||
class GeneralSettingsPage : public Core::IOptionsPage
|
class GeneralSettingsPage : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GeneralSettingsPage();
|
GeneralSettingsPage();
|
||||||
|
|
||||||
QWidget *widget() override;
|
|
||||||
void apply() override;
|
|
||||||
void finish() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
void setCurrentPage();
|
|
||||||
void setBlankPage();
|
|
||||||
void setDefaultPage();
|
|
||||||
void importBookmarks();
|
|
||||||
void exportBookmarks();
|
|
||||||
|
|
||||||
void updateFontSizeSelector();
|
|
||||||
void updateFontStyleSelector();
|
|
||||||
void updateFontFamilySelector();
|
|
||||||
void updateFont();
|
|
||||||
int closestPointSizeIndex(int desiredPointSize) const;
|
|
||||||
|
|
||||||
QFont m_font;
|
|
||||||
int m_fontZoom = 100;
|
|
||||||
QFontDatabase m_fontDatabase;
|
|
||||||
|
|
||||||
QString m_homePage;
|
|
||||||
int m_contextOption;
|
|
||||||
|
|
||||||
int m_startOption;
|
|
||||||
bool m_returnOnClose;
|
|
||||||
bool m_scrollWheelZoomingEnabled;
|
|
||||||
|
|
||||||
QPointer<GeneralSettingsPageWidget> m_widget;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // Internal
|
} // Help::Internal
|
||||||
} // Help
|
|
||||||
|
|||||||
Reference in New Issue
Block a user