diff -r 000000000000 -r 72b543305e3a messagingappbase/bium/Inc/biou.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/bium/Inc/biou.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,225 @@ +/* +* Copyright (c) 1998 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: biou declaration +* +*/ + + + +#if !defined(__BIOU_H__) +#define __BIOU_H__ + +#include +#include // for TBioProgress::EBiosProcessing +#include // MBifChangeObserver, CBifObserver... +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif +#include + +// forward declarations +class TBioData; +class CTextResolver; +class CMsvOperation; +class CMtmStore; + +////////////////////////////// +// CBioMtmUi - BIO MTM UI // +////////////////////////////// +NONSHARABLE_CLASS(CBioMtmUi) : public CBaseMtmUi, public MBifChangeObserver + { +public: + // --- Construction --- + static CBioMtmUi* NewL(CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll); + // + // --- Destruction --- + virtual ~CBioMtmUi(); + // + // --- Functions NOT dependent on the current context --- + virtual CMsvOperation* CreateL(const TMsvEntry& aEntry, CMsvEntry& aParent, TRequestStatus& aStatus);// Context set to new entry + // + // --- Functions dependent on the current context --- + virtual CMsvOperation* OpenL(TRequestStatus& aStatus); + virtual CMsvOperation* CloseL(TRequestStatus& aStatus); + virtual CMsvOperation* EditL(TRequestStatus& aStatus); + virtual CMsvOperation* ViewL(TRequestStatus& aStatus); + // + // --- Deletion --- + // --- Deletes entries from the current context, which must be a folder or service of the relevant MTM --- + virtual CMsvOperation* DeleteFromL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);//Deletes selection from current context + // --- Deletes service, which need not be the current context --- + virtual CMsvOperation* DeleteServiceL(const TMsvEntry& aService, TRequestStatus& aStatus); // default implementation simply delegates to the server + // + // --- Message responding --- + // --- Default implementation calls CBaseMtm::ReplyL() or ForwardL(), followed by EditL() --- + // --- Takes ownership of the passed entry (which the context is switched to --- + virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus); + virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus); + // + // --- Actions upon message selections --- + // --- Selections must be in same folder and all of the correct MTM type --- + // --- Context may change after calling these functions --- + virtual CMsvOperation* OpenL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection); + virtual CMsvOperation* CloseL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection); + virtual CMsvOperation* EditL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection); + virtual CMsvOperation* ViewL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection); + virtual CMsvOperation* CancelL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection); + // + // --- RTTI functions --- + virtual TInt QueryCapability(TUid aCapability, TInt& aResponse); + virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TRequestStatus& aCompletionStatus, TDes8& aParameter); + virtual void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter); + // + // --- These not relevant to BIO MTM - Leave with KErrNotSupported --- + virtual CMsvOperation* CopyToL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);// Context should be MTM folder/service to copy to + virtual CMsvOperation* MoveToL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);// Context should be MTM folder/service to move to + virtual CMsvOperation* CopyFromL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);// Context should be MTM folder/service to copy from + virtual CMsvOperation* MoveFromL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);// Context should be MTM folder/service to move from + // + // --- Interpret transfer progress + virtual TInt GetProgress(const TDesC8& aProgress, TBuf& aReturnString, TInt& aTotalEntryCount, TInt& aEntriesDone, + TInt& aCurrentEntrySize, TInt& aCurrentBytesTrans) const;// Default implementation returns KErrNotSupported + virtual TInt DisplayProgressSummary(const TDesC8& aProgress) const;// Used for display operation summary (usually completed operations). Default implementation returns KErrNotSupported. + +protected: + // --- specific - Integrity checking --- + virtual void CheckEntryL(const TMsvEntry& aEntry) const; + +protected: + // --- from CBaseMtmUi --- + virtual void GetResourceFileName(TFileName& aFileName) const; + +protected: + CBioMtmUi(CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll); + virtual void ConstructL(); + +protected: // from MBifChangeObserver + virtual void HandleBifChangeL(TBifChangeEvent aEvent, TUid aBioId); + +protected: // new functions + + virtual void ResetAndLoadBioDataL(); + virtual CMsvOperation* LaunchApplicationL(TRequestStatus& aStatus,TBool aReadOnly); + virtual TInt ProgressType(const TDesC8& aProgress) const; + virtual TBool IsLocalProgress(TInt aProgressType) const; + virtual TBool IsEngineProgress(TInt aProgressType) const; + + virtual CMsvOperation* ShowMessageInfoL(TRequestStatus& aCompletionStatus,TDes8& aParameter); + virtual HBufC* ExtractTitleFromGMSBodyL(const CRichText& aBody, TInt aMaxLength); + + /** + * Shows info note with qtn_mce_info_message_not_opened. + * The note displaying is trapped, and the err code ignored. + */ + virtual void ShowInvalidMsgNote() const; + + /** + * Shows system error note. Uses CErrResolver for getting the text. + * The note displaying is trapped, and the err code ignored. + * @param aError The error code. + */ + virtual void ShowSystemErrorNote(TInt aError) const; + + virtual HBufC* CreateFromTextLC(CMsvEntry& aEntry) const; + +protected: + CArrayFixFlat* iBioData; + CBifChangeObserver* iBifObserver; + CTextResolver* iErrorResolver; + }; + + + +///////////////////////////////////////////////////////////////////////////////////// +// Operation encapsulating the parse operation and the launch application operation. +///////////////////////////////////////////////////////////////////////////////////// + +struct TParseAndEditParams + { + TBool iLaunchApp; + TBool iPreferEmbedded; + TFileName iEditorFileName; + TEditorParameters iEditorParams; // Includes message Id. + }; + + +class TBioUiProgress + { +public: + enum TBioUiType + { + EBioMtmUiEditing=TBioProgress::EBiosProcessing+1, + EBioMtmUiParseAndEdit + }; + + TInt iType; + TInt iError; + }; + +// Internal class +NONSHARABLE_CLASS(CParseAndEditOp) : public CMsvOperation + { +public: + // --- Construction/destruction --- + static CParseAndEditOp* NewL(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus, + const TParseAndEditParams& aParams); + virtual ~CParseAndEditOp(); + + // --- Setup and kick off operation --- + void SetParseOpL(CMsvOperation* aParseOp); + + virtual const TDesC8& ProgressL(); + TRequestStatus& RequestStatus(); + +protected: + // --- from CActive ---- + virtual void DoCancel(); + virtual void RunL(); + virtual TInt RunError(TInt aError); + +private: // new functions + + // --- Construction--- + CParseAndEditOp(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus, + const TParseAndEditParams& aParams); + void ConstructL(); + + void DoEditL(); + void CompleteObserver(); + + /** + * Sets the UNREAD and NEW properties of the entry to false. + * @param The ID of the entry to be modified. + */ + void SetEntryReadAndOldL(TMsvId aEntryId); + + /** + * Deletes the parsed attachment from message store + * @param The ID of the entry from which the attachment is to be deleted.. + */ + void DeleteMessageAttachmentL(TMsvId aEntryId); + +private: + // Data + enum TParseAndEditState { EStateIdle, EStateParsing, EStateEditing, EStateComplete }; + TParseAndEditState iState; + TParseAndEditParams iParams; + CMsvOperation* iOperation; + TBioUiProgress iLocalProgress; + TPckgBuf iLocalProgressPckg; + CMtmStore* iMtmStore; + }; + + +#endif // __BIOU_H__ \ No newline at end of file