File indexing completed on 2024-05-19 05:04:03

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 "createdirectmessageswidget.h"
0008 #include "misc/adduserswidget.h"
0009 #include "rocketchataccount.h"
0010 #include <KLocalizedString>
0011 #include <KStatefulBrush>
0012 #include <QLabel>
0013 #include <QVBoxLayout>
0014 
0015 CreateDirectMessagesWidget::CreateDirectMessagesWidget(RocketChatAccount *account, QWidget *parent)
0016     : QWidget(parent)
0017     , mUsers(new AddUsersWidget(account, this))
0018     , mRocketChatAccount(account)
0019     , mTooManyUsers(new QLabel(i18n("Too many users selected."), this))
0020 {
0021     auto mainLayout = new QVBoxLayout(this);
0022     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0023     mainLayout->setContentsMargins({});
0024 
0025     auto label = new QLabel(i18n("You are about to create a chat with multiple users. Add the ones you would like to talk, "
0026                                  "everyone in the same place, using direct messages."),
0027                             this);
0028     label->setObjectName(QStringLiteral("label"));
0029     label->setWordWrap(true);
0030     mainLayout->addWidget(label);
0031 
0032     mUsers->setObjectName(QStringLiteral("mUsers"));
0033     mUsers->setPlaceholderText(i18n("Select users..."));
0034 
0035     mTooManyUsers->setObjectName(QStringLiteral("mTooManyUsers"));
0036     mainLayout->addWidget(mUsers);
0037     mainLayout->addWidget(mTooManyUsers);
0038     mainLayout->addStretch(1);
0039     connect(mUsers, &AddUsersWidget::userListChanged, this, &CreateDirectMessagesWidget::checkMaximumUsers);
0040     mTooManyUsers->setVisible(false);
0041 
0042     const KStatefulBrush bgBrush(KColorScheme::View, KColorScheme::NegativeText);
0043     const QString negativeTextColor = QStringLiteral("QLabel{ color:%1 }").arg(bgBrush.brush(palette()).color().name());
0044     mTooManyUsers->setStyleSheet(negativeTextColor);
0045 }
0046 
0047 CreateDirectMessagesWidget::~CreateDirectMessagesWidget() = default;
0048 
0049 QStringList CreateDirectMessagesWidget::userNames() const
0050 {
0051     return mUsers->userNames();
0052 }
0053 
0054 void CreateDirectMessagesWidget::checkMaximumUsers(bool state)
0055 {
0056     bool result = state;
0057     if (mRocketChatAccount) {
0058         if (mUsers->numberOfUsers() < mRocketChatAccount->ruqolaServerConfig()->directMessageMaximumUser()) {
0059             mUsers->lineEdit()->setEnabled(true);
0060             mTooManyUsers->setVisible(false);
0061         } else {
0062             result = false;
0063             mUsers->lineEdit()->setEnabled(false);
0064             mTooManyUsers->setVisible(true);
0065         }
0066     }
0067     Q_EMIT updateOkButton(result);
0068 }
0069 
0070 RocketChatAccount *CreateDirectMessagesWidget::rocketChatAccount() const
0071 {
0072     return mRocketChatAccount;
0073 }
0074 
0075 #include "moc_createdirectmessageswidget.cpp"