email_plat/email_client_api/inc/emailapidefs.h
author hgs
Thu, 30 Sep 2010 11:43:07 +0300
changeset 74 6c59112cfd31
parent 47 email_plat/email_client_api/emailapidefs.h@f83bd4ae1fe3
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 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: Email Client API definitions
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef __EMAILAPIDEFS
hgs
parents:
diff changeset
    19
#define __EMAILAPIDEFS
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <e32base.h>
hgs
parents:
diff changeset
    22
#include <f32file.h>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
namespace EmailInterface {
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
/**
hgs
parents:
diff changeset
    27
* Id for message, message part, folder and mailbox entries
hgs
parents:
diff changeset
    28
*/
hgs
parents:
diff changeset
    29
typedef TUint TEntryId;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
/**
hgs
parents:
diff changeset
    32
* Interface id. Each implementation of MEmailInterface has unique id value.
hgs
parents:
diff changeset
    33
*/
hgs
parents:
diff changeset
    34
typedef TInt TEmailTypeId;
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
const TEntryId KUndefinedEntryId = 0;
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
/**
hgs
parents:
diff changeset
    39
 * base interface for all email interfaces available to clients
hgs
parents:
diff changeset
    40
 * @since S60 v5.0
hgs
parents:
diff changeset
    41
 */
hgs
parents:
diff changeset
    42
class MEmailInterface
hgs
parents:
diff changeset
    43
{
hgs
parents:
diff changeset
    44
public:
hgs
parents:
diff changeset
    45
    /** returns interface id (kind of RTTI) */
hgs
parents:
diff changeset
    46
    virtual TEmailTypeId InterfaceId() const = 0;
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
    /** frees memory allocated by interface impl. */    
hgs
parents:
diff changeset
    49
    virtual void Release() = 0;
hgs
parents:
diff changeset
    50
};
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
/**
hgs
parents:
diff changeset
    53
 * Defines abstraction for entry ID. Used by message, folder, mailbox etc types.
hgs
parents:
diff changeset
    54
 * @since S60 v5.0
hgs
parents:
diff changeset
    55
 */
hgs
parents:
diff changeset
    56
class TBaseId
hgs
parents:
diff changeset
    57
{
hgs
parents:
diff changeset
    58
public:
hgs
parents:
diff changeset
    59
    inline TBaseId() : iId( KUndefinedEntryId ){}
hgs
parents:
diff changeset
    60
    inline TBaseId( TEntryId aId ) : iId( aId ){}
hgs
parents:
diff changeset
    61
    
hgs
parents:
diff changeset
    62
    TEntryId   iId;
hgs
parents:
diff changeset
    63
};
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
/**
hgs
parents:
diff changeset
    66
 * Defines mailbox ID
hgs
parents:
diff changeset
    67
 * @since S60 v5.0
hgs
parents:
diff changeset
    68
 */
hgs
parents:
diff changeset
    69
class TMailboxId : public TBaseId  
hgs
parents:
diff changeset
    70
{
hgs
parents:
diff changeset
    71
public:
hgs
parents:
diff changeset
    72
    inline TMailboxId() : 
hgs
parents:
diff changeset
    73
        TBaseId(){}
hgs
parents:
diff changeset
    74
    inline TMailboxId( TEntryId aId ) : TBaseId( aId ){}
hgs
parents:
diff changeset
    75
    inline TBool operator==( const TMailboxId& aMailboxId ) const {
hgs
parents:
diff changeset
    76
        return ( aMailboxId.iId == iId ); }
hgs
parents:
diff changeset
    77
};
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
/**
hgs
parents:
diff changeset
    80
 * Defines folder ID which is associated with a mailbox
hgs
parents:
diff changeset
    81
 * @since S60 v5.0
hgs
parents:
diff changeset
    82
 */
hgs
parents:
diff changeset
    83
class TFolderId : public TBaseId
hgs
parents:
diff changeset
    84
{
hgs
parents:
diff changeset
    85
public:
hgs
parents:
diff changeset
    86
    // parent mailbox
hgs
parents:
diff changeset
    87
    TMailboxId iMailboxId;
hgs
parents:
diff changeset
    88
    inline TFolderId( TEntryId aId, const TMailboxId& aMailboxId ) : 
hgs
parents:
diff changeset
    89
        TBaseId( aId ),iMailboxId( aMailboxId.iId ){}
hgs
parents:
diff changeset
    90
        
hgs
parents:
diff changeset
    91
    inline TFolderId() : TBaseId(), iMailboxId() {}
hgs
parents:
diff changeset
    92
    
hgs
parents:
diff changeset
    93
    inline TBool operator==( const TFolderId& aFolderId ) const {
hgs
parents:
diff changeset
    94
        return ( iMailboxId.iId == aFolderId.iMailboxId.iId &&
hgs
parents:
diff changeset
    95
        iId == aFolderId.iId ); }
hgs
parents:
diff changeset
    96
        
hgs
parents:
diff changeset
    97
    inline TBool operator!=( const TFolderId& aFolderId ) const {
hgs
parents:
diff changeset
    98
        return !( aFolderId == *this ); }
hgs
parents:
diff changeset
    99
};
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
/**
hgs
parents:
diff changeset
   102
 * Defines email message ID which is associated with a mailbox and folder
hgs
parents:
diff changeset
   103
 * @since S60 v5.0
hgs
parents:
diff changeset
   104
 */
hgs
parents:
diff changeset
   105
class TMessageId : public TBaseId
hgs
parents:
diff changeset
   106
{
hgs
parents:
diff changeset
   107
public:
hgs
parents:
diff changeset
   108
    inline TMessageId() : TBaseId(), iFolderId(){}
hgs
parents:
diff changeset
   109
    
hgs
parents:
diff changeset
   110
    inline TMessageId( TEntryId aMsgId, TEntryId aFolderId, TMailboxId aMailboxId ) : 
hgs
parents:
diff changeset
   111
    TBaseId( aMsgId ), iFolderId( aFolderId, aMailboxId ){}
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    inline TBool operator==( const TMessageId& aMessageId ) const {
hgs
parents:
diff changeset
   114
        return ( iFolderId == aMessageId.iFolderId &&
hgs
parents:
diff changeset
   115
        iId == aMessageId.iId ); }
hgs
parents:
diff changeset
   116
        
hgs
parents:
diff changeset
   117
    inline TBool operator!=( const TMessageId& aMessageId ) const {
hgs
parents:
diff changeset
   118
        return !( aMessageId == *this ); }
hgs
parents:
diff changeset
   119
    
hgs
parents:
diff changeset
   120
    /**
hgs
parents:
diff changeset
   121
    * parent folder id.
hgs
parents:
diff changeset
   122
    */
hgs
parents:
diff changeset
   123
    TFolderId iFolderId;
hgs
parents:
diff changeset
   124
};
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
/**
hgs
parents:
diff changeset
   128
 * Message content (part) id
hgs
parents:
diff changeset
   129
 * @since S60 v5.0
hgs
parents:
diff changeset
   130
 */
hgs
parents:
diff changeset
   131
class TMessageContentId : public TBaseId
hgs
parents:
diff changeset
   132
{
hgs
parents:
diff changeset
   133
public:
hgs
parents:
diff changeset
   134
    inline TMessageContentId(): TBaseId(), iMessageId() {}
hgs
parents:
diff changeset
   135
    
hgs
parents:
diff changeset
   136
    inline TMessageContentId( TEntryId aContentId, TEntryId aMsgId, TEntryId aFolderId, TMailboxId aMailboxId ) : 
hgs
parents:
diff changeset
   137
    TBaseId( aContentId ), iMessageId( aMsgId, aFolderId, aMailboxId ){}
hgs
parents:
diff changeset
   138
    
hgs
parents:
diff changeset
   139
    inline TBool operator==( const TMessageContentId& aContentId ) const {
hgs
parents:
diff changeset
   140
        return ( iMessageId == aContentId.iMessageId &&
hgs
parents:
diff changeset
   141
        iId == aContentId.iId ); }
hgs
parents:
diff changeset
   142
        
hgs
parents:
diff changeset
   143
    inline TBool operator!=( const TMessageContentId& aContentId ) const {
hgs
parents:
diff changeset
   144
        return !( aContentId == *this ); }
hgs
parents:
diff changeset
   145
    
hgs
parents:
diff changeset
   146
    // parent message
hgs
parents:
diff changeset
   147
    TMessageId iMessageId;
hgs
parents:
diff changeset
   148
};
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
typedef RArray<TMessageId> REmailMessageIdArray;
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
typedef RArray<TFolderId>  REmailFolderIdArray;
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
typedef RArray<TMailboxId>     REmailMailboxIdArray;
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
} // EmailInterface
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
#endif // __EMAILAPIDEFS