File indexing completed on 2024-05-12 16:27:12

0001 /*
0002    SPDX-FileCopyrightText: 2021-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "libruqolawidgets_private_export.h"
0010 #include "rooms/saveroomsettingsjob.h"
0011 
0012 #include <QWidget>
0013 class MessageTextEditor;
0014 class QCheckBox;
0015 class QPushButton;
0016 class Room;
0017 class ChannelInfoPruneWidget;
0018 class KPasswordLineEdit;
0019 class SystemMessagesComboBox;
0020 class QLineEdit;
0021 class RoomAvatarWidget;
0022 class RocketChatAccount;
0023 class LIBRUQOLAWIDGETS_TESTS_EXPORT ChannelInfoEditableWidget : public QWidget
0024 {
0025     Q_OBJECT
0026 public:
0027     explicit ChannelInfoEditableWidget(Room *room, RocketChatAccount *account, QWidget *parent = nullptr);
0028     ~ChannelInfoEditableWidget() override;
0029     [[nodiscard]] RocketChatRestApi::SaveRoomSettingsJob::SaveRoomSettingsInfo saveRoomSettingsInfo() const;
0030 
0031     void updateEditableChannelInfo();
0032     void connectEditableWidget();
0033     void updateRetentionValue();
0034     void updateUiFromPermission();
0035 Q_SIGNALS:
0036     void channelDeleted();
0037     void fnameChanged(const QString &fname);
0038     void roomNameValid(bool valid);
0039 
0040 private:
0041     LIBRUQOLAWIDGETS_NO_EXPORT void joinCodeChanged();
0042     LIBRUQOLAWIDGETS_NO_EXPORT void slotTeamDeleteDone();
0043     LIBRUQOLAWIDGETS_NO_EXPORT void slotTeamListRoomsDone(const QJsonObject &obj);
0044     LIBRUQOLAWIDGETS_NO_EXPORT void selectRoomToDelete(const QString &teamId);
0045     LIBRUQOLAWIDGETS_NO_EXPORT void deleteTeam(const QString &teamId, const QStringList &roomdId);
0046     [[nodiscard]] LIBRUQOLAWIDGETS_NO_EXPORT bool hasRetentionPermission() const;
0047     QPointer<Room> mRoom;
0048 
0049     QLineEdit *const mName;
0050     MessageTextEditor *const mComment;
0051     MessageTextEditor *const mAnnouncement;
0052     MessageTextEditor *const mDescription;
0053     KPasswordLineEdit *const mPasswordLineEdit;
0054     QCheckBox *const mReadOnly;
0055     QCheckBox *const mArchive;
0056     QCheckBox *const mPrivate;
0057     QCheckBox *const mEncrypted;
0058     QPushButton *const mDeleteChannel;
0059     QWidget *mEncryptedLabel = nullptr;
0060     ChannelInfoPruneWidget *const mChannelInfoPruneWidget;
0061     SystemMessagesComboBox *const mSystemMessageCombox;
0062     RoomAvatarWidget *const mRoomAvatarWidget;
0063     RocketChatAccount *const mRocketChatAccount;
0064 };