/** * @file tab_admin.h * @ingroup ServerTabs * @brief TODO: Document this. */ #ifndef TAB_ADMIN_H #define TAB_ADMIN_H #include "tab.h" #include #include #include class AbstractClient; class QGroupBox; class QPushButton; class QSpinBox; class QLineEdit; class ShutdownDialog : public QDialog { Q_OBJECT private: QLineEdit *reasonEdit; QSpinBox *minutesEdit; public: explicit ShutdownDialog(QWidget *parent = nullptr); [[nodiscard]] QString getReason() const; [[nodiscard]] int getMinutes() const; }; class TabAdmin : public Tab { Q_OBJECT private: bool locked; AbstractClient *client; bool fullAdmin; QPushButton *updateServerMessageButton, *shutdownServerButton, *reloadConfigButton, *grantReplayAccessButton, *activateUserButton; QGroupBox *adminGroupBox, *moderatorGroupBox; QPushButton *unlockButton, *lockButton; QLineEdit *replayIdToGrant, *userToActivate; signals: void adminLockChanged(bool lock); private slots: void actUpdateServerMessage(); void actShutdownServer(); void actReloadConfig(); void actGrantReplayAccess(); void actForceActivateUser(); void grantReplayAccessProcessResponse(const Response &response); void activateUserProcessResponse(const Response &response); void actUnlock(); void actLock(); public: TabAdmin(TabSupervisor *_tabSupervisor, AbstractClient *_client, bool _fullAdmin); void retranslateUi() override; [[nodiscard]] QString getTabText() const override { return tr("Administration"); } [[nodiscard]] bool getLocked() const { return locked; } }; #endif