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