meetingrequestengines/mrmailboxutils/inc/cmrutilsmsvhelper.h
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequestengines/mrmailboxutils/inc/cmrutilsmsvhelper.h	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,184 @@
+/*
+* Copyright (c) 2005 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 for handling message entries and using CMsvSession.
+*
+*/
+
+
+
+#ifndef __CMRUTILSMSVHELPER_H__
+#define __CMRUTILSMSVHELPER_H__
+
+//  INCLUDES
+#include "cmrmailboxutils.h"
+#include <mmrmbutilsmbinfohandler.h>
+
+#include <e32base.h>
+#include <msvapi.h>
+#include <badesca.h>
+
+// FORWARD DECLARATIONS
+class CImSmtpSettings;
+class CEmailAccounts;
+class CClientMtmRegistry;
+class CMRMailBoxInfo;
+
+// same as in imum's MuiuDynamicSettingsArray.hrh & imas.hrh
+const TInt KMREmailAddrLength = 100;
+
+// CLASS DECLARATION
+
+/**
+* 
+*/
+class  CMRUtilsMsvHelper
+: public CBase, 
+  public MMRMBUtilsMBInfoHandler,
+  public MMsvSessionObserver
+    {
+    public: // Constructors and destructors
+
+        static CMRUtilsMsvHelper* NewL(
+            CMsvSession* aSession,
+            MMsvSessionObserver& aParentObserver );
+
+        /**
+        * Destructor.
+        */
+        ~CMRUtilsMsvHelper();
+        
+    public: // New functions
+
+        /**
+        * Get session reference.
+        * @return session reference
+        */        
+        CMsvSession& MsvSessionL();
+                                    
+    public: // From MMRMBUtilsMBInfoHandler
+
+        const RPointerArray<CMRMailBoxInfo>& MRMailBoxes() const;
+            
+        /**
+        * Information about the specific mailbox.
+        * Ownership is not transferred.
+        * @param aEntryId entry id
+        * @return mailbox info or NULL if mailbox not found
+        */        
+        const CMRMailBoxInfo* MRMailBoxInfoL( TInt iId) const;
+
+        /**
+        * Information about all mailboxes available.
+        * @param aMailBoxes array to be filled with information
+        */
+        void ListMRMailBoxesL(
+            RArray<CMRMailboxUtils::TMailboxInfo>& aMailBoxes );
+        
+        /**
+        * Extension API
+        */
+        TAny* ExtensionL( TUid aExtensionUid );  
+                                  
+    protected: // From MMsvSessionObserver
+    
+        void HandleSessionEventL( TMsvSessionEvent aEvent, 
+                                  TAny *aArg1, 
+                                  TAny *aArg2, 
+                                  TAny *aArg3 );
+
+    protected: // New functions
+        
+        /**
+        * E-mail address of a specific mailbox.
+        */                                                          
+        //TBuf<KMREmailAddrLength> EMailAddressL( TMsvEntry& entry );    
+          void  EMailAddressL( TMsvEntry& entry );  
+        /**
+        * Looks up SMTP service which is related to given service.
+        * This is used for reading SMTP settings.
+        */
+        TMsvId CorrespondingSmtpServiceL( TMsvEntry& entry ) const;
+                
+        /**
+        * Loads and returns SMTP settings.
+        * Item is left to cleanup stack, ownership is transferred.
+        */
+        CImSmtpSettings* SmtpSettingsLC( TMsvId aSmtpService );
+                    
+        /**
+        * Helper method for checking whether given mtm supports MR sending.
+        * @param aMtmUid specifies the mtm to evaluate
+        * @return ETrue if supports, EFalse otherwise        
+        */
+        TBool IsMRCapableL( TUid aMtmUid );
+    
+        /**
+        * Helper which constructs a session if it has been closed due
+        * to an preceding server request of closing the session.
+        */
+        void EnsureSessionExistsL();
+        
+        /**
+        * Checks whether given entry selection contains at least one
+        * MR mailbox.
+        */
+        TBool ContainsMRMailBoxEntryL(
+            const CMsvEntrySelection& aEntries ) const;
+        
+        /**
+        * Resets iMRMailBoxes and re-reads all MR capable mailboxes
+        * in the device.
+        */
+        void FindMRMailBoxesL();      
+        
+        TBool AddToListIfMRMailBoxesL( const CMsvEntrySelection& aEntries );
+        
+        TBool AddToListIfMRMailBoxL( TMsvId aEntryId ); 
+                
+    protected: // Constructors and destructors
+    
+        /**
+        * C++ default constructor.
+        */
+        CMRUtilsMsvHelper( CMsvSession* aSession,
+                           MMsvSessionObserver& aParentObserver );
+
+        /**
+        *  Constructor, second phase.
+        */
+        void ConstructL();  
+        
+    protected: // data
+    
+        MMsvSessionObserver& iParentObserver;
+        
+        // array items owned
+        RPointerArray<CMRMailBoxInfo> iMRMailBoxes;
+             
+        // own
+        CEmailAccounts* iEmailSettings;
+        
+        CClientMtmRegistry* iMtmReg;     
+    
+        // ownership determined by the iOwnSession
+        CMsvSession* iSession;
+        
+        TBool iOwnSession;
+    private:
+   TBuf<KMREmailAddrLength> iEmailAddr;
+    };
+
+#endif // __CMRUTILSMSVHELPER_H__
+
+// End of File