summaryrefslogtreecommitdiff
path: root/src/ivicore/qtivisimplediscoverymodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ivicore/qtivisimplediscoverymodel.h')
-rw-r--r--src/ivicore/qtivisimplediscoverymodel.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/ivicore/qtivisimplediscoverymodel.h b/src/ivicore/qtivisimplediscoverymodel.h
new file mode 100644
index 0000000..e2f5b27
--- /dev/null
+++ b/src/ivicore/qtivisimplediscoverymodel.h
@@ -0,0 +1,56 @@
+/************************************************************************************************
+ * Copyright (c) 2012-2015 Pelagicore AG. All rights reserved.
+ *
+ * This software, including documentation, is protected by copyright controlled by Pelagicore AG.
+ * All rights reserved. Copying, including reproducing, storing, adapting or translating, any or
+ * all of this material requires prior written consent of Pelagicore AG Corporation. This material
+ * also contains confidential information which may not be disclosed to others without the prior
+ * written consent of Pelagicore AG.
+ ************************************************************************************************/
+
+#ifndef QTIVISIMPLEDISCOVERYMODEL_H
+#define QTIVISIMPLEDISCOVERYMODEL_H
+
+#include <QAbstractListModel>
+
+class QtIVIServiceObject;
+
+template <class T>
+class QtIVISimpleDiscoveryModel : public QAbstractListModel
+{
+ Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
+
+public:
+ enum ModelRoles {
+ ServiceObject = Qt::UserRole + 1
+ };
+
+ QtIVISimpleDiscoveryModel(QString interface, QObject* parent = 0);
+ virtual ~QtIVISimpleDiscoveryModel();
+
+ QHash<int, QByteArray> roleNames() const;
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ QVariant data(const QModelIndex &index, int role) const;
+
+ Q_INVOKABLE T* at(int index);
+ Q_INVOKABLE QtIVIServiceObject* serviceObjectAt(int index);
+
+signals:
+ void countChanged();
+
+protected:
+ virtual void updateServiceObjects(QList<QtIVIServiceObject*>);
+ virtual void addServiceObjects(QList<QtIVIServiceObject*>);
+ virtual void removeServiceObjects(QList<QtIVIServiceObject*>);
+
+private:
+
+ QString m_interface;
+ QList<QtIVIServiceObject*> m_serviceObjects;
+ QHash< QByteArray, int > m_reverseRoles;
+ QHash< int, QByteArray > m_roles;
+ QSet< int > m_enumProperties;
+};
+
+#endif // QTIVISIMPLEDISCOVERYMODEL_H