File indexing completed on 2025-01-19 10:48:12
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"