context-bar-controls.hpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #pragma once
  2. #include <memory>
  3. #include <obs.hpp>
  4. #include <QWidget>
  5. class Ui_BrowserSourceToolbar;
  6. class Ui_DeviceSelectToolbar;
  7. class Ui_GameCaptureToolbar;
  8. class Ui_ImageSourceToolbar;
  9. class Ui_ColorSourceToolbar;
  10. class Ui_TextSourceToolbar;
  11. class SourceToolbar : public QWidget {
  12. Q_OBJECT
  13. OBSWeakSource weakSource;
  14. protected:
  15. using properties_delete_t = decltype(&obs_properties_destroy);
  16. using properties_t =
  17. std::unique_ptr<obs_properties_t, properties_delete_t>;
  18. properties_t props;
  19. public:
  20. SourceToolbar(QWidget *parent, OBSSource source);
  21. OBSSource GetSource() { return OBSGetStrongRef(weakSource); }
  22. public slots:
  23. virtual void Update() {}
  24. };
  25. class BrowserToolbar : public SourceToolbar {
  26. Q_OBJECT
  27. Ui_BrowserSourceToolbar *ui;
  28. public:
  29. BrowserToolbar(QWidget *parent, OBSSource source);
  30. ~BrowserToolbar();
  31. public slots:
  32. void on_refresh_clicked();
  33. };
  34. class ComboSelectToolbar : public SourceToolbar {
  35. Q_OBJECT
  36. protected:
  37. Ui_DeviceSelectToolbar *ui;
  38. const char *prop_name;
  39. bool is_int = false;
  40. void UpdateActivateButtonName();
  41. public:
  42. ComboSelectToolbar(QWidget *parent, OBSSource source);
  43. ~ComboSelectToolbar();
  44. virtual void Init();
  45. public slots:
  46. void on_device_currentIndexChanged(int idx);
  47. void on_activateButton_clicked();
  48. };
  49. class AudioCaptureToolbar : public ComboSelectToolbar {
  50. Q_OBJECT
  51. public:
  52. AudioCaptureToolbar(QWidget *parent, OBSSource source);
  53. void Init() override;
  54. };
  55. class WindowCaptureToolbar : public ComboSelectToolbar {
  56. Q_OBJECT
  57. public:
  58. WindowCaptureToolbar(QWidget *parent, OBSSource source);
  59. void Init() override;
  60. };
  61. class DisplayCaptureToolbar : public ComboSelectToolbar {
  62. Q_OBJECT
  63. public:
  64. DisplayCaptureToolbar(QWidget *parent, OBSSource source);
  65. void Init() override;
  66. };
  67. class DeviceCaptureToolbar : public ComboSelectToolbar {
  68. Q_OBJECT
  69. public:
  70. DeviceCaptureToolbar(QWidget *parent, OBSSource source);
  71. void Init() override;
  72. };
  73. class GameCaptureToolbar : public SourceToolbar {
  74. Q_OBJECT
  75. Ui_GameCaptureToolbar *ui;
  76. void UpdateWindowVisibility();
  77. public:
  78. GameCaptureToolbar(QWidget *parent, OBSSource source);
  79. ~GameCaptureToolbar();
  80. public slots:
  81. void on_mode_currentIndexChanged(int idx);
  82. void on_window_currentIndexChanged(int idx);
  83. };
  84. class ImageSourceToolbar : public SourceToolbar {
  85. Q_OBJECT
  86. Ui_ImageSourceToolbar *ui;
  87. public:
  88. ImageSourceToolbar(QWidget *parent, OBSSource source);
  89. ~ImageSourceToolbar();
  90. public slots:
  91. void on_browse_clicked();
  92. };
  93. class ColorSourceToolbar : public SourceToolbar {
  94. Q_OBJECT
  95. Ui_ColorSourceToolbar *ui;
  96. QColor color;
  97. void UpdateColor();
  98. public:
  99. ColorSourceToolbar(QWidget *parent, OBSSource source);
  100. ~ColorSourceToolbar();
  101. public slots:
  102. void on_choose_clicked();
  103. };
  104. class TextSourceToolbar : public SourceToolbar {
  105. Q_OBJECT
  106. Ui_TextSourceToolbar *ui;
  107. QFont font;
  108. QColor color;
  109. public:
  110. TextSourceToolbar(QWidget *parent, OBSSource source);
  111. ~TextSourceToolbar();
  112. public slots:
  113. void on_selectFont_clicked();
  114. void on_selectColor_clicked();
  115. void on_text_textChanged();
  116. };