messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuContactService.h
author hgs
Wed, 03 Nov 2010 09:52:46 +0530
changeset 79 2981cb3aa489
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   Calls voice call or VoIP call to either of addresses provided. 
hgs
parents:
diff changeset
    15
*  CMuiuContactService IS NOT YET READY. IMPLEMENTATION IS MISSING. DO NOT USE.
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef MUIUCONTACTSERVICE_H
hgs
parents:
diff changeset
    21
#define MUIUCONTACTSERVICE_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <e32base.h> // CBase
hgs
parents:
diff changeset
    24
#include <muiumsvuiserviceutilitiesinternal.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
class CMuiuContactAddressMatcher;
hgs
parents:
diff changeset
    28
class CMsgVoIPExtension;
hgs
parents:
diff changeset
    29
class CEikonEnv;
hgs
parents:
diff changeset
    30
class CItemFinder;
hgs
parents:
diff changeset
    31
/**
hgs
parents:
diff changeset
    32
 *  VoIP call:
hgs
parents:
diff changeset
    33
 *  Calls voice call or VoIP call to either of addresses provided. 
hgs
parents:
diff changeset
    34
 *  VoIP call is performed, if VoIP is preferred call method
hgs
parents:
diff changeset
    35
 *  and VoIP profiles exists.
hgs
parents:
diff changeset
    36
 *  VoIP call is possible to perform using either phone number or email address.
hgs
parents:
diff changeset
    37
 *  
hgs
parents:
diff changeset
    38
 *  Voice call: If VoIP is not possible...
hgs
parents:
diff changeset
    39
 *  ...and phone number is supplied, voice call is performed.
hgs
parents:
diff changeset
    40
 *  ...and email address is supplied, email address
hgs
parents:
diff changeset
    41
 *  is used to search for contact. The API searches for first contact mathing 
hgs
parents:
diff changeset
    42
 *  the address. Other contacts are ignored. If contact has several addresses 
hgs
parents:
diff changeset
    43
 *  (phone numbers), AIW is used to let user select address, which will be used.
hgs
parents:
diff changeset
    44
 *  
hgs
parents:
diff changeset
    45
 *  If contact with phone number could not be found matching the supplied 
hgs
parents:
diff changeset
    46
 *  emails address, nothing takes place.
hgs
parents:
diff changeset
    47
 *
hgs
parents:
diff changeset
    48
 *  @lib muiu_internal.lib
hgs
parents:
diff changeset
    49
 *  @since S60 v3.2
hgs
parents:
diff changeset
    50
 */
hgs
parents:
diff changeset
    51
 
hgs
parents:
diff changeset
    52
class CMuiuContactService : public CBase
hgs
parents:
diff changeset
    53
    {
hgs
parents:
diff changeset
    54
public:
hgs
parents:
diff changeset
    55
    enum TMuiuPreferredCallType
hgs
parents:
diff changeset
    56
            {
hgs
parents:
diff changeset
    57
            EMuiuCallTypeNone = 0,
hgs
parents:
diff changeset
    58
            EMuiuCallTypeVoice,
hgs
parents:
diff changeset
    59
            EMuiuCallTypeVoip
hgs
parents:
diff changeset
    60
            };        
hgs
parents:
diff changeset
    61
    
hgs
parents:
diff changeset
    62
public: 
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
    /**
hgs
parents:
diff changeset
    65
     * NewL
hgs
parents:
diff changeset
    66
     * @param aVoipExtension 
hgs
parents:
diff changeset
    67
     * @return self
hgs
parents:
diff changeset
    68
     * @since S60 v3.2
hgs
parents:
diff changeset
    69
     */
hgs
parents:
diff changeset
    70
    IMPORT_C static CMuiuContactService* NewL( 
hgs
parents:
diff changeset
    71
        CEikonEnv&          aEnv,
hgs
parents:
diff changeset
    72
        CMsgVoIPExtension*  aVoipExtension = NULL );
hgs
parents:
diff changeset
    73
        
hgs
parents:
diff changeset
    74
    /// Destructor
hgs
parents:
diff changeset
    75
    IMPORT_C virtual ~CMuiuContactService();
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
    /**
hgs
parents:
diff changeset
    78
    * Returns information whether VOIP calls are supported in this build/device.
hgs
parents:
diff changeset
    79
    * @return ETrue: supported. EFalse: not supported
hgs
parents:
diff changeset
    80
    * @since S60 v3.2
hgs
parents:
diff changeset
    81
    */
hgs
parents:
diff changeset
    82
    IMPORT_C TBool IsVoipSupported() const;    
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    /**
hgs
parents:
diff changeset
    85
    * Returns preferred call type to be tried. Function can be called
hgs
parents:
diff changeset
    86
    * immediately after construction. 
hgs
parents:
diff changeset
    87
    * @return Preferred call type 
hgs
parents:
diff changeset
    88
    * @since S60 v3.2
hgs
parents:
diff changeset
    89
    */
hgs
parents:
diff changeset
    90
    IMPORT_C TMuiuPreferredCallType PreferredCallTypeL() const;    
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
    /**
hgs
parents:
diff changeset
    93
     * Sets primary (usually sender) address.
hgs
parents:
diff changeset
    94
     * Setting address resets earlier found address and name.
hgs
parents:
diff changeset
    95
     * @param aAddress primary address
hgs
parents:
diff changeset
    96
     * @since S60 v3.2
hgs
parents:
diff changeset
    97
     */    
hgs
parents:
diff changeset
    98
    IMPORT_C void SetAddress( const TDesC& aAddress );
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
    /**
hgs
parents:
diff changeset
   101
     * Sets contact name of primary address, if known.
hgs
parents:
diff changeset
   102
     * Setting alias resets earlier found address and name.
hgs
parents:
diff changeset
   103
     * @param aAddress primary address
hgs
parents:
diff changeset
   104
     * @since S60 v3.2
hgs
parents:
diff changeset
   105
     */    
hgs
parents:
diff changeset
   106
    IMPORT_C void SetName( const TDesC& aName );
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
    /**
hgs
parents:
diff changeset
   109
    * Calls to primary address. Operation is synchronous. Secondary address is not 
hgs
parents:
diff changeset
   110
    * searched from phonebook. Function call resets previous results.
hgs
parents:
diff changeset
   111
    * Earlier found address and alias are utilised, it they are still available. 
hgs
parents:
diff changeset
   112
    * @return ETrue: if contact was searched from phonebook.
hgs
parents:
diff changeset
   113
    * @since S60 v3.2
hgs
parents:
diff changeset
   114
    */
hgs
parents:
diff changeset
   115
    IMPORT_C TBool CallL( );    
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
    /**
hgs
parents:
diff changeset
   118
    * Call to primary or secondary address. Secondary address is preferred to primary
hgs
parents:
diff changeset
   119
    * address, if it exists. Operation is synchronous. Secondary address is not 
hgs
parents:
diff changeset
   120
    * searched from phonebook.
hgs
parents:
diff changeset
   121
    * @param aSecondaryAddress secondary address. 
hgs
parents:
diff changeset
   122
    * @return ETrue: if contact was searched from phonebook.
hgs
parents:
diff changeset
   123
    * @since S60 v3.2
hgs
parents:
diff changeset
   124
    */
hgs
parents:
diff changeset
   125
    IMPORT_C TBool CallL( const TDesC& aSecondaryAddress );    
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
    /**
hgs
parents:
diff changeset
   128
    * Call to primary or secondary address. Secondary address is preferred to primary
hgs
parents:
diff changeset
   129
    * address, if it exists. Operation is synchronous. Secondary address is not searched
hgs
parents:
diff changeset
   130
    * from phonebook.
hgs
parents:
diff changeset
   131
    * @param aSecondaryItem Function retrieves current item from CItemFinder and uses 
hgs
parents:
diff changeset
   132
    *         its address. 
hgs
parents:
diff changeset
   133
    * @return ETrue: if primary address was searched from phonebook.
hgs
parents:
diff changeset
   134
    * @since S60 v3.2
hgs
parents:
diff changeset
   135
    */
hgs
parents:
diff changeset
   136
    IMPORT_C TBool CallL( CItemFinder* aSecondaryItem );    
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
    /**
hgs
parents:
diff changeset
   139
    * Method returns information whether contact with phone number was found.
hgs
parents:
diff changeset
   140
    * @return ETrue: contact found. Otherwise not found or search into
hgs
parents:
diff changeset
   141
    *         phonebook was not even done.
hgs
parents:
diff changeset
   142
    * @since S60 v3.2
hgs
parents:
diff changeset
   143
    */
hgs
parents:
diff changeset
   144
    IMPORT_C TBool IsContactFound() const;    
hgs
parents:
diff changeset
   145
    
hgs
parents:
diff changeset
   146
    /**
hgs
parents:
diff changeset
   147
    * If contact search was successful, method to read phone number of matched contact.
hgs
parents:
diff changeset
   148
    * Returns NULL if contact was not found or contact had not phone number
hgs
parents:
diff changeset
   149
    * @return match result, ownership is transferred to caller.
hgs
parents:
diff changeset
   150
    * @since S60 v3.2
hgs
parents:
diff changeset
   151
    */
hgs
parents:
diff changeset
   152
    IMPORT_C TPtrC FoundContactAddressL() const;    
hgs
parents:
diff changeset
   153
    
hgs
parents:
diff changeset
   154
    /**
hgs
parents:
diff changeset
   155
    * If contact search was successful, method to read phone number of matched contact.
hgs
parents:
diff changeset
   156
    * Returns NULL if contact was not found or contact had not phone number
hgs
parents:
diff changeset
   157
    * @return match name, ownership is transferred to caller
hgs
parents:
diff changeset
   158
    * @since S60 v3.2
hgs
parents:
diff changeset
   159
    */
hgs
parents:
diff changeset
   160
    IMPORT_C TPtrC FoundContactNameL() const;
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
private: // implementation  
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
    // Callback function of TCallback
hgs
parents:
diff changeset
   165
    static TInt MatchDone( TAny* aCallService );
hgs
parents:
diff changeset
   166
                                  
hgs
parents:
diff changeset
   167
private:
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
    CMuiuContactService( CEikonEnv&         aEnv ,
hgs
parents:
diff changeset
   170
                         CMsgVoIPExtension* aVoipExtension );
hgs
parents:
diff changeset
   171
                         
hgs
parents:
diff changeset
   172
    void ConstructL();
hgs
parents:
diff changeset
   173
        
hgs
parents:
diff changeset
   174
private: // data
hgs
parents:
diff changeset
   175
       
hgs
parents:
diff changeset
   176
    TPtrC                       iPrimaryAddress;
hgs
parents:
diff changeset
   177
    TPtrC                       iPrimaryName;
hgs
parents:
diff changeset
   178
    TPtrC                       iSecondaryAddress;
hgs
parents:
diff changeset
   179
        
hgs
parents:
diff changeset
   180
    CEikonEnv&                  iEikEnv;
hgs
parents:
diff changeset
   181
    
hgs
parents:
diff changeset
   182
    /// Management of VoIP data
hgs
parents:
diff changeset
   183
    CMsgVoIPExtension*          iVoipExtension;
hgs
parents:
diff changeset
   184
    
hgs
parents:
diff changeset
   185
    CMuiuContactAddressMatcher* iContactAddressMatcher;  
hgs
parents:
diff changeset
   186
    HBufC*                      iMatchAddress;
hgs
parents:
diff changeset
   187
    HBufC*                      iMatchName;
hgs
parents:
diff changeset
   188
    CActiveSchedulerWait        iWait;
hgs
parents:
diff changeset
   189
    };
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
#endif // MUIUCONTACTSERVICE_H