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"