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

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