File indexing completed on 2026-07-19 05:01:49

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 "administratorroomsselectroomtypewidget.h"
0008 #include <KLocalizedString>
0009 #include <QCheckBox>
0010 #include <QHBoxLayout>
0011 
0012 AdministratorRoomsSelectRoomTypeWidget::AdministratorRoomsSelectRoomTypeWidget(QWidget *parent)
0013     : QWidget(parent)
0014     , mDirectRooms(new QCheckBox(i18n("Direct"), this))
0015     , mPublicRooms(new QCheckBox(i18n("Public"), this))
0016     , mPrivateRooms(new QCheckBox(i18n("Private"), this))
0017     , mDiscussionRooms(new QCheckBox(i18n("Discussions"), this))
0018     , mTeamRooms(new QCheckBox(i18n("Teams"), this))
0019     , mOmniChannel(new QCheckBox(i18n("Omnichannel"), this))
0020 {
0021     auto mainLayout = new QHBoxLayout(this);
0022     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0023     mainLayout->setContentsMargins({});
0024 
0025     mDirectRooms->setObjectName(QStringLiteral("mDirectRooms"));
0026     mPublicRooms->setObjectName(QStringLiteral("mPublicRooms"));
0027     mPrivateRooms->setObjectName(QStringLiteral("mPrivateRooms"));
0028     mDiscussionRooms->setObjectName(QStringLiteral("mDiscussionRooms"));
0029     mTeamRooms->setObjectName(QStringLiteral("mTeamRooms"));
0030     mOmniChannel->setObjectName(QStringLiteral("mOmniChannel"));
0031 
0032     mainLayout->addWidget(mDirectRooms);
0033     mainLayout->addWidget(mPublicRooms);
0034     mainLayout->addWidget(mPrivateRooms);
0035     mainLayout->addWidget(mDiscussionRooms);
0036     mainLayout->addWidget(mTeamRooms);
0037     mainLayout->addWidget(mOmniChannel);
0038     mainLayout->addStretch(0);
0039     connect(mDirectRooms, &QCheckBox::clicked, this, &AdministratorRoomsSelectRoomTypeWidget::slotFilterChanged);
0040     connect(mPublicRooms, &QCheckBox::clicked, this, &AdministratorRoomsSelectRoomTypeWidget::slotFilterChanged);
0041     connect(mPrivateRooms, &QCheckBox::clicked, this, &AdministratorRoomsSelectRoomTypeWidget::slotFilterChanged);
0042     connect(mDiscussionRooms, &QCheckBox::clicked, this, &AdministratorRoomsSelectRoomTypeWidget::slotFilterChanged);
0043     connect(mTeamRooms, &QCheckBox::clicked, this, &AdministratorRoomsSelectRoomTypeWidget::slotFilterChanged);
0044     connect(mOmniChannel, &QCheckBox::clicked, this, &AdministratorRoomsSelectRoomTypeWidget::slotFilterChanged);
0045 }
0046 
0047 AdministratorRoomsSelectRoomTypeWidget::~AdministratorRoomsSelectRoomTypeWidget() = default;
0048 
0049 void AdministratorRoomsSelectRoomTypeWidget::slotFilterChanged()
0050 {
0051     AdminRoomsFilterProxyModel::FilterRooms filters;
0052     filters |= AdminRoomsFilterProxyModel::FilterRoom::None;
0053     if (mDirectRooms->isChecked()) {
0054         filters |= AdminRoomsFilterProxyModel::FilterRoom::DirectRooms;
0055     }
0056     if (mPublicRooms->isChecked()) {
0057         filters |= AdminRoomsFilterProxyModel::FilterRoom::PublicRooms;
0058     }
0059     if (mPrivateRooms->isChecked()) {
0060         filters |= AdminRoomsFilterProxyModel::FilterRoom::PrivateRooms;
0061     }
0062     if (mDiscussionRooms->isChecked()) {
0063         filters |= AdminRoomsFilterProxyModel::FilterRoom::DiscussionRooms;
0064     }
0065     if (mOmniChannel->isChecked()) {
0066         filters |= AdminRoomsFilterProxyModel::FilterRoom::Omnichannel;
0067     }
0068     if (mTeamRooms->isChecked()) {
0069         filters |= AdminRoomsFilterProxyModel::FilterRoom::TeamRooms;
0070     }
0071     if (filters == AdminRoomsFilterProxyModel::FilterRoom::None) {
0072         filters = AdminRoomsFilterProxyModel::FilterRoom::All;
0073     }
0074     Q_EMIT filterChanged(filters);
0075 }
0076 
0077 #include "moc_administratorroomsselectroomtypewidget.cpp"