File: visibility-item-widget.hpp

package info (click to toggle)
obs-studio 22.0.3%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 23,052 kB
  • sloc: ansic: 134,708; cpp: 49,169; objc: 1,036; makefile: 829; sh: 410; python: 360
file content (70 lines) | stat: -rw-r--r-- 1,816 bytes parent folder | download
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
#pragma once

#include <QWidget>
#include <QStyledItemDelegate>
#include <obs.hpp>

class QLabel;
class QLineEdit;
class QListWidget;
class QListWidgetItem;
class VisibilityCheckBox;
class LockedCheckBox;

class VisibilityItemWidget : public QWidget {
	Q_OBJECT

private:
	OBSSceneItem item;
	OBSSource source;
	QLabel *label = nullptr;
	VisibilityCheckBox *vis = nullptr;
	LockedCheckBox *lock = nullptr;
	QString oldName;

	OBSSignal sceneRemoveSignal;
	OBSSignal enabledSignal;
	OBSSignal renamedSignal;
	bool sceneRemoved = false;

	bool active = false;
	bool selected = false;

	static void OBSSceneRemove(void *param, calldata_t *data);
	static void OBSSceneItemRemove(void *param, calldata_t *data);
	static void OBSSceneItemVisible(void *param, calldata_t *data);
	static void OBSSceneItemLocked(void *param, calldata_t *data);
	static void OBSSourceEnabled(void *param, calldata_t *data);
	static void OBSSourceRenamed(void *param, calldata_t *data);

	void DisconnectItemSignals();

private slots:
	void VisibilityClicked(bool visible);
	void LockClicked(bool locked);
	void SourceEnabled(bool enabled);
	void SourceRenamed(QString name);
	void SourceLocked(bool locked);

public:
	VisibilityItemWidget(obs_source_t *source);
	VisibilityItemWidget(obs_sceneitem_t *item);
	~VisibilityItemWidget();

	void SetColor(const QColor &color, bool active, bool selected);
};

class VisibilityItemDelegate : public QStyledItemDelegate {
	Q_OBJECT

public:
	VisibilityItemDelegate(QObject *parent = nullptr);

	void paint(QPainter *painter, const QStyleOptionViewItem &option,
			const QModelIndex &index) const override;
};

void SetupVisibilityItem(QListWidget *list, QListWidgetItem *item,
		obs_source_t *source);
void SetupVisibilityItem(QListWidget *list, QListWidgetItem *item,
		obs_sceneitem_t *sceneItem);