createmeetingdialog.h 2.3 KB

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