email_plat/email_client_api/memailmailbox.h
author hgs
Thu, 24 Jun 2010 14:32:18 +0300
changeset 47 f83bd4ae1fe3
permissions -rw-r--r--
201025
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 message API
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef MEMAILMAILBOX_H
hgs
parents:
diff changeset
    19
#define MEMAILMAILBOX_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <memailfolder.h>
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
namespace EmailInterface {
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
class MEmailAddress;
hgs
parents:
diff changeset
    26
class MEmailMessage;
hgs
parents:
diff changeset
    27
class MMailboxContentObserver;
hgs
parents:
diff changeset
    28
class MEmailMessageSearchAsync;
hgs
parents:
diff changeset
    29
class MMailboxSyncObserver;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
/**
hgs
parents:
diff changeset
    32
* Email mailbox interface.
hgs
parents:
diff changeset
    33
* MEmailMailbox cannot be instantiated with factory method. Use
hgs
parents:
diff changeset
    34
* MEmailClientApi::MailboxL to obtain a configured mailbox.
hgs
parents:
diff changeset
    35
* @since S60 v5.0
hgs
parents:
diff changeset
    36
*/
hgs
parents:
diff changeset
    37
class MEmailMailbox : public MEmailInterface
hgs
parents:
diff changeset
    38
{
hgs
parents:
diff changeset
    39
public:
hgs
parents:
diff changeset
    40
    /**
hgs
parents:
diff changeset
    41
    * Returns mailbox identifier
hgs
parents:
diff changeset
    42
    * @return mailbox id
hgs
parents:
diff changeset
    43
    */
hgs
parents:
diff changeset
    44
    virtual TMailboxId MailboxId() const = 0;
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
    /**
hgs
parents:
diff changeset
    47
    * Returns own address of the mailbox. Role is set to ESender
hgs
parents:
diff changeset
    48
    * @return address, ownership not transferred
hgs
parents:
diff changeset
    49
    */
hgs
parents:
diff changeset
    50
    virtual MEmailAddress* AddressL() const = 0;
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
    /**
hgs
parents:
diff changeset
    53
    * Returns mailbox name
hgs
parents:
diff changeset
    54
    * @return mailbox name
hgs
parents:
diff changeset
    55
    */
hgs
parents:
diff changeset
    56
    virtual TPtrC MailboxName() const = 0;
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
    /** returns root level folders of this mailbox, to get subfolders of specific
hgs
parents:
diff changeset
    59
     * folder, use MEmailFolder::GetSubfolders
hgs
parents:
diff changeset
    60
     * @param aFolders pointer array of folders, ownership of folders is
hgs
parents:
diff changeset
    61
     * transferred
hgs
parents:
diff changeset
    62
     * @return number of folders in aFolders or Symbian OS error code
hgs
parents:
diff changeset
    63
     */
hgs
parents:
diff changeset
    64
    virtual TInt GetFoldersL( RFolderArray& aFolders ) const = 0;
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
    /**
hgs
parents:
diff changeset
    67
    * Returns folder by folder id
hgs
parents:
diff changeset
    68
    * @param folder id
hgs
parents:
diff changeset
    69
    * @return pointer to folder, ownership is transferred
hgs
parents:
diff changeset
    70
    */
hgs
parents:
diff changeset
    71
    virtual MEmailFolder* FolderL( const TFolderId& aFolderId ) const = 0;
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
    /**
hgs
parents:
diff changeset
    74
    * Returns folder by type
hgs
parents:
diff changeset
    75
    * @param type other than EOther because it is ambiguous
hgs
parents:
diff changeset
    76
    * @return pointer to folder, ownership is transferred
hgs
parents:
diff changeset
    77
    * @exception KErrNotFound if folder of requested type is not found
hgs
parents:
diff changeset
    78
    */
hgs
parents:
diff changeset
    79
    virtual MEmailFolder* FolderByTypeL(
hgs
parents:
diff changeset
    80
        const TFolderType aFolderType ) const = 0;
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
    /**
hgs
parents:
diff changeset
    83
    * Returns existing message in this mailbox.
hgs
parents:
diff changeset
    84
    * @param aMessageId a message id returned by GetMessagesIdsL()
hgs
parents:
diff changeset
    85
    * @return new message object, ownership transferred.
hgs
parents:
diff changeset
    86
    * @exception
hgs
parents:
diff changeset
    87
    */
hgs
parents:
diff changeset
    88
    virtual MEmailMessage* MessageL( const TMessageId& aMessageId ) = 0;
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
    /**
hgs
parents:
diff changeset
    91
     * Creates new message in 'drafts' folder. Ownership is transferred
hgs
parents:
diff changeset
    92
     * @return new draft message
hgs
parents:
diff changeset
    93
     */
hgs
parents:
diff changeset
    94
    virtual MEmailMessage* CreateDraftMessageL() const = 0;
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    /**
hgs
parents:
diff changeset
    97
     * Creates reply message. Ownership is transferred
hgs
parents:
diff changeset
    98
     * @param aMessageId original message
hgs
parents:
diff changeset
    99
     * @param aReplyToAll If ETrue, all recipients of the original message are
hgs
parents:
diff changeset
   100
     *        added to reply message.
hgs
parents:
diff changeset
   101
     * @return new draft message
hgs
parents:
diff changeset
   102
     */
hgs
parents:
diff changeset
   103
    virtual MEmailMessage* CreateReplyMessageL(
hgs
parents:
diff changeset
   104
        const TMessageId& aMessageId,
hgs
parents:
diff changeset
   105
        const TBool aReplyToAll = ETrue ) const = 0;
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
    /**
hgs
parents:
diff changeset
   108
     * Creates forward message. Ownership is transferred
hgs
parents:
diff changeset
   109
     * @param aMessageId original message
hgs
parents:
diff changeset
   110
     * @return new draft message
hgs
parents:
diff changeset
   111
     */
hgs
parents:
diff changeset
   112
    virtual MEmailMessage* CreateForwardMessageL(
hgs
parents:
diff changeset
   113
        const TMessageId& aMessageId ) const = 0;
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
    /**
hgs
parents:
diff changeset
   116
     * Starts synchronising this mailbox
hgs
parents:
diff changeset
   117
     * @param aObserver observer called back when sync is complete
hgs
parents:
diff changeset
   118
     */
hgs
parents:
diff changeset
   119
    virtual void SynchroniseL( MMailboxSyncObserver& aObserver ) = 0;
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    /**
hgs
parents:
diff changeset
   122
     * Cancels mailbox synchronisation.
hgs
parents:
diff changeset
   123
     */
hgs
parents:
diff changeset
   124
    virtual void CancelSynchronise() = 0;
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    /**
hgs
parents:
diff changeset
   127
    * Returns interface for searching messages from this mailbox. Ownership
hgs
parents:
diff changeset
   128
    * is transferred.
hgs
parents:
diff changeset
   129
    * @return message search interface pointer
hgs
parents:
diff changeset
   130
    */
hgs
parents:
diff changeset
   131
    virtual MEmailMessageSearchAsync* MessageSearchL() = 0;
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
    /**
hgs
parents:
diff changeset
   134
     * Launches Email application and shows inbox.
hgs
parents:
diff changeset
   135
     * The method follows "fire and forget" pattern, returns immediately.
hgs
parents:
diff changeset
   136
     */
hgs
parents:
diff changeset
   137
    virtual void ShowInboxL() = 0;
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
    /** Launches email editor and returns immediately.
hgs
parents:
diff changeset
   140
     * The method follows "fire and forget" pattern, returns immediately.
hgs
parents:
diff changeset
   141
     */
hgs
parents:
diff changeset
   142
    virtual void EditNewMessageL() = 0;
hgs
parents:
diff changeset
   143
    
hgs
parents:
diff changeset
   144
    /** Register mailbox observer 
hgs
parents:
diff changeset
   145
     * @param aObserver observer called back when changes in mailbox (new message,
hgs
parents:
diff changeset
   146
     * messages changes or messages deleted).
hgs
parents:
diff changeset
   147
     * */
hgs
parents:
diff changeset
   148
    virtual void RegisterObserverL( MMailboxContentObserver& aObserver ) = 0;
hgs
parents:
diff changeset
   149
        
hgs
parents:
diff changeset
   150
    /** 
hgs
parents:
diff changeset
   151
     * Unregister mailbox observe.r 
hgs
parents:
diff changeset
   152
     */
hgs
parents:
diff changeset
   153
    virtual void UnregisterObserver( MMailboxContentObserver& aObserver ) = 0;
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
};
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
} // namespace EmailInterface
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
#endif // MEMAILMAILBOX_H