contacts_plat/contacts_ui_extensions_api/inc/cntinfoprovider.h
changeset 65 ae724a111993
equal deleted inserted replaced
59:a642906a277a 65:ae724a111993
       
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: Interface for info provider plugins to class CntListModel.
       
    15 *
       
    16 */
       
    17 
       
    18 #ifndef CNTINFOPROVIDER_H
       
    19 #define CNTINFOPROVIDER_H
       
    20 
       
    21 #include <QObject>
       
    22 #include <qcontact.h>
       
    23 
       
    24 QTM_USE_NAMESPACE
       
    25 
       
    26 /*
       
    27    Info providers may provide up to three different types of info fields:
       
    28    text, icon1 and icon2.
       
    29  */
       
    30 enum ContactInfoField {
       
    31     ContactInfoTextField = 0x01,
       
    32     ContactInfoIcon1Field = 0x02,
       
    33     ContactInfoIcon2Field = 0x04,
       
    34     ContactInfoAllFields = ContactInfoTextField | ContactInfoIcon1Field | ContactInfoIcon2Field
       
    35 };
       
    36 Q_DECLARE_FLAGS(ContactInfoFields, ContactInfoField)
       
    37 Q_DECLARE_OPERATORS_FOR_FLAGS(ContactInfoFields)
       
    38 
       
    39 /*
       
    40    Interface for info provider plugins. Info provider plugins provide the kind of
       
    41    info that a listview with contacts wants. Examples includes phone number, image url
       
    42    and online status (text and/or icon).
       
    43  */
       
    44 class CntInfoProvider : public QObject
       
    45 {
       
    46 
       
    47 public:
       
    48     /* 
       
    49        The unqiue name of the plugin.
       
    50 
       
    51        /return the id of the plugin
       
    52      */
       
    53     virtual QString id() const = 0;
       
    54 
       
    55     /* 
       
    56        Checks fields that the client can provide.
       
    57        
       
    58        /return all the ContactInfoFields that this plugin can provide to clients
       
    59      */
       
    60     virtual ContactInfoFields supportedFields() const = 0;
       
    61 
       
    62     /* 
       
    63        Requests info about a contact. The requested info fields are passed
       
    64        back to the client via infoFieldReady() signals. Ideally this function
       
    65        should not consume more than 50 ms of time. Info that takes longer to
       
    66        fetch should use some asynchronous way of getting the data.
       
    67        
       
    68        Info values are by default empty, so an empty value does not need not be
       
    69        sent back in response to this request. However, if a value *changes* and
       
    70        becomes empty, that will of course need to be signaled.
       
    71         
       
    72        /param contact the contact for which info is requested
       
    73        /param requestedInfo one or more of the flags in ContactInfoFields
       
    74      */
       
    75     virtual void requestInfo(const QContact& contact, ContactInfoFields requestedInfo) = 0;
       
    76 
       
    77 signals:
       
    78     /* 
       
    79        The requested info fields are passed back to the client via infoFieldReady()
       
    80        signals, one signal per field.
       
    81        
       
    82        /param sender the provider that sends the signal
       
    83        /param contactId the if of the contact that this info is about
       
    84        /param field the field that is ready (text, icon1 or icon2)
       
    85        /param value the value of the info field
       
    86      */
       
    87     void infoFieldReady(CntInfoProvider* sender, int contactId, ContactInfoField field, const QString& value);
       
    88 };
       
    89 
       
    90 #endif