emailservices/emailserver/inc/fsnotificationhandlerhsconnection.h
changeset 0 8466d47a6819
--- /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 <e32base.h>
+//<cmail>
+#include "cfsmailcommon.h"
+//</cmail>
+
+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<TFSMailMsgId> iActiveFSMailboxesInHS;
+
+
+    };
+
+
+#endif // C_FSNOTIFICATIONHANDLERHSCONNECTION_H