visibility-item-widget.hpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #pragma once
  2. #include <QWidget>
  3. #include <QStyledItemDelegate>
  4. #include <obs.hpp>
  5. class QLabel;
  6. class QLineEdit;
  7. class QListWidget;
  8. class QListWidgetItem;
  9. class VisibilityCheckBox;
  10. class VisibilityItemWidget : public QWidget {
  11. Q_OBJECT
  12. private:
  13. OBSSceneItem item;
  14. OBSSource source;
  15. QLabel *label = nullptr;
  16. VisibilityCheckBox *vis = nullptr;
  17. QString oldName;
  18. OBSSignal sceneRemoveSignal;
  19. OBSSignal enabledSignal;
  20. OBSSignal renamedSignal;
  21. bool sceneRemoved = false;
  22. bool active = false;
  23. bool selected = false;
  24. static void OBSSceneRemove(void *param, calldata_t *data);
  25. static void OBSSceneItemRemove(void *param, calldata_t *data);
  26. static void OBSSceneItemVisible(void *param, calldata_t *data);
  27. static void OBSSourceEnabled(void *param, calldata_t *data);
  28. static void OBSSourceRenamed(void *param, calldata_t *data);
  29. void DisconnectItemSignals();
  30. private slots:
  31. void VisibilityClicked(bool visible);
  32. void SourceEnabled(bool enabled);
  33. void SourceRenamed(QString name);
  34. public:
  35. VisibilityItemWidget(obs_source_t *source);
  36. VisibilityItemWidget(obs_sceneitem_t *item);
  37. ~VisibilityItemWidget();
  38. void SetColor(const QColor &color, bool active, bool selected);
  39. };
  40. class VisibilityItemDelegate : public QStyledItemDelegate {
  41. Q_OBJECT
  42. public:
  43. VisibilityItemDelegate(QObject *parent = nullptr);
  44. void paint(QPainter *painter, const QStyleOptionViewItem &option,
  45. const QModelIndex &index) const override;
  46. };
  47. void SetupVisibilityItem(QListWidget *list, QListWidgetItem *item,
  48. obs_source_t *source);
  49. void SetupVisibilityItem(QListWidget *list, QListWidgetItem *item,
  50. obs_sceneitem_t *sceneItem);