diff -r 2a11b5b00470 -r fd64c38c277d phonebookengines/mobcntmodel/inc/cntinfoprovider.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines/mobcntmodel/inc/cntinfoprovider.h Thu May 27 12:45:19 2010 +0300 @@ -0,0 +1,90 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Interface for info provider plugins to class CntListModel. +* +*/ + +#ifndef CNTINFOPROVIDER_H +#define CNTINFOPROVIDER_H + +#include +#include + +QTM_USE_NAMESPACE + +/* + Info providers may provide up to three different types of info fields: + text, icon1 and icon2. + */ +enum ContactInfoField { + ContactInfoTextField = 0x01, + ContactInfoIcon1Field = 0x02, + ContactInfoIcon2Field = 0x04, + ContactInfoAllFields = ContactInfoTextField | ContactInfoIcon1Field | ContactInfoIcon2Field +}; +Q_DECLARE_FLAGS(ContactInfoFields, ContactInfoField) +Q_DECLARE_OPERATORS_FOR_FLAGS(ContactInfoFields) + +/* + Interface for info provider plugins. Info provider plugins provide the kind of + info that a listview with contacts wants. Examples includes phone number, image url + and online status (text and/or icon). + */ +class CntInfoProvider : public QObject +{ + Q_OBJECT +public: + /* + The unqiue name of the plugin. + + /return the id of the plugin + */ + virtual QString id() const = 0; + + /* + Checks fields that the client can provide. + + /return all the ContactInfoFields that this plugin can provide to clients + */ + virtual ContactInfoFields supportedFields() const = 0; + + /* + Requests info about a contact. The requested info fields are passed + back to the client via infoFieldReady() signals. Ideally this function + should not consume more than 50 ms of time. Info that takes longer to + fetch should use some asynchronous way of getting the data. + + Info values are by default empty, so an empty value does not need not be + sent back in response to this request. However, if a value *changes* and + becomes empty, that will of course need to be signaled. + + /param contact the contact for which info is requested + /param requestedInfo one or more of the flags in ContactInfoFields + */ + virtual void requestInfo(const QContact& contact, ContactInfoFields requestedInfo) = 0; + +signals: + /* + The requested info fields are passed back to the client via infoFieldReady() + signals, one signal per field. + + /param sender the provider that sends the signal + /param contactId the if of the contact that this info is about + /param field the field that is ready (text, icon1 or icon2) + /param value the value of the info field + */ + void infoFieldReady(CntInfoProvider* sender, int contactId, ContactInfoField field, const QString& value); +}; + +#endif