--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pushmtm/MtmUiInc/PushLoadServiceOp.h Mon Mar 30 12:49:49 2009 +0300
@@ -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.