visibility-item-widget.hpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 LockedCheckBox;
  11. class VisibilityItemWidget : public QWidget {
  12. Q_OBJECT
  13. private:
  14. OBSSceneItem item;
  15. OBSSource source;
  16. QLabel *label = nullptr;
  17. VisibilityCheckBox *vis = nullptr;
  18. LockedCheckBox *lock = nullptr;
  19. QString oldName;
  20. OBSSignal sceneRemoveSignal;
  21. OBSSignal enabledSignal;
  22. OBSSignal renamedSignal;
  23. bool sceneRemoved = false;
  24. bool active = false;
  25. bool selected = false;
  26. static void OBSSceneRemove(void *param, calldata_t *data);
  27. static void OBSSceneItemRemove(void *param, calldata_t *data);
  28. static void OBSSceneItemVisible(void *param, calldata_t *data);
  29. static void OBSSceneItemLocked(void *param, calldata_t *data);
  30. static void OBSSourceEnabled(void *param, calldata_t *data);
  31. static void OBSSourceRenamed(void *param, calldata_t *data);
  32. void DisconnectItemSignals();
  33. private slots:
  34. void VisibilityClicked(bool visible);
  35. void LockClicked(bool locked);
  36. void SourceEnabled(bool enabled);
  37. void SourceRenamed(QString name);
  38. void SourceLocked(bool locked);
  39. public:
  40. VisibilityItemWidget(obs_source_t *source);
  41. VisibilityItemWidget(obs_sceneitem_t *item);
  42. ~VisibilityItemWidget();
  43. void SetColor(const QColor &color, bool active, bool selected);
  44. };
  45. class VisibilityItemDelegate : public QStyledItemDelegate {
  46. Q_OBJECT
  47. public:
  48. VisibilityItemDelegate(QObject *parent = nullptr);
  49. void paint(QPainter *painter, const QStyleOptionViewItem &option,
  50. const QModelIndex &index) const override;
  51. };
  52. void SetupVisibilityItem(QListWidget *list, QListWidgetItem *item,
  53. obs_source_t *source);
  54. void SetupVisibilityItem(QListWidget *list, QListWidgetItem *item,
  55. obs_sceneitem_t *sceneItem);