File indexing completed on 2024-05-12 16:27:15

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "reportmessagedialog.h"
0008 #include "reportmessagewidget.h"
0009 
0010 #include <KConfigGroup>
0011 #include <KLocalizedString>
0012 #include <KSharedConfig>
0013 #include <KWindowConfig>
0014 #include <QDialogButtonBox>
0015 #include <QPushButton>
0016 #include <QVBoxLayout>
0017 #include <QWindow>
0018 namespace
0019 {
0020 static const char myReportMessageDialogGroupName[] = "ReportMessageDialog";
0021 }
0022 ReportMessageDialog::ReportMessageDialog(QWidget *parent)
0023     : QDialog(parent)
0024     , mReportMessageWidget(new ReportMessageWidget(this))
0025 {
0026     setWindowTitle(i18nc("@title:window", "Report Message"));
0027     auto mainLayout = new QVBoxLayout(this);
0028     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0029 
0030     mReportMessageWidget->setObjectName(QStringLiteral("mReportMessageWidget"));
0031     mainLayout->addWidget(mReportMessageWidget);
0032     mainLayout->addStretch(1);
0033 
0034     auto button = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
0035     button->setObjectName(QStringLiteral("button"));
0036     mainLayout->addWidget(button);
0037     connect(button, &QDialogButtonBox::accepted, this, &ReportMessageDialog::accept);
0038     connect(button, &QDialogButtonBox::rejected, this, &ReportMessageDialog::reject);
0039     readConfig();
0040 
0041     QPushButton *okButton = button->button(QDialogButtonBox::Ok);
0042     okButton->setEnabled(false);
0043     connect(mReportMessageWidget, &ReportMessageWidget::updateOkButton, okButton, &QPushButton::setEnabled);
0044 }
0045 
0046 ReportMessageDialog::~ReportMessageDialog()
0047 {
0048     writeConfig();
0049 }
0050 
0051 void ReportMessageDialog::readConfig()
0052 {
0053     create(); // ensure a window is created
0054     windowHandle()->resize(QSize(400, 300));
0055     KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(myReportMessageDialogGroupName));
0056     KWindowConfig::restoreWindowSize(windowHandle(), group);
0057     resize(windowHandle()->size()); // workaround for QTBUG-40584
0058 }
0059 
0060 void ReportMessageDialog::writeConfig()
0061 {
0062     KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(myReportMessageDialogGroupName));
0063     KWindowConfig::saveWindowSize(windowHandle(), group);
0064 }
0065 
0066 QString ReportMessageDialog::message() const
0067 {
0068     return mReportMessageWidget->message();
0069 }
0070 
0071 void ReportMessageDialog::setPreviewMessage(const QString &msg)
0072 {
0073     mReportMessageWidget->setPreviewMessage(msg);
0074 }
0075 
0076 #include "moc_reportmessagedialog.cpp"