diff -r 6385c4c93049 -r 8e6fa1719340 pushmtm/MtmUiInc/PushMtmUi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pushmtm/MtmUiInc/PushMtmUi.h Wed Sep 01 12:31:04 2010 +0100 @@ -0,0 +1,369 @@ +/* +* 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: Ui Mtm class declaration +* +*/ + + + +#ifndef PUSHMTMUI_H +#define PUSHMTMUI_H + +// INCLUDE FILES + +#include + +// CLASS DECLARATION + +/** +* UI MTM for pushed messages. +*/ +class CPushMtmUi: public CBaseMtmUi + { + public: // Constructors and destructor + + /** + * Two-phased constructor (exported factory function). + * Leaves on failure. + * @param aBaseMtm The client MTM. + * @param aRegisteredMtmDll Registration data for the MTM DLL. + * @return The constructed UI. + */ + IMPORT_C static CPushMtmUi* NewL + ( CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll ); + + /** + * Destructor. + */ + virtual ~CPushMtmUi(); + + private: // Constructors + + /** + * Constructor. + * @param aBaseMtm The client MTM. + * @param aRegisteredMtmDll Registration data for the MTM DLL. + * @return The constructed UI. + */ + CPushMtmUi( CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll ); + + private: // New functions + + /** + * Utility to set a TMsvLocalOperationProgress completed. + * @param aProgress Progress package buffer to set. + * @param aId Id to set in the buffer. + */ + void SetProgressSuccess + ( TPckgBuf& aProgress, TMsvId aId ); + + /** + * Create a CMsvCompletedOperation object. + * @param aObserverStatus Observer's status. + * @return The operation object. + */ + CMsvOperation* CompletedOperationL( TRequestStatus& aObserverStatus ); + + /** + * Ensure that a service entry exists with which the settings can be + * reached from a messaging application. It creates a service entry + * if necessary. + * @return None. + */ + void EnsureServiceEntryL() const; + + private: // Functions from base classes + + /** + * Unsupported, leaves with KErrNotSupported. + * @param aEntry (Unused) The data to be copied into the new entry. + * @param aParent (Unused) The parent of the new entry. + * @param aStatus (Unused) Completion status. + * @return (NULL) The operation object. + */ + CMsvOperation* CreateL( + const TMsvEntry& aEntry, + CMsvEntry& aParent, + TRequestStatus& aStatus ); + + // -------------------------------------------------- + // --- Functions dependent on the current context --- + // -------------------------------------------------- + + /** + * Open the current context. If it is a KUidMsvMessageEntry then it is + * equivalent to ViewL. If it is a KUidMsvServiceEntry then it is + * equivalent to EditL. Otherwise it leaves with KErrNotSupported. + * @param aStatus Completion status. + * @return The operation object. + */ + CMsvOperation* OpenL( TRequestStatus& aStatus ); + + /** + * Close the current context. It does nothing just returns a completed + * operation. + * @param aStatus Completion status. + * @return The operation object. + */ + CMsvOperation* CloseL( TRequestStatus& aStatus ); + + /** + * Edit the current context. For KUidMsvServiceEntry it executes the + * "Service Settings" dialog. It returns a completed operation. For + * other entry types it leaves with KErrNotSupported. + * @param aStatus Completion status. + * @return The operation object. + */ + CMsvOperation* EditL( TRequestStatus& aStatus ); + + /** + * View the current context. Only for KUidMsvMessageEntry. It launches the + * Push Viewer application embedded for SI and it lauches the viewer + * application embedded for SP. For other entry types it leaves + * with KErrNotSupported. + * @param aStatus Completion status. + * @return The operation object. + */ + CMsvOperation* ViewL( TRequestStatus& aStatus ); + + // -------------------------------------------------- + // -- Functions independent on the current context -- + // -------------------------------------------------- + + // --- Actions upon message selections --- + // Selections must be in same folder and all of the correct MTM type. + // Context may change after calling these functions. + + /** + * This function is supported only for one selected entry. If the selection + * contains more than one entry then it leaves with KErrNotSupported. + * @param aStatus Completion status. + * @param aSelection Entry selection to operate on. + * @return The operation object. + */ + CMsvOperation* OpenL + ( TRequestStatus& aStatus, const CMsvEntrySelection& aSelection ); + + /** + * This function is supported only for one selected entry. If the selection + * contains more than one entry then it leaves with KErrNotSupported. + * Close the first entry from the selection. It does nothing however. + * @param aStatus Completion status. + * @param aSelection Entry selection to operate on. + * @return The operation object. + */ + CMsvOperation* CloseL + ( TRequestStatus& aStatus, const CMsvEntrySelection& aSelection ); + + /** + * This function is supported only for one selected entry. If the selection + * contains more than one entry then it leaves with KErrNotSupported. + * Edit the first selected entry. + * @param aStatus Completion status. + * @param aSelection Entry selection to operate on. + * @return The operation object. + */ + CMsvOperation* EditL + ( TRequestStatus& aStatus, const CMsvEntrySelection& aSelection ); + + /** + * This function is supported only for one selected entry. If the selection + * contains more than one entry then it leaves with KErrNotSupported. + * View the first entry from the selection. + * @param aStatus Completion status. + * @param aSelection Entry selection to operate on. + * @return The operation object. + */ + CMsvOperation* ViewL + ( TRequestStatus& aStatus, const CMsvEntrySelection& aSelection ); + + /** + * It does nothing just leaves with KErrNotSupported. + * @param aStatus Completion status. + * @param aSelection Entry selection to operate on. + * @return The operation object. + */ + CMsvOperation* CancelL + ( TRequestStatus& aStatus, const CMsvEntrySelection& aSelection ); + + // --- Deletion --- + + /** + * It does nothing just leaves with KErrNotSupported. + * @param aSelection Entry selection to operate on. + * @param aStatus Completion status. + * @return The operation object. + */ + CMsvOperation* DeleteFromL + ( const CMsvEntrySelection& aSelection, TRequestStatus& aStatus ); + + /** + * It does nothing just leaves with KErrNotSupported. + * @param aSelection (Unused) Entry selection to operate on. They must + * be children of the current context. + * @param aStatus (Unused) Completion status. + * @return (NULL) The operation object. + */ + CMsvOperation* UnDeleteFromL + ( const CMsvEntrySelection& aSelection, TRequestStatus& aStatus ); + + /* * + * It does nothing just leaves with KErrNotSupported. + * @param (Unused) aService Service to delete. + * @param (Unused) aStatus Completion status. + * @return (NULL) The operation object. + */ + CMsvOperation* DeleteServiceL + ( const TMsvEntry& aService, TRequestStatus& aStatus ); + + // --- Message responding --- + + /** + * It does nothing just leaves with KErrNotSupported. + * @param aDestination (Unused) The entry to which to assign the reply. + * @param aPartList (Unused) Parts to be contained in the reply. + * @param aStatus (Unused) Completion status. + * @return (NULL) The operation object. + */ + CMsvOperation* ReplyL( + TMsvId aDestination, + TMsvPartList aPartlist, + TRequestStatus& aCompletionStatus ); + + /** + * It does nothing just leaves with KErrNotSupported. + * @param aDestination (Unused) The entry to which to assign the + * forwarded message. + * @param aPartList (Unused) Parts to be contained in the forwarded + * message. + * @param aStatus (Unused) Completion status. + * @return (NULL) The operation object. + */ + CMsvOperation* ForwardL( + TMsvId aDestination, + TMsvPartList aPartList, + TRequestStatus& aCompletionStatus ); + + // --- Copy and move functions --- + // Context should be set to folder or entry of this MTM. + + /** + * It does nothing just leaves with KErrNotSupported. + * @param aSelection (Unused) Entry selection to operate on. They all + * must have the same parent. + * @param aStatus (Unused) Completion status. + * @return (NULL) The operation object. + */ + CMsvOperation* CopyToL + ( const CMsvEntrySelection& aSelection, TRequestStatus& aStatus ); + + /* * + * It does nothing just leaves with KErrNotSupported. + * @param aSelection (Unused) Entry selection to operate on. They all + * must have the same parent. + * @param aStatus (Unused) Completion status. + * @return (NULL) The operation object. + */ + CMsvOperation* MoveToL + ( const CMsvEntrySelection& aSelection, TRequestStatus& aStatus ); + + /** + * It does nothing just leaves with KErrNotSupported. + * @param aSelection (Unused) Entry selection to operate on. They all + * must have the same parent. + * @param aTargetId (Unused) The ID of the entry to own the copies. + * @param aStatus (Unused) Completion status. + * @return (NULL) The operation object. + */ + CMsvOperation* CopyFromL( + const CMsvEntrySelection& aSelection, + TMsvId aTargetId, + TRequestStatus& aStatus ); + + /** + * It does nothing just leaves with KErrNotSupported. + * @param aSelection Entry selection to operate on. They all + * must have the same parent. + * @param aTargetId The ID of the entry to move to. + * @param aStatus Completion status. + * @return The operation object. + */ + + CMsvOperation* MoveFromL( + const CMsvEntrySelection& aSelection, + TMsvId aTargetId, + TRequestStatus& aStatus ); + + /** + * Query if the MTM supports a particular (standard) capability. + * This feunction is also called by CPushMtmClient::QueryCapability. + * @param aCapability UID of capability to be queried. + * @param aResponse Response value. + * @return + * - KErrNone: aCapability is a recognized value + * and a response is returned. + * - KErrNotSupported: aCapability is not a recognized value. + */ + TInt QueryCapability( TUid aCapability, TInt& aResponse ); + + /** + * Invoke synchronous operation. + * Only KMtmUiMessagingInitialisation and + * KMtmUiFunctionRestoreFactorySettings are supported. + * It will leave with KErrNotSupported otherwise. + * @param aFunctionId ID of the requested operation. + * @param aSelection Selection of message entries to operate on. + * @param aParameter Buffer containing input and output parameters. + * @return None. + * @throw KErrNotSupported The selected function is not supported. + */ + void InvokeSyncFunctionL( + TInt aFunctionId, + const CMsvEntrySelection& aSelection, + TDes8& aParameter ); + + /** + * Invoke asynchronous operation. + * Supported operations: + * - KMtmUiFunctionMessageInfo Launch message info dialog. + * - EPushMtmCmdLoadService Handle the URL in SI (or SL). + * - EPushMtmCmdViewService Render the content of the SP. + * - otherwise it calls CBaseMtmUi::InvokeAsyncFunctionL + * @param aFunctionId ID of the requested operation. + * @param aSelection Selection of message entries to operate on. + * @param aCompletionStatus Completion status. + * @param aParameter Buffer containing input and output parameters. + * @return + * - If successful, an asynchronously completing operation. + * - If failed, a completed operation, with status set to the + * relevant error code. + * @throw KErrNotSupported The selected function is not supported. + */ + CMsvOperation* InvokeAsyncFunctionL( + TInt aFunctionId, + const CMsvEntrySelection& aSelection, + TRequestStatus& aCompletionStatus, + TDes8& aParameter ); + + /** + * Get the resource file name for this MTM UI. + */ + void GetResourceFileName( TFileName& aFileName ) const; + private: + TInt iPushSLEnabled; + }; + +#endif // PUSHMTMUI_H + +// End of File