File indexing completed on 2024-04-28 04:37:16
0001 /* 0002 SPDX-FileCopyrightText: 2014 Alex Richardson <arichardson.kde@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "editorconfigpage.h" 0008 0009 #include <QIcon> 0010 #include <QVBoxLayout> 0011 0012 #include <KLocalizedString> 0013 0014 #include <KTextEditor/Editor> 0015 0016 using namespace KDevelop; 0017 0018 namespace { 0019 0020 class KTextEditorConfigPageAdapter : public ConfigPage 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 explicit KTextEditorConfigPageAdapter(KTextEditor::ConfigPage* page, QWidget* parent = nullptr) 0026 : ConfigPage(nullptr, nullptr, parent), m_page(page) 0027 { 0028 page->setParent(this); 0029 0030 auto* layout = new QVBoxLayout(this); 0031 layout->setContentsMargins(0, 0, 0, 0); 0032 layout->addWidget(page); 0033 setLayout(layout); 0034 0035 connect(page, &KTextEditor::ConfigPage::changed, 0036 this, &ConfigPage::changed); 0037 } 0038 0039 ~KTextEditorConfigPageAdapter() override {} 0040 0041 QString name() const override 0042 { 0043 return m_page->name(); 0044 } 0045 0046 QIcon icon() const override 0047 { 0048 return m_page->icon(); 0049 } 0050 0051 QString fullName() const override 0052 { 0053 return m_page->fullName(); 0054 } 0055 0056 public Q_SLOTS: 0057 void apply() override 0058 { 0059 m_page->apply(); 0060 } 0061 void defaults() override 0062 { 0063 m_page->defaults(); 0064 } 0065 void reset() override 0066 { 0067 m_page->reset(); 0068 } 0069 0070 protected: 0071 bool needsResetDuringInitialization() const override 0072 { 0073 // Optimization: KateThemeConfigPage::reset() is very slow (takes about 600 ms); 0074 // neither KTextEditor nor Kate calls reset() after creating a KTextEditor::ConfigPage. 0075 return false; 0076 } 0077 0078 private: 0079 KTextEditor::ConfigPage* const m_page; 0080 }; 0081 0082 } 0083 0084 EditorConfigPage::EditorConfigPage(QWidget* parent) 0085 : ConfigPage(nullptr, nullptr, parent) 0086 { 0087 setObjectName(QStringLiteral("editorconfig")); 0088 } 0089 0090 EditorConfigPage::~EditorConfigPage() {} 0091 0092 QString EditorConfigPage::name() const 0093 { 0094 return i18nc("@title:tab", "Editor"); 0095 } 0096 0097 QIcon EditorConfigPage::icon() const 0098 { 0099 return QIcon::fromTheme(QStringLiteral("accessories-text-editor")); 0100 } 0101 0102 QString EditorConfigPage::fullName() const 0103 { 0104 return i18n("Configure Text Editor"); 0105 } 0106 0107 int EditorConfigPage::childPages() const 0108 { 0109 return KTextEditor::Editor::instance()->configPages(); 0110 } 0111 0112 ConfigPage* EditorConfigPage::childPage(int number) 0113 { 0114 auto page = KTextEditor::Editor::instance()->configPage(number, this); 0115 if (page) { 0116 return new KTextEditorConfigPageAdapter(page, this); 0117 } 0118 return nullptr; 0119 } 0120 0121 #include "editorconfigpage.moc" 0122 #include "moc_editorconfigpage.cpp"