File indexing completed on 2024-05-12 16:27:13
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 "createdirectmessagesdialog.h" 0008 #include "createdirectmessageswidget.h" 0009 #include "rocketchataccount.h" 0010 0011 #include <KLocalizedString> 0012 0013 #include <KConfigGroup> 0014 #include <KSharedConfig> 0015 #include <KWindowConfig> 0016 #include <QDialogButtonBox> 0017 #include <QPushButton> 0018 #include <QVBoxLayout> 0019 #include <QWindow> 0020 0021 namespace 0022 { 0023 static const char myConfigCreateDirectMessagesDialogGroupName[] = "CreateDirectMessagesDialog"; 0024 } 0025 CreateDirectMessagesDialog::CreateDirectMessagesDialog(RocketChatAccount *account, QWidget *parent) 0026 : QDialog(parent) 0027 , mCreateDirectMessagesWidget(new CreateDirectMessagesWidget(account, this)) 0028 { 0029 setWindowTitle(i18nc("@title:window", "Create Direct Messages - %1", account ? account->accountName() : QStringLiteral("account"))); 0030 auto mainLayout = new QVBoxLayout(this); 0031 mainLayout->setObjectName(QStringLiteral("mainLayout")); 0032 0033 mCreateDirectMessagesWidget->setObjectName(QStringLiteral("mCreateDirectMessagesWidget")); 0034 mainLayout->addWidget(mCreateDirectMessagesWidget); 0035 0036 auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); 0037 buttonBox->setObjectName(QStringLiteral("button")); 0038 connect(buttonBox, &QDialogButtonBox::accepted, this, &CreateDirectMessagesDialog::accept); 0039 connect(buttonBox, &QDialogButtonBox::rejected, this, &CreateDirectMessagesDialog::reject); 0040 mainLayout->addWidget(buttonBox); 0041 readConfig(); 0042 auto okButton = buttonBox->button(QDialogButtonBox::Ok); 0043 okButton->setEnabled(false); 0044 connect(mCreateDirectMessagesWidget, &CreateDirectMessagesWidget::updateOkButton, this, [okButton](bool state) { 0045 okButton->setEnabled(state); 0046 }); 0047 connect(buttonBox, &QDialogButtonBox::accepted, this, &CreateDirectMessagesDialog::slotAccepted); 0048 } 0049 CreateDirectMessagesDialog::~CreateDirectMessagesDialog() 0050 { 0051 writeConfig(); 0052 } 0053 0054 void CreateDirectMessagesDialog::slotAccepted() 0055 { 0056 const QStringList usernames = userNames(); 0057 mCreateDirectMessagesWidget->rocketChatAccount()->createDirectMessages(usernames); 0058 } 0059 0060 QStringList CreateDirectMessagesDialog::userNames() const 0061 { 0062 return mCreateDirectMessagesWidget->userNames(); 0063 } 0064 0065 void CreateDirectMessagesDialog::readConfig() 0066 { 0067 create(); // ensure a window is created 0068 windowHandle()->resize(QSize(800, 600)); 0069 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(myConfigCreateDirectMessagesDialogGroupName)); 0070 KWindowConfig::restoreWindowSize(windowHandle(), group); 0071 resize(windowHandle()->size()); // workaround for QTBUG-40584 0072 } 0073 0074 void CreateDirectMessagesDialog::writeConfig() 0075 { 0076 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(myConfigCreateDirectMessagesDialogGroupName)); 0077 KWindowConfig::saveWindowSize(windowHandle(), group); 0078 } 0079 0080 #include "moc_createdirectmessagesdialog.cpp"