File indexing completed on 2024-05-19 05:04:02
0001 /* 0002 SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "channelrolesinfowidget.h" 0008 #include "roles/roles.h" 0009 #include "room.h" 0010 0011 #include <KLocalizedString> 0012 #include <QFormLayout> 0013 #include <QGroupBox> 0014 #include <QLabel> 0015 0016 ChannelRolesInfoWidget::ChannelRolesInfoWidget(QWidget *parent) 0017 : QWidget{parent} 0018 , mFormLayout(new QFormLayout()) 0019 { 0020 mFormLayout->setObjectName(QStringLiteral("mFormLayout")); 0021 auto box = new QGroupBox(i18n("Roles"), this); 0022 box->setObjectName(QStringLiteral("box")); 0023 box->setLayout(mFormLayout); 0024 auto mainLayout = new QHBoxLayout(this); 0025 mainLayout->setObjectName(QStringLiteral("mainLayout")); 0026 mainLayout->setContentsMargins({}); 0027 mainLayout->addWidget(box); 0028 } 0029 0030 ChannelRolesInfoWidget::~ChannelRolesInfoWidget() = default; 0031 0032 void ChannelRolesInfoWidget::setRoom(Room *room) 0033 { 0034 if (room) { 0035 const Roles rolesForRoom = room->rolesForRooms(); 0036 QStringList listOwners; 0037 const auto roles = rolesForRoom.roles(); 0038 for (const Role &role : roles) { 0039 if (role.isOwner()) { 0040 listOwners.append(role.userName()); 0041 } 0042 } 0043 QStringList listModerators; 0044 for (const Role &role : roles) { 0045 if (role.isModerator()) { 0046 listModerators.append(role.userName()); 0047 } 0048 } 0049 QStringList listLeaders; 0050 for (const Role &role : roles) { 0051 if (role.isLeader()) { 0052 listLeaders.append(role.userName()); 0053 } 0054 } 0055 if (!listOwners.isEmpty()) { 0056 generateInfo(i18np("Owner:", "Owners:", listOwners.count()), listOwners); 0057 } 0058 if (!listModerators.isEmpty()) { 0059 generateInfo(i18np("Moderator:", "Moderators:", listModerators.count()), listModerators); 0060 } 0061 if (!listLeaders.isEmpty()) { 0062 generateInfo(i18np("Leader:", "Leaders:", listLeaders.count()), listLeaders); 0063 } 0064 if (!listOwners.isEmpty() || !listModerators.isEmpty() || !listLeaders.isEmpty()) { 0065 show(); 0066 } else { 0067 hide(); 0068 } 0069 } else { 0070 hide(); 0071 } 0072 } 0073 0074 void ChannelRolesInfoWidget::generateInfo(const QString &labelStr, const QStringList &list) 0075 { 0076 auto label = new QLabel(this); 0077 label->setTextFormat(Qt::PlainText); 0078 label->setText(list.join(QLatin1Char(','))); 0079 label->setTextInteractionFlags(Qt::TextBrowserInteraction); 0080 label->setWordWrap(true); 0081 auto labelInfo = new QLabel(this); 0082 labelInfo->setTextFormat(Qt::RichText); 0083 labelInfo->setText(QStringLiteral("<qt><b>%1</b></qt>").arg(labelStr)); 0084 mFormLayout->addRow(labelInfo, label); 0085 } 0086 0087 #include "moc_channelrolesinfowidget.cpp"