aboutsummaryrefslogtreecommitdiffstats
path: root/plugin/itemregister.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/itemregister.cpp')
-rw-r--r--plugin/itemregister.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/plugin/itemregister.cpp b/plugin/itemregister.cpp
new file mode 100644
index 0000000..f4555f1
--- /dev/null
+++ b/plugin/itemregister.cpp
@@ -0,0 +1,36 @@
+#include "itemregister.h"
+#include <QQuickItem>
+
+ItemRegister::ItemRegister()
+{
+
+}
+
+void ItemRegister::registerItem(QQuickItem* item)
+{
+ if (!item)
+ return;
+
+ m_items.append(item);
+ connect(item, &QQuickItem::destroyed, this, &ItemRegister::onItemDestroyed);
+}
+
+void ItemRegister::unregisterItem(QQuickItem* item)
+{
+ if (!item)
+ return;
+
+ disconnect(item, &QQuickItem::destroyed, this, &ItemRegister::onItemDestroyed);
+ m_items.removeOne(item);
+}
+
+const QList<QQuickItem*> ItemRegister::items() const
+{
+ return m_items;
+}
+
+void ItemRegister::onItemDestroyed(QObject *obj)
+{
+ QQuickItem *item=static_cast<QQuickItem*>(obj);
+ m_items.removeOne(item);
+}