summaryrefslogtreecommitdiffstats
path: root/pbap/pbap.h
diff options
context:
space:
mode:
authorMatt Porter <mporter@konsulko.com>2018-06-26 11:55:17 -0400
committerMatt Porter <mporter@konsulko.com>2018-06-26 12:05:20 -0400
commit7a36d1d32561de87cabf5bd6c0665a4f6d10a40b (patch)
tree9f17db84bcd2072dbf8605fd36650c0255885584 /pbap/pbap.h
parentbc9d7b82208767b92cb975e4a2c3dc43983fb6f9 (diff)
pbap: add PBAP data backed ContactsModelflounder_5.99.1flounder/5.99.15.99.1
Expose the PBAP phonebook as a QList of Contact QObjects. Each contact has a variable amount of PhoneNumber objects exposed as a list property. PhoneNumber objects carry both the value and type of phone entry (mobile, work, etc.) Bug-AGL: SPEC-1436 Change-Id: Id22f394c13fd842e36c7866342ed7785b243a27b Signed-off-by: Matt Porter <mporter@konsulko.com>
Diffstat (limited to 'pbap/pbap.h')
-rw-r--r--pbap/pbap.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/pbap/pbap.h b/pbap/pbap.h
index 4b1bd43..8249400 100644
--- a/pbap/pbap.h
+++ b/pbap/pbap.h
@@ -21,6 +21,7 @@
#include <QObject>
#include <QJsonArray>
#include <QtQml/QQmlContext>
+#include <QtQml/QQmlListProperty>
#include "messageengine.h"
@@ -63,23 +64,34 @@ class Contact : public QObject
Q_OBJECT
Q_PROPERTY(QString name READ name NOTIFY nameChanged)
- Q_PROPERTY(QList<QObject *>numbers READ numbers NOTIFY numbersChanged)
+ Q_PROPERTY(QQmlListProperty<PhoneNumber>numbers READ numbersList NOTIFY numbersListChanged)
public:
- explicit Contact(QString name, QList<QObject *>numbers);
+ explicit Contact(QString name, QList<PhoneNumber *>numbers);
virtual ~Contact();
bool operator<(Contact& c) {return ((this->m_name < c.m_name));};
QString name() {return m_name;};
- QList<QObject *>numbers() {return m_numbers;};
+ QList<PhoneNumber *>numbers() {return m_numbers;};
+ QQmlListProperty<PhoneNumber>numbersList() {
+ return QQmlListProperty<PhoneNumber>(this, 0, &Contact::countNumbers, &Contact::atNumbers);
+ }
+ static int countNumbers(QQmlListProperty<PhoneNumber> *property) {
+ Contact *contact = qobject_cast<Contact *>(property->object);
+ return contact->m_numbers.size();
+ }
+ static PhoneNumber *atNumbers(QQmlListProperty<PhoneNumber> *property, int index) {
+ Contact *contact = qobject_cast<Contact *>(property->object);
+ return contact->m_numbers[index];
+ }
signals:
void nameChanged();
- void numbersChanged();
+ void numbersListChanged();
private:
QString m_name;
- QList<QObject *>m_numbers;
+ QList<PhoneNumber *>m_numbers;
};
class RecentCall : public QObject