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 #include "previewwidget.h"
0007 #include "themeeditorutil.h"
0008 #include <MessageViewer/GrantleeHeaderTestStyle>
0009 #include <MessageViewer/HeaderStrategy>
0010 #include <MessageViewer/Viewer>
0011 
0012 #include <KConfigGroup>
0013 #include <KLocalizedString>
0014 #include <QPushButton>
0015 
0016 #include <KSharedConfig>
0017 #include <QVBoxLayout>
0018 
0019 PreviewWidget::PreviewWidget(const QString &projectDirectory, QWidget *parent)
0020     : GrantleeThemeEditor::PreviewWidget(parent)
0021 {
0022     auto lay = new QVBoxLayout(this);
0023     lay->setContentsMargins(0, 0, 0, 0);
0024     mViewer = new MessageViewer::Viewer(this);
0025     mGrantleeHeaderStyle = new MessageViewer::GrantleeHeaderTestStyle;
0026     mGrantleeHeaderStyle->setAbsolutePath(projectDirectory);
0027     // Default
0028     mGrantleeHeaderStyle->setMainFilename(QStringLiteral("header.html"));
0029 #if 0 // TODO_PORT_PLUGIN
0030     mViewer->setHeaderStyleAndStrategy(mGrantleeHeaderStyle,
0031                                        MessageViewer::HeaderStrategy::create(QString()));
0032 #endif
0033     lay->addWidget(mViewer);
0034     auto update = new QPushButton(i18n("Update view"));
0035     connect(update, &QPushButton::clicked, this, &PreviewWidget::needUpdateViewer);
0036     lay->addWidget(update);
0037 }
0038 
0039 PreviewWidget::~PreviewWidget()
0040 {
0041     delete mGrantleeHeaderStyle;
0042 }
0043 
0044 void PreviewWidget::slotExtraHeaderDisplayChanged(const QStringList &headers)
0045 {
0046     mGrantleeHeaderStyle->setExtraDisplayHeaders(headers);
0047     updateViewer();
0048 }
0049 
0050 void PreviewWidget::slotMainFileNameChanged(const QString &filename)
0051 {
0052     mGrantleeHeaderStyle->setMainFilename(filename);
0053     updateViewer();
0054 }
0055 
0056 void PreviewWidget::loadConfig()
0057 {
0058     KSharedConfig::Ptr config = KSharedConfig::openConfig();
0059     ThemeEditorUtil themeutil;
0060     if (config->hasGroup(QStringLiteral("Global"))) {
0061         KConfigGroup group = config->group(QStringLiteral("Global"));
0062         mDefaultEmail = group.readEntry("defaultEmail", themeutil.defaultMail()).toLatin1();
0063     } else {
0064         mDefaultEmail = themeutil.defaultMail().toLatin1();
0065     }
0066     updateViewer();
0067 }
0068 
0069 void PreviewWidget::updateViewer()
0070 {
0071     auto msg = new KMime::Message;
0072     msg->setContent(mDefaultEmail);
0073     msg->parse();
0074     mViewer->setPrinting(mPrinting);
0075     mViewer->setMessage(KMime::Message::Ptr(msg));
0076 }
0077 
0078 void PreviewWidget::createScreenShot(const QStringList &fileList)
0079 {
0080     mViewer->saveMainFrameScreenshotInFile(fileList.at(0));
0081 }
0082 
0083 void PreviewWidget::setThemePath(const QString &projectDirectory, const QString &mainPageFileName)
0084 {
0085     mGrantleeHeaderStyle->setAbsolutePath(projectDirectory);
0086     mGrantleeHeaderStyle->setMainFilename(mainPageFileName);
0087     updateViewer();
0088 }
0089 
0090 #include "moc_previewwidget.cpp"