File indexing completed on 2024-05-12 05:13:31

0001 /*
0002    SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "editorpage.h"
0008 #include "KSplitterCollapserButton"
0009 #include "editorwidget.h"
0010 #include "previewwidget.h"
0011 #include "themeeditorwidget.h"
0012 #include "themetemplatewidget.h"
0013 #include <TextCustomEditor/PlainTextEditor>
0014 
0015 #include <KLocalizedString>
0016 
0017 #include <KConfigGroup>
0018 
0019 #include <KSharedConfig>
0020 #include <QSplitter>
0021 #include <QVBoxLayout>
0022 
0023 EditorPage::EditorPage(GrantleeThemeEditor::EditorPage::PageType type, const QString &projectDirectory, QWidget *parent)
0024     : GrantleeThemeEditor::EditorPage(type, parent)
0025 {
0026     auto lay = new QVBoxLayout(this);
0027     lay->setContentsMargins(0, 0, 0, 0);
0028 
0029     mMainSplitter = new QSplitter;
0030     if (mType == MainPage) {
0031         mWidgetSplitter = new QSplitter;
0032         mWidgetSplitter->setOrientation(Qt::Vertical);
0033         mWidgetSplitter->setChildrenCollapsible(false);
0034         lay->addWidget(mWidgetSplitter);
0035 
0036         mWidgetSplitter->addWidget(mMainSplitter);
0037 
0038         mPreview = new PreviewWidget(projectDirectory, this);
0039         mWidgetSplitter->addWidget(mPreview);
0040         connect(mPreview, &PreviewWidget::needUpdateViewer, this, &EditorPage::needUpdateViewer);
0041     } else {
0042         lay->addWidget(mMainSplitter);
0043     }
0044 
0045     mEditor = new ThemeEditorWidget;
0046 
0047     if (mType == MainPage) {
0048         KConfigGroup group(KSharedConfig::openConfig(), QStringLiteral("Global"));
0049         mEditor->setPlainText(group.readEntry("defaultTemplate", QString()));
0050     }
0051     mMainSplitter->addWidget(mEditor);
0052     mThemeTemplate = new ThemeTemplateWidget(i18n("Theme Templates:"));
0053     connect(mThemeTemplate, &ThemeTemplateWidget::insertTemplate, mEditor->editor(), &QPlainTextEdit::insertPlainText);
0054     mMainSplitter->addWidget(mThemeTemplate);
0055     mMainSplitter->setCollapsible(0, false);
0056     new KSplitterCollapserButton(mThemeTemplate, mMainSplitter);
0057 
0058     connect(mEditor->editor(), &QPlainTextEdit::textChanged, this, &GrantleeThemeEditor::EditorPage::changed);
0059 
0060     if (mType == MainPage) {
0061         KConfigGroup group(KSharedConfig::openConfig(), QStringLiteral("EditorPage"));
0062         const QList<int> size{400, 100};
0063         mMainSplitter->setSizes(group.readEntry("mainSplitter", size));
0064         mWidgetSplitter->setSizes(group.readEntry("widgetSplitter", size));
0065     }
0066 }
0067 
0068 EditorPage::~EditorPage()
0069 {
0070     if (mType == MainPage) {
0071         KConfigGroup group(KSharedConfig::openConfig(), QStringLiteral("EditorPage"));
0072         group.writeEntry("mainSplitter", mMainSplitter->sizes());
0073         group.writeEntry("widgetSplitter", mWidgetSplitter->sizes());
0074     }
0075 }
0076 
0077 GrantleeThemeEditor::PreviewWidget *EditorPage::preview() const
0078 {
0079     return mPreview;
0080 }
0081 
0082 #include "moc_editorpage.cpp"