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

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 "threadmessagedialog.h"
0008 #include <KConfigGroup>
0009 #include <KLocalizedString>
0010 #include <KSharedConfig>
0011 #include <KWindowConfig>
0012 #include <QDialogButtonBox>
0013 #include <QFrame>
0014 #include <QStyle>
0015 #include <QVBoxLayout>
0016 #include <QWindow>
0017 
0018 namespace
0019 {
0020 static const char myThreadMessageDialogGroupName[] = "ThreadMessageDialog";
0021 }
0022 
0023 ThreadMessageDialog::ThreadMessageDialog(RocketChatAccount *account, QWidget *parent)
0024     : QDialog(parent)
0025     , mThreadMessageWidget(new ThreadMessageWidget(account, this))
0026 {
0027     setWindowTitle(i18nc("@title:window", "Thread"));
0028     auto mainLayout = new QVBoxLayout(this);
0029     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0030 #if QT_VERSION > QT_VERSION_CHECK(6, 0, 0)
0031     mainLayout->setSpacing(0);
0032     mainLayout->setContentsMargins({});
0033 #endif
0034 
0035     mThreadMessageWidget->setObjectName(QStringLiteral("mThreadMessageWidget"));
0036     mainLayout->addWidget(mThreadMessageWidget);
0037 
0038 #if QT_VERSION > QT_VERSION_CHECK(6, 0, 0)
0039     auto separator = new QFrame(this);
0040     separator->setFrameShape(QFrame::HLine);
0041     separator->setFixedHeight(1);
0042 
0043     mainLayout->addWidget(separator);
0044 #endif
0045 
0046     auto button = new QDialogButtonBox(QDialogButtonBox::Close, this);
0047 #if QT_VERSION > QT_VERSION_CHECK(6, 0, 0)
0048     button->setContentsMargins(style()->pixelMetric(QStyle::PM_LayoutLeftMargin),
0049                                style()->pixelMetric(QStyle::PM_LayoutTopMargin),
0050                                style()->pixelMetric(QStyle::PM_LayoutRightMargin),
0051                                style()->pixelMetric(QStyle::PM_LayoutBottomMargin));
0052 #endif
0053     button->setObjectName(QStringLiteral("button"));
0054     mainLayout->addWidget(button);
0055     connect(button, &QDialogButtonBox::rejected, this, &ThreadMessageDialog::reject);
0056     readConfig();
0057     setAttribute(Qt::WA_DeleteOnClose);
0058 }
0059 
0060 ThreadMessageDialog::~ThreadMessageDialog()
0061 {
0062     writeConfig();
0063 }
0064 
0065 void ThreadMessageDialog::setThreadMessageInfo(const ThreadMessageWidget::ThreadMessageInfo &info)
0066 {
0067     mThreadMessageWidget->setThreadMessageInfo(info);
0068 }
0069 
0070 void ThreadMessageDialog::readConfig()
0071 {
0072     create(); // ensure a window is created
0073     windowHandle()->resize(QSize(800, 300));
0074     KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(myThreadMessageDialogGroupName));
0075     KWindowConfig::restoreWindowSize(windowHandle(), group);
0076     resize(windowHandle()->size()); // workaround for QTBUG-40584
0077 }
0078 
0079 void ThreadMessageDialog::writeConfig()
0080 {
0081     KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(myThreadMessageDialogGroupName));
0082     KWindowConfig::saveWindowSize(windowHandle(), group);
0083 }
0084 
0085 #include "moc_threadmessagedialog.cpp"