diff -r 000000000000 -r 8466d47a6819 emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,341 @@ +/* +* Copyright (c) 2008 - 2009 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: Class to handle content publishing for widget +* +*/ + + +#ifndef __CMAILCPSHANDLER_H__ +#define __CMAILCPSHANDLER_H__ + +#include +// FSMailServer classes (base classes and callback interfaces) +#include "fsnotificationhandlerbase.h" +#include "fsnotificationhandlernotifierinitiator.h" +#include "fsnotificationhandlernotifierinitiatorobserver.h" +// Member classes +#include "cmailcpssettings.h" // MMailCpsSettingsCallback + +class CMailCpsIf; +class CFSMailBox; +class CMailMailboxDetails; +class CMailCpsSettings; + +/** + * CMail ContentPublishingService Handler class + * Class implementing a handler functionality towards rest of the MailServer + * + * @lib fsmailserver.exe + * @since S60 v5.1 + */ +NONSHARABLE_CLASS( CMailCpsHandler ) : + public CFSNotificationHandlerBase, + public MMailCpsSettingsCallback + { +public: + + /** + * Two-phased constructor. + * @param aOwner Owner and manager of this handler. + */ + static CMailCpsHandler* NewL( MFSNotificationHandlerMgr& aOwner ); + + /** + * Destructor. + */ + virtual ~CMailCpsHandler(); + + /** + * From MMailCpsSettingsCallback + */ + virtual void SettingsChangedCallback(); + + /** + * Wraps all "Update*" methods + */ + void UpdateFullL(); + + /** + * + */ + void UpdateMailboxesL(TInt aInstance, const TDesC& aContentId); + + /** + * + */ + void LaunchWidgetSettingsL( const TDesC& aContentId ); + + /** + * + */ + void LaunchEmailUIL( const TDesC& aContentId ); + + /** + * + */ + void LaunchEmailWizardL(); + /** + * + */ + TBool AssociateWidgetToSetting( const TDesC& aContentId ); + + /** + * + */ + void DissociateWidgetFromSetting( const TDesC& aContentId ); + + /** + * + */ + TInt GetMailboxCount(); + +protected: + /** + * From CFSNotificationHandlerBase + * see baseclass for details + */ + virtual TBool CapabilitiesToContinueL( + TFSMailEvent aEvent, + TFSMailMsgId aMailbox, + TAny* aParam1, + TAny* aParam2, + TAny* aParam3 ) const; + + /** + * From CFSNotificationHandlerBase + * see baseclass for details + */ + virtual void HandleEventL( + TFSMailEvent aEvent, + TFSMailMsgId aMailbox, + TAny* aParam1, + TAny* aParam2, + TAny* aParam3 ); + +private: + /** + * Constructor + * @param aOwner reference to owning class. CpsHandler is just one of + * the handlers running in MailServer process. + */ + CMailCpsHandler( MFSNotificationHandlerMgr& aOwner ); + void ConstructL(); + + // Initialization methods + /** + * Resets everything + */ + void Reset(); + + /** + * Initializes everything + */ + void InitializeL(); + + // Creation methods + /** + * Creates an instance of mailboxdetails based on parameters + * @param aMailbox mailbox + * @return pointer to instance of CMailMailboxDetails. + * Caller gets ownership of the returned object. + */ + CMailMailboxDetails* CreateMailboxDetailsL( CFSMailBox& aMailbox ); + + /** + * Finds mailbox details instance from the local array + * @param aMailbox mailbox id + * @return pointer to instance of CMailMailboxDetails + */ + CMailMailboxDetails* FindMailboxDetails( TFSMailMsgId aMailbox ); + + /** + * + */ + void CMailCpsHandler::UpdateMailboxNameL( const TInt aMailBoxNumber, + const TInt aWidgetInstance, + const TInt aRowNumber ); + + /** + * Handles publishing of message details + */ + void UpdateMessagesL( const TInt aMailBoxNumber, + const TInt aWidgetInstance, + const TInt aMessageNumber, + const TInt aFirstRow ); + + /** + * Gets correct localised format for time (or date) string + */ + HBufC* GetMessageTimeStringL( TTime aMessageTime ); + + /** + * + */ + void UpdateEmptyMessagesL( const TInt aWidgetInstance, + const TInt aFirstRow ); + + /** + * Handles publishing of connection state icon + */ + void UpdateConnectStateL( const TInt aMailBoxNumber, const TInt aRowNumber ); + + /** + * Handles publishing of mailbox icon + */ + void UpdateMailBoxIconL( const TInt aMailBoxNumber, + const TInt aWidgetInstance, + const TInt aRowNumber ); + + /** + * Handles publishing of unseen icon + */ + void UpdateIndicatorIconL( const TInt aMailBoxNumber, + const TInt aWidgetInstance, + const TInt aRowNumber ); + + /** + * Handles publishing of empty message time string + */ +// void ClearMessageTimeL( const TInt aRowNumber ); + + // Event handling subroutines + /** + * handles new mailbox event + * @param aMailbox mailbox id + */ + void HandleNewMailboxEventL( const TFSMailMsgId aMailbox ); + + /** + * handles mailbox deleted event + * @param aMailbox mailbox id + */ + void HandleMailboxDeletedEventL( const TFSMailMsgId aMailbox ); + + /** + * handles new mail event + * @param aMailbox mailbox id + * @param aParam1 contains event specific parameters + * @param aParam2 contains event specific parameters + */ + void HandleNewMailEventL( TFSMailMsgId aMailbox, TAny* aParam1, TAny* aParam2 ); + + /** + * handles mail deleted event + * @param aMailbox mailbox id + * @param aParam1 contains event specific parameters + * @param aParam2 contains event specific parameters + */ + void HandleMailDeletedEventL( TFSMailMsgId aMailbox, TAny* aParam1, TAny* aParam2 ); + + /** + * handles mail changed event + * @param aMailbox mailbox id + * @param aParam1 contains event specific parameters + * @param aParam2 contains event specific parameters + */ + void HandleMailChangedEventL( TFSMailMsgId aMailbox, TAny* aParam1, TAny* aParam2 ); + + /** + * handles new folder event + * @param aMailbox mailbox id + * @param aParam1 contains event specific parameters + * @param aParam2 contains event specific parameters + */ + void HandleNewFolderEventL( TFSMailMsgId aMailbox, TAny* aParam1, TAny* aParam2 ); + + /** + * get count of unread messages in inbox + * @param aMailbox mailbox id + */ + TInt GetUnreadCountL( TFSMailMsgId aMailbox); + + /** + * get count of unseen messages in inbox + * @param aMailbox mailbox id + */ + TInt GetUnseenCountL( TFSMailMsgId aMailbox); + + /** + * Tells if outbox is empty + * @param aMailbox mailbox id + */ + TBool IsOutboxEmptyL( TFSMailMsgId aMailbox); + + /** + * From CFSNotificationHandlerBase + * Not used + */ + virtual void TurnNotificationOn(); + + /** + * From CFSNotificationHandlerBase + * Not used + */ + virtual void TurnNotificationOff(); + + /** + * + */ + TInt GetMailIcon( CFSMailMessage* aMsg ); + + /** + * + */ + TInt GetUnreadMsgIcon( CFSMailMessage* aMsg ); + + /** + * + */ + TInt GetReadMsgIcon( CFSMailMessage* aMsg ); + + /** + * + */ + TInt GetUnreadCalMsgIcon( CFSMailMessage* aMsg ); + + /** + * + */ + TInt GetReadCalMsgIcon( CFSMailMessage* aMsg ); + + /** + * + */ + TBool IsValidDisplayName(const TDesC& aDisplayName); + + /** + * + */ + void PublishMessageL( TInt aWidgetInstance, CFSMailMessage& aMessage, + const TDesC& aSenderName, const TDesC& aTime, TInt aFirstRow); + + /** + * Checks if the given message is already know/published + * @param aMailbox specifies the mailboxdetails object where duplicate is searched from + * @param aMsgId Id of the new message + * @return ETrue if duplicate, EFalse if new message + */ + TBool IsDuplicate( const CMailMailboxDetails& aMailbox, const TFSMailMsgId& aMsgId ); + +private: // data + CEikonEnv* iEnv; + // pointer to liw wrapper that handles actual publishing + CMailCpsIf* iLiwIf; + // pointer to settings class that handles settings loading and observing logic + CMailCpsSettings* iSettings; + // local cache of mailbox details + RPointerArray iAccountsArray; + }; + +#endif //__CMAILCPSHANDLER_H__