pushmtm/MtmUiInc/PushLoadServiceOp.h
branchRCL_3
changeset 65 8e6fa1719340
parent 0 84ad3b177aa3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pushmtm/MtmUiInc/PushLoadServiceOp.h	Wed Sep 01 12:31:04 2010 +0100
@@ -0,0 +1,165 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  Declaration of CPushLoadServiceOp.
+*
+*/
+
+
+
+#ifndef PUSHLOADSERVICEOP_H
+#define PUSHLOADSERVICEOP_H
+
+// INCLUDE FILES
+
+//#include "PushMtmOperation.h"
+#include "PushMtmUiOperation.h"
+#include <e32base.h>
+#include <e32std.h>
+#include <apparc.h>
+#include <AknServerApp.h>
+// FORWARD DECLARATIONS
+
+class CSchemeHandler;
+class CPushMsgEntryBase;
+class CPushMtmSettings;
+
+// CLASS DECLARATION
+
+/**
+* This asynchronous operation is responsible for downloading service that is 
+* indicated by the URL field of the pushed service message. It means that it 
+* is applicable only for SI and SL pushed messages.
+* The operation uses the Scheme Handler to launch the appropriate handler 
+* application for the given URL.
+*/
+class CPushLoadServiceOp : public CPushMtmUiOperation, 
+                           public MAknServerAppExitObserver
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Two-phased constructor. Leaves on failure.
+        * @param aSession Message Server Session to be used by this operation.
+        * @param aEntryId Id of entry to operate on.
+        * @param aObserverStatus Observer's status.
+        * @return The constructed object.
+        */
+        static CPushLoadServiceOp* NewL( CMsvSession& aSession, 
+                                         TMsvId aEntryId, 
+                                         TRequestStatus& aObserverStatus );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CPushLoadServiceOp();
+
+    public: // Functions from CPushMtmOperation
+
+        /**
+        * Start or restart the operation. The expiration state of the entry 
+        * is checked (of course only in case of SI) and if it is expired, 
+        * then the entry is deleted and the operation is cancelled.
+        * @return None.
+        */
+        void StartL();
+
+    protected: // Constructors
+
+        /**
+        * Constructor.
+        * @param aSession Message Server Session to be used by this operation.
+        * @param aEntryId Id of entry to operate on.
+        * @param aObserverStatus Observer's status.
+        */
+        CPushLoadServiceOp( CMsvSession& aSession, 
+                            TMsvId aEntryId, 
+                            TRequestStatus& aObserverStatus );
+
+        /**
+        * Symbian OS constructor.
+        */
+        void ConstructL();
+
+    protected: // New functions
+
+        /**
+        * Check the expiration state of the context. It is SI specific. 
+        * In case of other push messages it returns EFalse.
+        * @return ETrue or EFalse.
+        */
+        TBool IsExpiredL( const TMsvEntry& aTEntry ) const;
+
+        /**
+        * Retrieve the context and get the URL from the context.
+        * @param aUrl The URL filled from the context.
+        * @return The context entry.
+        */
+	    CPushMsgEntryBase* RetrieveContextAndGetUrlLC( TPtrC& aUrl ) const;
+
+        /**
+        * Authenticate the message and display user query if necessary.
+        * @param aPushMsg The push message to be authenticated.
+        * @param aMtmSettings The push settings.
+        * @return ETrue if the message is authenticated.
+        */
+        TBool AuthenticateL( const CPushMsgEntryBase& aPushMsg, 
+                             const CPushMtmSettings& aMtmSettings ) const;
+
+        /**
+        * Execute a query which asks the user if (s)he wants to download 
+        * the service anyway.
+        * @param aResId Resource to be used.
+        * @return ETrue, if the user wants to download it.
+        */
+        TBool ExecuteUserQueryL( TInt aResId ) const;
+
+        /**
+        * If no scheme exists in the URL, then "http://" is insetred.
+        * @param aUrl The original URL.
+        * @return The validated URL.
+        */
+        HBufC* ValidateLC( TDesC& aUrl ) const;
+
+    protected: // Functions from base classes
+
+        /**
+        * If the operation was not cancelled in StartL, then it extracts 
+        * the URL from the message and launches the Document Handler to 
+        * execute the proper handler for the scheme.
+        * @return None.
+        */
+        void RunL();
+
+        /**
+        * Cancel protocol implementation.
+        */
+        void DoCancel();
+
+        /**
+        * It calls CPushMtmOperation::RunError( aError ).
+        */
+        TInt RunError( TInt aError );
+
+        void HandleServerAppExit(TInt aReason);
+
+    private:
+
+        TMsvEntry iTEntry; ///< Current context.
+        TBool iDone; ///< Indicates that the operation is ready.
+        CSchemeHandler* iSchemeHandler; ///< Handles the URL. Owned.
+    };
+
+#endif // PUSHLOADSERVICEOP_H
+
+// End of file.