diff options
author | PengWu <peng.1.wu@nokia.com> | 2011-11-09 14:11:23 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-10 11:17:38 +0100 |
commit | 97bffe01cf3b1ca3b423fbe7ce68a713336912ab (patch) | |
tree | 0bd5406ba0fe188ce30b1c6e019092a49661a367 /src/imports/organizer/qdeclarativeorganizeritem.cpp | |
parent | 88734a0bf519eb575af96127b63a9dadb73cbe1b (diff) |
Add attendee feature to Organizer QML API
1, Add attendee detail to Organizer QML API
2, Add attendees list property to event
3, Add attendee QML unit test
4, Update Organizer example with attendee detail adding and removing feature
Change-Id: I2e3dc9fbfad226ccbf9075a6e3d162cdc00c4115
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Xizhi Zhu <xizhi.zhu@nokia.com>
Reviewed-by: Päivi Rajala <paivi.rajala@nokia.com>
Diffstat (limited to 'src/imports/organizer/qdeclarativeorganizeritem.cpp')
-rw-r--r-- | src/imports/organizer/qdeclarativeorganizeritem.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/imports/organizer/qdeclarativeorganizeritem.cpp b/src/imports/organizer/qdeclarativeorganizeritem.cpp index 189ca7f73..628bf1d7e 100644 --- a/src/imports/organizer/qdeclarativeorganizeritem.cpp +++ b/src/imports/organizer/qdeclarativeorganizeritem.cpp @@ -695,6 +695,91 @@ void QDeclarativeOrganizerEvent::clearDetails() } /*! + \qmlproperty list<Detail> Event::attendees + + This property holds the attendees list of the event. + */ +QDeclarativeListProperty<QDeclarativeOrganizerEventAttendee> QDeclarativeOrganizerEvent::attendees() +{ + return QDeclarativeListProperty<QDeclarativeOrganizerEventAttendee>(this, 0, + &QDeclarativeOrganizerEvent::_q_attendee_append, + &QDeclarativeOrganizerEvent::_q_attendee_count, + &QDeclarativeOrganizerEvent::_q_attendee_at, + &QDeclarativeOrganizerEvent::_q_attendee_clear); +} + +// call-back functions for list property +/*! + \internal + */ +void QDeclarativeOrganizerEvent::_q_attendee_append(QDeclarativeListProperty<QDeclarativeOrganizerEventAttendee> *property, QDeclarativeOrganizerEventAttendee *value) +{ + QDeclarativeOrganizerEvent *object = qobject_cast<QDeclarativeOrganizerEvent *>(property->object); + if (object) + object->setDetail(value); +} + +/*! + \internal + */ +QDeclarativeOrganizerEventAttendee *QDeclarativeOrganizerEvent::_q_attendee_at(QDeclarativeListProperty<QDeclarativeOrganizerEventAttendee> *property, int index) +{ + QDeclarativeOrganizerEvent *object = qobject_cast<QDeclarativeOrganizerEvent *>(property->object); + QDeclarativeOrganizerEventAttendee *ret = 0; + int i = 0; + foreach (QDeclarativeOrganizerItemDetail *detail, object->m_details) { + if (QDeclarativeOrganizerItemDetail::EventAttendee == detail->type()) { + if (i == index) { + ret = qobject_cast<QDeclarativeOrganizerEventAttendee *>(detail); + break; + } else { + ++i; + } + } + } + return ret; +} + +/*! + \internal + */ +void QDeclarativeOrganizerEvent::_q_attendee_clear(QDeclarativeListProperty<QDeclarativeOrganizerEventAttendee> *property) +{ + QDeclarativeOrganizerEvent *object = qobject_cast<QDeclarativeOrganizerEvent *>(property->object); + if (object) { + int i = 0; + bool removed = false; + foreach (QDeclarativeOrganizerItemDetail *obj, object->m_details) { + if (obj->type() == QDeclarativeOrganizerItemDetail::EventAttendee) { + delete obj; + object->m_details.removeAt(i); + removed = true; + } else {// Index should not increase if some thing is removed + ++i; + } + } + if (removed) + emit object->valueChanged(); + } +} + +/*! + \internal + */ +int QDeclarativeOrganizerEvent::_q_attendee_count(QDeclarativeListProperty<QDeclarativeOrganizerEventAttendee> *property) +{ + QDeclarativeOrganizerEvent *object = qobject_cast<QDeclarativeOrganizerEvent *>(property->object); + int ret = 0; + if (object) { + foreach (QDeclarativeOrganizerItemDetail *detail, object->m_details) { + if (QDeclarativeOrganizerItemDetail::EventAttendee == detail->type()) + ++ret; + } + } + return ret; +} + +/*! \qmlproperty bool Event::allDay This property indicates whether the time-of-day component of the event's start date-time or end date-time is |