SourceTreeItem.hpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #pragma once
  2. #include <obs.hpp>
  3. #include <QFrame>
  4. class QSpacerItem;
  5. class QCheckBox;
  6. class QLabel;
  7. class QHBoxLayout;
  8. class OBSSourceLabel;
  9. class QLineEdit;
  10. class SourceTree;
  11. class SourceTreeItem : public QFrame {
  12. Q_OBJECT
  13. friend class SourceTree;
  14. friend class SourceTreeModel;
  15. void mouseDoubleClickEvent(QMouseEvent *event) override;
  16. void enterEvent(QEnterEvent *event) override;
  17. void leaveEvent(QEvent *event) override;
  18. virtual bool eventFilter(QObject *object, QEvent *event) override;
  19. void Update(bool force);
  20. enum class Type {
  21. Unknown,
  22. Item,
  23. Group,
  24. SubItem,
  25. };
  26. void DisconnectSignals();
  27. void ReconnectSignals();
  28. Type type = Type::Unknown;
  29. public:
  30. explicit SourceTreeItem(SourceTree *tree, OBSSceneItem sceneitem);
  31. bool IsEditing();
  32. private:
  33. QSpacerItem *spacer = nullptr;
  34. QCheckBox *expand = nullptr;
  35. QLabel *iconLabel = nullptr;
  36. QCheckBox *vis = nullptr;
  37. QCheckBox *lock = nullptr;
  38. QHBoxLayout *boxLayout = nullptr;
  39. OBSSourceLabel *label = nullptr;
  40. QLineEdit *editor = nullptr;
  41. std::string newName;
  42. SourceTree *tree;
  43. OBSSceneItem sceneitem;
  44. std::vector<OBSSignal> sigs;
  45. virtual void paintEvent(QPaintEvent *event) override;
  46. void ExitEditModeInternal(bool save);
  47. private slots:
  48. void Clear();
  49. void EnterEditMode();
  50. void ExitEditMode(bool save);
  51. void VisibilityChanged(bool visible);
  52. void LockedChanged(bool locked);
  53. void ExpandClicked(bool checked);
  54. void Select();
  55. void Deselect();
  56. };