diff -r 000000000000 -r 8466d47a6819 emailservices/emailserver/inc/fsnotificationhandlerhsconnection.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/emailserver/inc/fsnotificationhandlerhsconnection.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,210 @@ +/* +* Copyright (c) 2007 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: This file defines class CFSNotificationHandlerHSConnection. +* +*/ + + +#ifndef C_FSNOTIFICATIONHANDLERHSCONNECTION_H +#define C_FSNOTIFICATIONHANDLERHSCONNECTION_H + +#include +// +#include "cfsmailcommon.h" +// + +class CRepository; + + +/** + * ?one_line_short_description + * ?more_complete_description + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib ?library + * @since S60 ?S60_version *** for example, S60 v3.0 + */ +class CFSNotificationHandlerHSConnection : public CBase + { + +public: + + static CFSNotificationHandlerHSConnection* NewL(); + static CFSNotificationHandlerHSConnection* NewLC(); + + + /** + * Destructor. + */ + virtual ~CFSNotificationHandlerHSConnection(); + + + /** + * Updates internal state from the status of the HS. + * This function has to be called everytime before using + * this class to get the latest info of the HS status. + * + * @since S60 ?S60_version + */ + void UpdateStatusL(); + + /** + * Boolean to represent whether all notifications have + * been turned off or not. Returns true if any of Home Screen + * email plug-ins related to fs email or notification + * plug-in have been turned on. If HS is turned off or + * none of the plugins are on while HS is on, EFalse is + * returned. + * + * @since S60 ?S60_version + * @return Boolean telling whether notifications + * are on or off. ETrue means on. + */ + TBool NotificationsOn() const; + + /** + * Boolean to represent whether the mailbox (account) + * is visible on Home Screen or not. + * + * @since S60 ?S60_version + * @param aMailboxId Mailbox identifier. + * @return EFalse if the mailbox is not visible ETrue else. + */ + TBool MailboxVisibleInHS( TFSMailMsgId aMailboxId ) const; + + +protected: + +private: + + CFSNotificationHandlerHSConnection(); + + void ConstructL(); + + /** + * Function to update internal HS state variables from + * repositories. + * + * @since S60 ?S60_version + */ + void UpdateFromCrL(); + + /** + * Boolean to represent whether notifications plugin is + * marked to be on in repository. + * Returns true if the plugin is on. Otherwise EFalse is + * returned. + * + * @since S60 ?S60_version + * @return Boolean telling whether notifications + * plugin is on or off. ETrue means on. + */ + TBool NotificationsPluginOnInCrL(); + + /** + * Function to retrieve home screen email plugin info + * from repositories. + * + * @since S60 ?S60_version + * @param aPluginUid Uid identifying the mail plugin whose info + * is requested. + * @param aCrIdForPluginFrameworkType Repository key for + * the framework type of the account attached to the plugin. + * @param aCrIdForPluginEmailBoxId Repository key for the + * mailbox id of the account attached to the plugin. + * @param aCrIdForPluginEmailPluginUid Repository key for the + * plugin uid of the account attached to the plugin. + * @param aPluginOn Whether the identified plugin is on or off. + * ETrue is on. + * @param aBoxIsFsBox Boolean telling whether the identified plugin + * is attached to a Freestyle mailbox. ETrue means that it + * is. This parameter is not updated if aPluginOn is EFalse. + * @param aBoxId Id of the Frestyle mailbox if the aBoxIsFsBox is + * ETrue. Otherwise this parameter remains unaltered. + */ + void PluginInfoFromCrL( + const TUint32 aPluginUid, + const TUint32 aCrIdForPluginFrameworkType, + const TUint32 aCrIdForPluginEmailBoxId, + const TUint32 aCrIdForPluginEmailPluginUid, + TBool& aPluginOn, + TBool& aBoxIsFsBox, + TFSMailMsgId& aBoxId ); + + /** + * Function that updates internal status according to given + * HS mail plugin info. + * + * @since S60 ?S60_version + * @param aPluginOn Informs whether a HS mail plugin is on or + * not. + * @param aMailboxId Mailbox identifier of the FS mailbox that is + * attached to the HS plugin. Should be NULL id if no FS + * mailbox is attached to HS plugin. + */ + void UpdateInternalStatusFromPluginInfoL( + TBool aPluginOn, + TFSMailMsgId aMailboxId ); + +private: // data + + /** + * Boolean which tells whether the Home Screen is on or off. + * ETrue when on. + */ + TBool iHSOn; + + /** + * Boolean which tells whether any of the Home Screen plugins + * that are relevant to FS email are on. + * ETrue when on. + */ + TBool iAnyFSRelevantHSPluginOn; + + /** + * Access to personalization repository which is used to check + * whether HS is on or not. + * Own. + */ + CRepository* iPersonalizationRepo; + + /** + * Access to Active Idle repository which is used to check + * what plugins are active in HS. + * Own. + */ + CRepository* iActiveIdleRepo; + + /** + * Access to Home Screen repository which is used to check + * Home Screen info. + * Own. + */ + CRepository* iHomeScreenRepo; + + + /** + * Array identifying Freestyle mailboxes that are currently + * shown in home screen. + */ + RArray iActiveFSMailboxesInHS; + + + }; + + +#endif // C_FSNOTIFICATIONHANDLERHSCONNECTION_H