diff --git a/src/plugins/coco/CMakeLists.txt b/src/plugins/coco/CMakeLists.txt index 81c72afc8d9..7a70c23b50e 100644 --- a/src/plugins/coco/CMakeLists.txt +++ b/src/plugins/coco/CMakeLists.txt @@ -39,8 +39,6 @@ add_qtc_plugin(Coco files/cocoplugin.prf globalsettings.cpp globalsettings.h - globalsettingspage.cpp - globalsettingspage.h images/SquishCoco_48x48.png modificationfile.cpp modificationfile.h diff --git a/src/plugins/coco/coco.qbs b/src/plugins/coco/coco.qbs index 711e86e4880..0395e286435 100644 --- a/src/plugins/coco/coco.qbs +++ b/src/plugins/coco/coco.qbs @@ -45,8 +45,6 @@ QtcPlugin { "files/cocoplugin.prf", "globalsettings.cpp", "globalsettings.h", - "globalsettingspage.cpp", - "globalsettingspage.h", "images/SquishCoco_48x48.png", "modificationfile.cpp", "modificationfile.h", diff --git a/src/plugins/coco/cocoplugin.cpp b/src/plugins/coco/cocoplugin.cpp index a2b754e1544..4162fc5a8af 100644 --- a/src/plugins/coco/cocoplugin.cpp +++ b/src/plugins/coco/cocoplugin.cpp @@ -7,7 +7,6 @@ #include "cocoprojectsettingswidget.h" #include "cocotr.h" #include "globalsettings.h" -#include "globalsettingspage.h" #include #include diff --git a/src/plugins/coco/cocoprojectwidget.cpp b/src/plugins/coco/cocoprojectwidget.cpp index 88138a716c0..88b0d78e321 100644 --- a/src/plugins/coco/cocoprojectwidget.cpp +++ b/src/plugins/coco/cocoprojectwidget.cpp @@ -7,7 +7,7 @@ #include "cococommon.h" #include "cocopluginconstants.h" #include "cocotr.h" -#include "globalsettingspage.h" +#include "globalsettings.h" #include #include diff --git a/src/plugins/coco/globalsettings.cpp b/src/plugins/coco/globalsettings.cpp index 594355964ee..82d71e8d766 100644 --- a/src/plugins/coco/globalsettings.cpp +++ b/src/plugins/coco/globalsettings.cpp @@ -5,9 +5,13 @@ #include "cocoinstallation.h" #include "cocopluginconstants.h" +#include "cocotr.h" #include + +#include #include +#include #include #include @@ -50,4 +54,108 @@ void save() } } // namespace GlobalSettings + +GlobalSettingsWidget::GlobalSettingsWidget(QFrame *parent) + : QFrame(parent) +{ + m_cocoPathAspect.setDefaultPathValue(m_coco.directory()); + m_cocoPathAspect.setExpectedKind(Utils::PathChooser::ExistingDirectory); + m_cocoPathAspect.setPromptDialogTitle(Tr::tr("Coco Installation Directory")); + + connect( + &m_cocoPathAspect, + &Utils::FilePathAspect::changed, + this, + &GlobalSettingsWidget::onCocoPathChanged); + + using namespace Layouting; + Form{ + Column{ + Row{Tr::tr("Coco Directory"), m_cocoPathAspect}, + Row{m_messageLabel}} + }.attachTo(this); +} + +void GlobalSettingsWidget::onCocoPathChanged() +{ + if (!verifyCocoDirectory(m_cocoPathAspect())) + m_cocoPathAspect.setValue(m_previousCocoDir, Utils::BaseAspect::BeQuiet); +} + +bool GlobalSettingsWidget::verifyCocoDirectory(const Utils::FilePath &cocoDir) +{ + m_coco.setDirectory(cocoDir); + m_messageLabel.setText(m_coco.errorMessage()); + if (m_coco.isValid()) + m_messageLabel.setIconType(Utils::InfoLabel::None); + else + m_messageLabel.setIconType(Utils::InfoLabel::Error); + return m_coco.isValid(); +} + +void GlobalSettingsWidget::apply() +{ + if (!verifyCocoDirectory(widgetCocoDir())) + return; + + m_coco.setDirectory(widgetCocoDir()); + GlobalSettings::save(); + + emit updateCocoDir(); +} + +void GlobalSettingsWidget::cancel() +{ + m_coco.setDirectory(m_previousCocoDir); +} + +void GlobalSettingsWidget::setVisible(bool visible) +{ + QFrame::setVisible(visible); + m_previousCocoDir = m_coco.directory(); +} + +Utils::FilePath GlobalSettingsWidget::widgetCocoDir() const +{ + return Utils::FilePath::fromUserInput(m_cocoPathAspect.value()); +} + +GlobalSettingsPage::GlobalSettingsPage() + : m_widget(nullptr) +{ + setId(Constants::COCO_SETTINGS_PAGE_ID); + setDisplayName(QCoreApplication::translate("Coco", "Coco")); + setCategory("I.Coco"); // Category I contains also the C++ settings. +} + +GlobalSettingsPage &GlobalSettingsPage::instance() +{ + static GlobalSettingsPage instance; + return instance; +} + +GlobalSettingsWidget *GlobalSettingsPage::widget() +{ + if (!m_widget) + m_widget = new GlobalSettingsWidget; + return m_widget; +} + +void GlobalSettingsPage::apply() +{ + if (m_widget) + m_widget->apply(); +} + +void GlobalSettingsPage::cancel() +{ + if (m_widget) + m_widget->cancel(); +} + +void GlobalSettingsPage::finish() +{ + delete m_widget; +} + } // namespace Coco::Internal diff --git a/src/plugins/coco/globalsettings.h b/src/plugins/coco/globalsettings.h index e57f7e790f3..5bd4a1107f3 100644 --- a/src/plugins/coco/globalsettings.h +++ b/src/plugins/coco/globalsettings.h @@ -3,11 +3,64 @@ #pragma once +#include "cocoinstallation.h" + +#include + +#include + namespace Coco::Internal { namespace GlobalSettings { void read(); void save(); -} // namespace GlobalSettings +} // GlobalSettings + + +class GlobalSettingsWidget : public QFrame +{ + Q_OBJECT + +public: + GlobalSettingsWidget(QFrame *parent = nullptr); + + void apply(); + void cancel(); + +signals: + void updateCocoDir(); + +public slots: + void setVisible(bool visible) override; + +private: + void onCocoPathChanged(); + + Utils::FilePath widgetCocoDir() const; + bool verifyCocoDirectory(const Utils::FilePath &cocoDir); + + Utils::FilePathAspect m_cocoPathAspect; + Utils::TextDisplay m_messageLabel; + + CocoInstallation m_coco; + Utils::FilePath m_previousCocoDir; +}; + +class GlobalSettingsPage : public Core::IOptionsPage +{ +public: + static GlobalSettingsPage &instance(); + + GlobalSettingsWidget *widget() override; + void apply() override; + void cancel() override; + void finish() override; + +private: + GlobalSettingsPage(); + + QPointer m_widget; +}; + } // namespace Coco::Internal diff --git a/src/plugins/coco/globalsettingspage.cpp b/src/plugins/coco/globalsettingspage.cpp deleted file mode 100644 index c76e424e040..00000000000 --- a/src/plugins/coco/globalsettingspage.cpp +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (C) 2024 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "globalsettingspage.h" - -#include "cocoinstallation.h" -#include "cocopluginconstants.h" -#include "cocotr.h" -#include "globalsettings.h" - -#include -#include - -namespace Coco::Internal { - -GlobalSettingsWidget::GlobalSettingsWidget(QFrame *parent) - : QFrame(parent) -{ - m_cocoPathAspect.setDefaultPathValue(m_coco.directory()); - m_cocoPathAspect.setExpectedKind(Utils::PathChooser::ExistingDirectory); - m_cocoPathAspect.setPromptDialogTitle(Tr::tr("Coco Installation Directory")); - - connect( - &m_cocoPathAspect, - &Utils::FilePathAspect::changed, - this, - &GlobalSettingsWidget::onCocoPathChanged); - - using namespace Layouting; - Form{ - Column{ - Row{Tr::tr("Coco Directory"), m_cocoPathAspect}, - Row{m_messageLabel}} - }.attachTo(this); -} - -void GlobalSettingsWidget::onCocoPathChanged() -{ - if (!verifyCocoDirectory(m_cocoPathAspect())) - m_cocoPathAspect.setValue(m_previousCocoDir, Utils::BaseAspect::BeQuiet); -} - -bool GlobalSettingsWidget::verifyCocoDirectory(const Utils::FilePath &cocoDir) -{ - m_coco.setDirectory(cocoDir); - m_messageLabel.setText(m_coco.errorMessage()); - if (m_coco.isValid()) - m_messageLabel.setIconType(Utils::InfoLabel::None); - else - m_messageLabel.setIconType(Utils::InfoLabel::Error); - return m_coco.isValid(); -} - -void GlobalSettingsWidget::apply() -{ - if (!verifyCocoDirectory(widgetCocoDir())) - return; - - m_coco.setDirectory(widgetCocoDir()); - GlobalSettings::save(); - - emit updateCocoDir(); -} - -void GlobalSettingsWidget::cancel() -{ - m_coco.setDirectory(m_previousCocoDir); -} - -void GlobalSettingsWidget::setVisible(bool visible) -{ - QFrame::setVisible(visible); - m_previousCocoDir = m_coco.directory(); -} - -Utils::FilePath GlobalSettingsWidget::widgetCocoDir() const -{ - return Utils::FilePath::fromUserInput(m_cocoPathAspect.value()); -} - -GlobalSettingsPage::GlobalSettingsPage() - : m_widget(nullptr) -{ - setId(Constants::COCO_SETTINGS_PAGE_ID); - setDisplayName(QCoreApplication::translate("Coco", "Coco")); - setCategory("I.Coco"); // Category I contains also the C++ settings. -} - -GlobalSettingsPage &GlobalSettingsPage::instance() -{ - static GlobalSettingsPage instance; - return instance; -} - -GlobalSettingsWidget *GlobalSettingsPage::widget() -{ - if (!m_widget) - m_widget = new GlobalSettingsWidget; - return m_widget; -} - -void GlobalSettingsPage::apply() -{ - if (m_widget) - m_widget->apply(); -} - -void GlobalSettingsPage::cancel() -{ - if (m_widget) - m_widget->cancel(); -} - -void GlobalSettingsPage::finish() -{ - delete m_widget; -} - -} // namespace Coco::Internal diff --git a/src/plugins/coco/globalsettingspage.h b/src/plugins/coco/globalsettingspage.h deleted file mode 100644 index e55d6881b86..00000000000 --- a/src/plugins/coco/globalsettingspage.h +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (C) 2024 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include "cocoinstallation.h" - -#include - -#include - -namespace Coco::Internal { - -class GlobalSettingsWidget : public QFrame -{ - Q_OBJECT - -public: - GlobalSettingsWidget(QFrame *parent = nullptr); - - void apply(); - void cancel(); - -signals: - void updateCocoDir(); - -public slots: - void setVisible(bool visible) override; - -private: - void onCocoPathChanged(); - - Utils::FilePath widgetCocoDir() const; - bool verifyCocoDirectory(const Utils::FilePath &cocoDir); - - Utils::FilePathAspect m_cocoPathAspect; - Utils::TextDisplay m_messageLabel; - - CocoInstallation m_coco; - Utils::FilePath m_previousCocoDir; -}; - -class GlobalSettingsPage : public Core::IOptionsPage -{ -public: - static GlobalSettingsPage &instance(); - - GlobalSettingsWidget *widget() override; - void apply() override; - void cancel() override; - void finish() override; - -private: - GlobalSettingsPage(); - - QPointer m_widget; -}; - -} // namespace Coco::Internal