sync
[mardrone] / mardrone / uilistelement.h
diff --git a/mardrone/uilistelement.h b/mardrone/uilistelement.h
new file mode 100644 (file)
index 0000000..1887d5c
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef UILISTELEMENT_H
+#define UILISTELEMENT_H
+
+#include <QObject>
+#include <QString>
+#include <QAbstractListModel>
+#include <QStringList>
+#include <QDebug>
+
+class uiListElement : public QObject
+{
+     Q_OBJECT
+public:
+        Q_PROPERTY(QString name READ name WRITE setName);
+        Q_PROPERTY(QString file READ file WRITE setFile);
+        QString name() const {  return m_name;} ; void setName(QString val) { m_name=val;};
+        QString modelData() const {  return m_name;} ; void setModelData(QString val) { m_name=val;};
+        QString file() const {  return m_file;} ; void setFile(QString val) { m_file=val;};
+
+        explicit uiListElement(QObject *parent = 0);
+ //       explicit uiListElement(const uiListElement &ui);
+        explicit uiListElement(QString name,QString fileName,QObject *parent = 0);
+signals:
+    
+public slots:
+
+private:
+QString m_name;
+QString m_file;
+    
+};
+
+Q_DECLARE_METATYPE(uiListElement*)
+
+class uiListModel : public QAbstractListModel
+{
+    Q_OBJECT
+public:
+    enum uiRoles {
+        NameRole = Qt::UserRole + 1,
+        FileRole,
+        ModelDataRole
+    };
+
+    uiListModel(QObject *parent = 0);
+
+    void addUI(uiListElement *ui);
+
+    int rowCount(const QModelIndex & parent = QModelIndex()) const;
+    Q_INVOKABLE int count();
+    Q_INVOKABLE int roles() { return roleNames().size(); }
+
+    Q_INVOKABLE QObject * get(int index) const { return  m_uiList[index];};
+    QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
+
+private:
+    QList<uiListElement*> m_uiList;
+};
+#endif // UILISTELEMENT_H