1 /*
2 SPDX-FileCopyrightText: 2015-2021 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "editorpage.h"
8 #include "KSplitterCollapserButton"
9 #include "contactprintthemeeditorutil.h"
10 #include "contactprintthemepreview.h"
11 #include "editorwidget.h"
12 #include "previewwidget.h"
13 #include "themeeditorwidget.h"
14 #include "themetemplatewidget.h"
15 #include <KPIMTextEdit/PlainTextEditor>
16
17 #include <KLocalizedString>
18
19 #include <KConfigGroup>
20
21 #include <KSharedConfig>
22 #include <QSplitter>
23 #include <QVBoxLayout>
24
EditorPage(GrantleeThemeEditor::EditorPage::PageType type,const QString & projectDirectory,QWidget * parent)25 EditorPage::EditorPage(GrantleeThemeEditor::EditorPage::PageType type, const QString &projectDirectory, QWidget *parent)
26 : GrantleeThemeEditor::EditorPage(type, parent)
27 {
28 QVBoxLayout *lay = new QVBoxLayout(this);
29 lay->setContentsMargins(0, 0, 0, 0);
30
31 mMainSplitter = new QSplitter;
32 if (mType == MainPage) {
33 mWidgetSplitter = new QSplitter;
34 mWidgetSplitter->setOrientation(Qt::Vertical);
35 mWidgetSplitter->setChildrenCollapsible(false);
36 lay->addWidget(mWidgetSplitter);
37
38 mWidgetSplitter->addWidget(mMainSplitter);
39
40 mPreview = new ContactPrintThemePreview(projectDirectory);
41 mWidgetSplitter->addWidget(mPreview);
42 connect(mPreview, &ContactPrintThemePreview::needUpdateViewer, this, &EditorPage::needUpdateViewer);
43 } else {
44 lay->addWidget(mMainSplitter);
45 }
46
47 mEditor = new ThemeEditorWidget;
48
49 if (mType == MainPage) {
50 ContactPrintThemeEditorutil contactUtil;
51 KConfigGroup group(KSharedConfig::openConfig(), QStringLiteral("Global"));
52 mEditor->setPlainText(group.readEntry("defaultTemplate", contactUtil.defaultTemplate()));
53 }
54 mMainSplitter->addWidget(mEditor);
55 mThemeTemplate = new ThemeTemplateWidget(i18n("Theme Templates:"));
56 connect(mThemeTemplate, &ThemeTemplateWidget::insertTemplate, mEditor->editor(), &QPlainTextEdit::insertPlainText);
57 mMainSplitter->addWidget(mThemeTemplate);
58 mMainSplitter->setCollapsible(0, false);
59 new KSplitterCollapserButton(mThemeTemplate, mMainSplitter);
60
61 connect(mEditor->editor(), &QPlainTextEdit::textChanged, this, &GrantleeThemeEditor::EditorPage::changed);
62
63 if (mType == MainPage) {
64 KConfigGroup group(KSharedConfig::openConfig(), "EditorPage");
65 const QList<int> size{400, 100};
66 mMainSplitter->setSizes(group.readEntry("mainSplitter", size));
67 mWidgetSplitter->setSizes(group.readEntry("widgetSplitter", size));
68 }
69 }
70
~EditorPage()71 EditorPage::~EditorPage()
72 {
73 if (mType == MainPage) {
74 KConfigGroup group(KSharedConfig::openConfig(), "EditorPage");
75 group.writeEntry("mainSplitter", mMainSplitter->sizes());
76 group.writeEntry("widgetSplitter", mWidgetSplitter->sizes());
77 }
78 }
79
preview() const80 ContactPrintThemePreview *EditorPage::preview() const
81 {
82 return mPreview;
83 }
84