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"