createmeetingdialog.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #ifndef CREATEMEETINGDIALOG_H
  2. #define CREATEMEETINGDIALOG_H
  3. #include "framelessbase.h"
  4. #include <QVBoxLayout>
  5. #include <QHBoxLayout>
  6. #include <QFormLayout>
  7. #include <QLabel>
  8. #include <QLineEdit>
  9. #include <QPushButton>
  10. #include <QTextEdit>
  11. #include <QDateTimeEdit>
  12. #include <QCheckBox>
  13. #include <QSpinBox>
  14. #include <QComboBox>
  15. #include <QGroupBox>
  16. #include <QDateTime>
  17. class QEventLoop;
  18. class QCloseEvent;
  19. struct MeetingInfo {
  20. QString meetingName;
  21. QString description;
  22. QDateTime startTime;
  23. int duration; // 分钟
  24. int maxParticipants;
  25. bool requirePassword;
  26. QString password;
  27. bool recordMeeting;
  28. QString meetingType;
  29. bool joinAsAdmin; // 是否以管理员身份加入
  30. };
  31. class CreateMeetingDialog : public TDialog
  32. {
  33. Q_OBJECT
  34. public:
  35. enum DialogCode { Rejected = TDialog::Rejected, Accepted = TDialog::Accepted };
  36. explicit CreateMeetingDialog(QWidget *parent = nullptr);
  37. ~CreateMeetingDialog();
  38. // 获取会议信息
  39. MeetingInfo getMeetingInfo() const;
  40. // 设置默认值
  41. void setDefaultValues();
  42. // 获取是否以管理员身份加入
  43. bool getJoinAsAdmin() const;
  44. public slots:
  45. void accept() override;
  46. void reject() override;
  47. private slots:
  48. void onPasswordCheckChanged(bool checked);
  49. void onMeetingNameChanged();
  50. void validateInput();
  51. void generateRandomPassword();
  52. private:
  53. void setupUI();
  54. void applyStyles();
  55. bool isValidInput() const;
  56. // UI组件
  57. QVBoxLayout *m_mainLayout;
  58. QFormLayout *m_formLayout;
  59. // 基本信息组
  60. QGroupBox *m_basicGroup;
  61. QFormLayout *m_basicLayout;
  62. QLineEdit *m_meetingNameEdit;
  63. QTextEdit *m_descriptionEdit;
  64. QDateTimeEdit *m_startTimeEdit;
  65. QSpinBox *m_durationSpinBox;
  66. QSpinBox *m_maxParticipantsSpinBox;
  67. QComboBox *m_meetingTypeCombo;
  68. // 安全设置组
  69. QGroupBox *m_securityGroup;
  70. QVBoxLayout *m_securityLayout;
  71. QCheckBox *m_passwordCheckBox;
  72. QHBoxLayout *m_passwordLayout;
  73. QLineEdit *m_passwordEdit;
  74. QPushButton *m_generatePasswordButton;
  75. QCheckBox *m_recordCheckBox;
  76. // 角色选择
  77. QGroupBox *m_roleGroup;
  78. QVBoxLayout *m_roleLayout;
  79. QCheckBox *m_joinAsAdminCheckBox;
  80. // 按钮布局
  81. QHBoxLayout *m_buttonLayout;
  82. QPushButton *m_createButton;
  83. QPushButton *m_cancelButton;
  84. // 数据
  85. MeetingInfo m_meetingInfo;
  86. };
  87. #endif // CREATEMEETINGDIALOG_H