File indexing completed on 2024-05-19 05:04:01
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 };