diff options
author | Xizhi Zhu <xizhi.zhu@nokia.com> | 2011-08-10 15:08:50 +0300 |
---|---|---|
committer | Xizhi Zhu <xizhi.zhu@nokia.com> | 2011-08-23 13:57:38 +0300 |
commit | ff95b1592bae300914e0e2a65d33b398f61391b1 (patch) | |
tree | eceaee1d177252dfc2ab2dcad5f4bf20882cf01e /src/imports/contacts/qdeclarativecontactfilter.cpp |
Import from latest QtMobility.
Diffstat (limited to 'src/imports/contacts/qdeclarativecontactfilter.cpp')
-rw-r--r-- | src/imports/contacts/qdeclarativecontactfilter.cpp | 397 |
1 files changed, 397 insertions, 0 deletions
diff --git a/src/imports/contacts/qdeclarativecontactfilter.cpp b/src/imports/contacts/qdeclarativecontactfilter.cpp new file mode 100644 index 000000000..10b96e233 --- /dev/null +++ b/src/imports/contacts/qdeclarativecontactfilter.cpp @@ -0,0 +1,397 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qdeclarativecontactfilter_p.h" + +QTPIM_BEGIN_NAMESPACE + +/*! + \qmlclass Filter QDeclarativeContactFilter + \brief The Filter element is used as a property of ContactModel, to allow + selection of contacts which have certain details or properties. + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa QContactFilter + */ + + +/*! + \qmlproperty enumeration Filter::type + + This property holds the type value of this filter. It can be one of: + + \list + \o Filter.DefaultFilter - A filter which matches everything (default). + \o Filter.InvalidFilter - An invalid filter which matches nothing. + \o Filter.DetailFilter - A filter which matches contacts containing one or more details of a particular definition with a particular value. + \o Filter.DetailRangeFilter - A filter which matches contacts containing one or more details of a particular definition whose values are within a particular range. + \o Filter.ChangeLogFilter - A filter which matches contacts whose timestamps have been updated since some particular date and time. + \o Filter.ActionFilter - A filter which matches contacts for which a particular action is available, or which contain a detail with a particular value for which a particular action is available. + \o Filter.RelationshipFilter - A filter which matches contacts which participate in a particular type of relationship, or relationship with a specified contact. + \o Filter.IntersectionFilter - A filter which matches all contacts that are matched by all filters it includes. + \o Filter.UnionFilter - A filter which matches any contact that is matched by any of the filters it includes. + \o Filter.IdFilter - A filter which matches any contact whose local id is contained in a particular list of contact local ids. + \endlist + */ + +/*! + \qmlclass ActionFilter QDeclarativeContactActionFilter + \brief The ActionFilter element provides a filter based around an action availability criterion. + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa QContactActionFilter + */ + +/*! + \qmlproperty string ActionFilter::actionName + + This property holds the action name criterion of the filter. + */ + +/*! + \qmlclass ChangeLogFilter QDeclarativeContactChangeLogFilter + \brief The ChangeLogFilter element provides a filter based around a contact timestamp criterion. + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa QContactChangeLogFilter + */ + +/*! + \qmlproperty date ChangeLogFilter::since + + This property holds the date and time lower-bound criterion of the filter.The value can be one of: + \list + \o ChangeLogFilter.EventAdded + \o ChangeLogFilter.EventChanged + \o ChangeLogFilter.EventRemoved + \endlist + */ + +/*! + \qmlproperty enumeration ChangeLogFilter::eventType + + This property holds the type of change that this filter will match against. + */ + +/*! + \qmlclass DetailFilter QDeclarativeContactDetailFilter + \brief The \l DetailFilter element provides a filter based around a detail value criterion. + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa QContactDetailFilter + */ + +/*! + \qmlproperty enumeration DetailFilter::detail + + This property holds the detail type of which details will be matched to. + + \sa ContactDetail::type + */ + +/*! + \qmlproperty int DetailFilter::field + + This property holds the detail field type of which detail fields will be matched to. + Detail field types are enumeration values defined in each detail elements. + + \sa Address + \sa Anniversary + \sa Avatar + \sa Birthday + \sa DisplayLabel + \sa EmailAddress + \sa Family + \sa Favorite + \sa Gender + \sa GeoLocation + \sa GlobalPresence + \sa Guid + \sa Name + \sa Nickname + \sa Note + \sa OnlineAccount + \sa Organization + \sa PhoneNumber + \sa Presence + \sa Ringtone + \sa SyncTarget + \sa Tag + \sa Timestamp + \sa Url + \sa Hobby + */ + +/*! + \qmlproperty variant DetailFilter::value + + This property holds the value criterion of the detail filter. + */ + +/*! + \qmlproperty enumeration DetailFilter::matchFlags + + This property holds the semantics of the value matching criterion. The valid match flags include: + \list + \o MatchExactly - Performs QVariant-based matching (default). + \o MatchContains - The search term is contained in the item. + \o MatchStartsWith - The search term matches the start of the item. + \o MatchEndsWith - The search term matches the end of the item. + \o MatchFixedString - Performs string-based matching. String-based comparisons are case-insensitive unless the \c MatchCaseSensitive flag is also specified. + \o MatchCaseSensitive - The search is case sensitive. + \endlist + */ + +/*! + \qmlclass DetailRangeFilter QDeclarativeContactDetailRangeFilter + \brief The DetailRangeFilter element provides a filter based around a detail value range criterion. + + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa QContactDetailRangeFilter + */ + +/*! + \qmlproperty enumeration DetailRangeFilter::detail + + This property holds the detail type of which details will be matched to. + + \sa ContactDetail::type + \sa DetailFilter::detail + */ + +/*! + \qmlproperty int DetailRangeFilter::field + + This property holds the detail field type of which detail fields will be matched to. + Detail field types are enumeration values defined in each detail elements. + + \sa DetailFilter::field + */ +/*! + \qmlproperty variant DetailRangeFilter::min + + This property holds the lower bound of the value range criterion. By default, there is no lower bound. + */ +/*! + \qmlproperty variant DetailRangeFilter::max + + This property holds the upper bound of the value range criterion. By default, there is no upper bound. + */ + +/*! + \qmlproperty enumeration DetailRangeFilter::matchFlags + + This property holds the match flags of the criterion, which define semantics such as case sensitivity, and exact matching. + + \sa DetailFilter::matchFlags + */ + +/*! + \qmlproperty enumeration DetailRangeFilter::rangeFlags + + This property holds a set of flags which defines the boundary condition semantics of the value range criterion.The valid range flags include: + \list + \o DetailRangeFilter.IncludeLower + \o DetailRangeFilter.IncludeUpper + \o DetailRangeFilter.ExcludeLower + \o DetailRangeFilter.ExcludeUpper + \endlist + */ +/*! + \qmlclass IntersectionFilter QDeclarativeContactIntersectionFilter + \brief The IntersectionFilter element provides a filter which intersects the results of other filters. + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa QContactIntersectionFilter + */ + +/*! + \qmlproperty list<Filter> IntersectionFilter::filters + + This property holds the list of filters which form the intersection filter. + */ + + +/*! + \qmlclass UnionFilter QDeclarativeContactUnionFilter + \brief The UnionFilter element provides a filter which unions the results of other filters. + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa QContactUnionFilter + */ + +/*! + \qmlproperty list<Filter> UnionFilter::filters + + This property holds the list of filters which form the union filter. + */ + +/*! + \qmlclass IdFilter QDeclarativeContactLocalIdFilter + \brief The IdFilter element provides a filter based around a list of contact ids. + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa QContactLocalIdFilter + */ + +/*! + \qmlproperty list<string> IdFilter::ids + + This property holds the list of ids of contacts which match this filter. + */ + + +/*! + \qmlclass RelationshipFilter QDeclarativeContactRelationshipFilter + \brief The RelationshipFilter element provides a filter based around relationship criteria. + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa Relationship + \sa RelationshipModel + \sa QContactRelationshipFilter + \sa QContactRelationship + */ + + +/*! + \qmlproperty variant RelationshipFilter::relationshipType + + This property holds the type of relationship that a contact must have in order to match the filter. + + \sa Relationship::type + */ + +/*! + \qmlproperty int RelationshipFilter::relatedContactId + + This property holds the id of the contact with whom the tested contact must have a relationship in order for the tested contact to match this filter + */ +/*! + \qmlproperty enumeration RelationshipFilter::relatedContactRole + + This property holds the role in the relationship with the tested contact that the related contact must play in order for the tested contact to match this filter. + The role can be one of: + \list + \o Relationship.First - The contact is the first contact in the relationship. + \o Relationship.Second - The contact is the second contact in the relationship. + \o Relationship.Either - The contact is either the first or second contact in the relationship (default). + \endlist + */ + +/*! + \qmlclass InvalidFilter QDeclarativeContactInvalidFilter + \brief the InvalidFilter element provides a filter which will never match any contacts. + + \ingroup qml-contacts + + This element is part of the \bold{QtMobility.contacts 1.1} module. + + \sa QContactInvalidFilter + */ + +QDeclarativeListProperty<QDeclarativeContactFilter> QDeclarativeContactCompoundFilter::filters() +{ + return QDeclarativeListProperty<QDeclarativeContactFilter>(this, + 0, // opaque data parameter + filters_append, + filters_count, + filters_at, + filters_clear); +} + +void QDeclarativeContactCompoundFilter::filters_append(QDeclarativeListProperty<QDeclarativeContactFilter>* prop, QDeclarativeContactFilter* filter) +{ + QDeclarativeContactCompoundFilter* compoundFilter = static_cast<QDeclarativeContactCompoundFilter*>(prop->object); + compoundFilter->m_filters.append(filter); + QObject::connect(filter, SIGNAL(filterChanged()), compoundFilter, SIGNAL(filterChanged())); + emit compoundFilter->filterChanged(); +} + +int QDeclarativeContactCompoundFilter::filters_count(QDeclarativeListProperty<QDeclarativeContactFilter>* prop) +{ + // The 'prop' is in a sense 'this' for this static function (as given in filters() function) + return static_cast<QDeclarativeContactCompoundFilter*>(prop->object)->m_filters.count(); +} + +QDeclarativeContactFilter* QDeclarativeContactCompoundFilter::filters_at(QDeclarativeListProperty<QDeclarativeContactFilter>* prop, int index) +{ + return static_cast<QDeclarativeContactCompoundFilter*>(prop->object)->m_filters.at(index); +} + +void QDeclarativeContactCompoundFilter::filters_clear(QDeclarativeListProperty<QDeclarativeContactFilter>* prop) +{ + QDeclarativeContactCompoundFilter* filter = static_cast<QDeclarativeContactCompoundFilter*>(prop->object); + qDeleteAll(filter->m_filters); + filter->m_filters.clear(); + emit filter->filterChanged(); +} + +#include "moc_qdeclarativecontactfilter_p.cpp" + +QTPIM_END_NAMESPACE |