1
0

context-bar-controls.hpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. public:
  41. ComboSelectToolbar(QWidget *parent, OBSSource source);
  42. ~ComboSelectToolbar();
  43. virtual void Init();
  44. public slots:
  45. void on_device_currentIndexChanged(int idx);
  46. };
  47. class AudioCaptureToolbar : public ComboSelectToolbar {
  48. Q_OBJECT
  49. public:
  50. AudioCaptureToolbar(QWidget *parent, OBSSource source);
  51. void Init() override;
  52. };
  53. class WindowCaptureToolbar : public ComboSelectToolbar {
  54. Q_OBJECT
  55. public:
  56. WindowCaptureToolbar(QWidget *parent, OBSSource source);
  57. void Init() override;
  58. };
  59. class DisplayCaptureToolbar : public ComboSelectToolbar {
  60. Q_OBJECT
  61. public:
  62. DisplayCaptureToolbar(QWidget *parent, OBSSource source);
  63. void Init() override;
  64. };
  65. class DeviceCaptureToolbar : public QWidget {
  66. Q_OBJECT
  67. OBSWeakSource weakSource;
  68. Ui_DeviceSelectToolbar *ui;
  69. const char *activateText;
  70. const char *deactivateText;
  71. bool active;
  72. public:
  73. DeviceCaptureToolbar(QWidget *parent, OBSSource source);
  74. ~DeviceCaptureToolbar();
  75. public slots:
  76. void on_activateButton_clicked();
  77. };
  78. class GameCaptureToolbar : public SourceToolbar {
  79. Q_OBJECT
  80. Ui_GameCaptureToolbar *ui;
  81. void UpdateWindowVisibility();
  82. public:
  83. GameCaptureToolbar(QWidget *parent, OBSSource source);
  84. ~GameCaptureToolbar();
  85. public slots:
  86. void on_mode_currentIndexChanged(int idx);
  87. void on_window_currentIndexChanged(int idx);
  88. };
  89. class ImageSourceToolbar : public SourceToolbar {
  90. Q_OBJECT
  91. Ui_ImageSourceToolbar *ui;
  92. public:
  93. ImageSourceToolbar(QWidget *parent, OBSSource source);
  94. ~ImageSourceToolbar();
  95. public slots:
  96. void on_browse_clicked();
  97. };
  98. class ColorSourceToolbar : public SourceToolbar {
  99. Q_OBJECT
  100. Ui_ColorSourceToolbar *ui;
  101. QColor color;
  102. void UpdateColor();
  103. public:
  104. ColorSourceToolbar(QWidget *parent, OBSSource source);
  105. ~ColorSourceToolbar();
  106. public slots:
  107. void on_choose_clicked();
  108. };
  109. class TextSourceToolbar : public SourceToolbar {
  110. Q_OBJECT
  111. Ui_TextSourceToolbar *ui;
  112. QFont font;
  113. QColor color;
  114. public:
  115. TextSourceToolbar(QWidget *parent, OBSSource source);
  116. ~TextSourceToolbar();
  117. public slots:
  118. void on_selectFont_clicked();
  119. void on_selectColor_clicked();
  120. void on_text_textChanged();
  121. };