joinmeetingdialog.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #ifndef JOINMEETINGDIALOG_H
  2. #define JOINMEETINGDIALOG_H
  3. #include "framelessbase.h"
  4. #include <QVBoxLayout>
  5. #include <QHBoxLayout>
  6. #include <QLabel>
  7. #include <QLineEdit>
  8. #include <QPushButton>
  9. #include <QListWidget>
  10. #include <QTabWidget>
  11. #include <QGroupBox>
  12. #include <QStringList>
  13. class QEventLoop;
  14. class QCloseEvent;
  15. class JoinMeetingDialog : public TDialog
  16. {
  17. Q_OBJECT
  18. public:
  19. // 兼容性映射:保持 JoinMeetingDialog::Accepted 可用
  20. enum DialogCode { Rejected = TDialog::Rejected, Accepted = TDialog::Accepted };
  21. explicit JoinMeetingDialog(QWidget *parent = nullptr);
  22. ~JoinMeetingDialog();
  23. // 获取选择的会议ID
  24. QString getSelectedMeetingId() const;
  25. // 设置可用的会议列表
  26. void setAvailableMeetings(const QStringList &meetingIds, const QStringList &meetingNames);
  27. public slots:
  28. void accept() override; // 验证后调用 TDialog::accept()
  29. void reject() override; // 清理后调用 TDialog::reject()
  30. private slots:
  31. void onMeetingItemClicked();
  32. void onMeetingIdChanged();
  33. void validateInput();
  34. private:
  35. void setupUI();
  36. // UI组件
  37. QVBoxLayout *m_mainLayout;
  38. QTabWidget *m_tabWidget;
  39. // 手动输入标签页
  40. QWidget *m_manualTab;
  41. QVBoxLayout *m_manualLayout;
  42. QLabel *m_manualLabel;
  43. QLineEdit *m_meetingIdEdit;
  44. // 选择会议标签页
  45. QWidget *m_selectTab;
  46. QVBoxLayout *m_selectLayout;
  47. QLabel *m_selectLabel;
  48. QListWidget *m_meetingListWidget;
  49. // 按钮
  50. QHBoxLayout *m_buttonLayout;
  51. QPushButton *m_joinButton;
  52. QPushButton *m_cancelButton;
  53. // 数据
  54. QString m_selectedMeetingId;
  55. QStringList m_meetingIds;
  56. QStringList m_meetingNames;
  57. };
  58. #endif // JOINMEETINGDIALOG_H