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 #pragma once
0008 
0009 #include <QWidget>
0010 
0011 #include "libruqolawidgets_private_export.h"
0012 class ChannelNameValidLineWidget;
0013 class QCheckBox;
0014 class AddUsersWidget;
0015 class QFormLayout;
0016 class QLineEdit;
0017 class RocketChatAccount;
0018 class LIBRUQOLAWIDGETS_TESTS_EXPORT CreateNewChannelWidget : public QWidget
0019 {
0020     Q_OBJECT
0021 public:
0022     enum class Feature {
0023         None = 0,
0024         BroadCast = 1,
0025         Encrypted = 2,
0026     };
0027     Q_DECLARE_FLAGS(Features, Feature)
0028     Q_FLAG(Features)
0029 
0030     explicit CreateNewChannelWidget(RocketChatAccount *account, QWidget *parent = nullptr);
0031     ~CreateNewChannelWidget() override;
0032 
0033     [[nodiscard]] QString channelName() const;
0034     [[nodiscard]] QStringList members(bool userId = true) const;
0035     [[nodiscard]] bool encryptedRoom() const;
0036     [[nodiscard]] bool privateChannel() const;
0037     [[nodiscard]] bool broadCast() const;
0038     [[nodiscard]] bool readOnly() const;
0039     [[nodiscard]] QString topic() const;
0040 
0041     void setFeatures(CreateNewChannelWidget::Features features);
0042 Q_SIGNALS:
0043     void updateOkButton(bool state);
0044 
0045 private:
0046     LIBRUQOLAWIDGETS_NO_EXPORT void slotChangeOkButtonEnabled(bool state);
0047     ChannelNameValidLineWidget *const mChannelName;
0048     AddUsersWidget *const mUsers;
0049     QCheckBox *const mReadOnly;
0050     QCheckBox *const mBroadcast;
0051     QCheckBox *const mPrivate;
0052     QCheckBox *const mEncryptedRoom;
0053     QLineEdit *const mTopicLineEdit;
0054     QFormLayout *const mMainLayout;
0055 };