/
githubmirror
/
obs-studio
Обзор
Документация
Войти
/
githubmirror
/
obs-studio
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
frontend/components/SourceTree.hpp
75 строк
2 KB
PatTheMav
frontend: Split Qt UI component into single file per C++ class
08 янв 2025, 17:36
08 янв 2025, 17:36
f4fe30a
Код
Авторство
О чём код?
#pragma once #include "SourceTreeItem.hpp" #include "SourceTreeModel.hpp" #include <QListView> #include <QStaticText> #include <QSvgRenderer> class SourceTree : public QListView { Q_OBJECT bool ignoreReorder = false; friend class SourceTreeModel; friend class SourceTreeItem; bool textPrepared = false; QStaticText textNoSources; QSvgRenderer iconNoSources; OBSData undoSceneData; bool iconsVisible = true; void UpdateNoSourcesMessage(); void ResetWidgets(); void UpdateWidget(const QModelIndex &idx, obs_sceneitem_t *item); void UpdateWidgets(bool force = false); inline SourceTreeModel *GetStm() const { return reinterpret_cast<SourceTreeModel *>(model()); } public: inline SourceTreeItem *GetItemWidget(int idx) { QWidget *widget = indexWidget(GetStm()->createIndex(idx, 0)); return reinterpret_cast<SourceTreeItem *>(widget); } explicit SourceTree(QWidget *parent = nullptr); inline bool IgnoreReorder() const { return ignoreReorder; } inline void Clear() { GetStm()->Clear(); } inline void Add(obs_sceneitem_t *item) { GetStm()->Add(item); } inline OBSSceneItem Get(int idx) { return GetStm()->Get(idx); } inline QString GetNewGroupName() { return GetStm()->GetNewGroupName(); } void SelectItem(obs_sceneitem_t *sceneitem, bool select); bool MultipleBaseSelected() const; bool GroupsSelected() const; bool GroupedItemsSelected() const; void UpdateIcons(); void SetIconsVisible(bool visible); public slots: inline void ReorderItems() { GetStm()->ReorderItems(); } inline void RefreshItems() { GetStm()->SceneChanged(); } void Remove(OBSSceneItem item, OBSScene scene); void GroupSelectedItems(); void UngroupSelectedGroups(); void AddGroup(); bool Edit(int idx); void NewGroupEdit(int idx); protected: virtual void mouseDoubleClickEvent(QMouseEvent *event) override; virtual void dropEvent(QDropEvent *event) override; virtual void paintEvent(QPaintEvent *event) override; virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override; };