1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the test suite of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21 ** included in the packaging of this file. Please review the following
22 ** information to ensure the GNU General Public License requirements will
23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24 **
25 ** $QT_END_LICENSE$
26 **
27 ****************************************************************************/
28 
29 #ifndef QDECLARATIVELOCATIONTESTMODEL_H
30 #define QDECLARATIVELOCATIONTESTMODEL_H
31 
32 #include <QtQuick/QQuickItem>
33 #include <QAbstractListModel>
34 #include <QTimer>
35 #include <QDebug>
36 #include <QList>
37 #include <QtPositioning/QGeoCoordinate>
38 
39 QT_BEGIN_NAMESPACE
40 
41 class DataObject: public QObject
42 {
43     Q_OBJECT
Q_PROPERTY(QGeoCoordinate coordinate READ coordinate CONSTANT)44     Q_PROPERTY(QGeoCoordinate coordinate READ coordinate CONSTANT)
45 
46 public:
47     DataObject() {}
~DataObject()48     ~DataObject() {}
49 
50     QGeoCoordinate coordinate_;
coordinate()51     QGeoCoordinate coordinate() const {return coordinate_;}
52 };
53 
54 class QDeclarativeLocationTestModel : public QAbstractListModel, public QQmlParserStatus
55 {
56     Q_OBJECT
57     Q_PROPERTY(int datacount READ datacount WRITE setDatacount NOTIFY datacountChanged)
58     Q_PROPERTY(int delay READ delay WRITE setDelay NOTIFY delayChanged)
59     Q_PROPERTY(bool crazyMode READ crazyMode WRITE setCrazyMode NOTIFY crazyModeChanged)
60     Q_PROPERTY(int crazyLevel READ crazyLevel WRITE setCrazyLevel NOTIFY crazyLevelChanged)
61     Q_PROPERTY(QString datatype READ datatype WRITE setDatatype NOTIFY datatypeChanged)
62     Q_INTERFACES(QQmlParserStatus)
63 
64 public:
65     QDeclarativeLocationTestModel(QObject* parent = 0);
66     ~QDeclarativeLocationTestModel();
67 
68     enum Roles {
69         TestDataRole = Qt::UserRole + 500
70     };
71 
72     // from QQmlParserStatus
73     virtual void componentComplete();
classBegin()74     virtual void classBegin() {}
75 
76     // From QAbstractListModel
77     virtual int rowCount(const QModelIndex &parent) const;
78     virtual QVariant data(const QModelIndex &index, int role) const;
79     virtual QHash<int, QByteArray> roleNames() const;
80 
81     int datacount() const;
82     void setDatacount(int datacount);
83 
84     int delay() const;
85     void setDelay(int delay);
86 
87     int crazyLevel() const;
88     void setCrazyLevel(int level);
89 
90     bool crazyMode() const;
91     void setCrazyMode(bool mode);
92 
93     QString datatype() const;
94     void setDatatype(QString datatype);
95 
96     //Q_INVOKABLE void clear();
97     Q_INVOKABLE void reset();
98     Q_INVOKABLE void update();
99     //Q_INVOKABLE void reset();
100 
101 signals:
102     void countChanged();
103     void datacountChanged();
104     void datatypeChanged();
105     void delayChanged();
106     void modelChanged();
107     void crazyLevelChanged();
108     void crazyModeChanged();
109 
110 private slots:
111     void repopulate();
112     void timerFired();
113 
114 private:
115     void scheduleRepopulation();
116 
117 private:
118     int delay_;
119     int datacount_;
120     bool componentCompleted_;
121     QString datatype_;
122     QTimer timer_;
123     QList<DataObject*> dataobjects_;
124     int crazyLevel_;
125     bool crazyMode_;
126 };
127 
128 QT_END_NAMESPACE
129 
130 #endif
131