diff -r 1fc85118c3ae -r 870918037e16 landmarksui/uicontrols/inc/CLmkSender.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/landmarksui/uicontrols/inc/CLmkSender.h Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,226 @@ +/* +* 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 "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: LandmarksUi Content File - This class wraps usage of CLmkEncoder and CSendAppUi + into one simple class. +* +*/ + + + + + + + +#ifndef CLMKSENDER_H +#define CLMKSENDER_H + +// INCLUDES +#include "MLmkAOOperationObserver.h" +#include "LmkConsts.h" +#include +#include +#include +#include "CLmkLandmark.h" + +// FORWARD DECLARATIONS +class CSendUi; +class CLmkEncoder; +class CPosLandmarkDatabase; +class CAknWaitDialog; +class CEikMenuPane; +class RFile; +class CMessageData; +// CLASS DECLARATION + +/** +* This class wraps usage of CLmkEncoder and CSendAppUi into one simple class. +* This class relies on the fact that given database has been initialized. +* It also provides a couple of static helper functions for setting menu. +* +*/ +class CLmkSender : public CBase, public MLmkAOOperationObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aDb + * @return + */ + IMPORT_C static CLmkSender* NewL( CPosLandmarkDatabase& aDb ); + + /** + * Destructor. + */ + virtual ~CLmkSender(); + + public: // New functions + + /** + * Displays "Send as..." option if SendUI allows and if + * there are some visible items in the list. + * Note: this function requires that command ELmkCmdSendDummy exists + * in the menu pane, since it determines the position of "Send as...". + * @param aMenuPane + * @param aVisibleCount number of visible items in the list + * @param aMenuTextResource customized "Send as..." substitute + */ + IMPORT_C void DisplaySendMenuL( + CEikMenuPane& aMenuPane, + TInt aVisibleCount, + TInt aMenuTextResource = KZeroResourceId ) const; + + /** + * Display send's cascade menu + * @param aSendUi + * @param aMenuPane + */ + IMPORT_C void DisplaySendCascadeMenuL( CEikMenuPane& aMenuPane ) const; + + /** + * This method wraps entire encoding and sending procedure. + * It is done asynchronously but client doesn't observe it. + * This class takes care of error handling etc. + * @param aCommandId commmand id which determines the MTM + * @aMarkedIds marked item ids + * @aSelectedId current item, used if there aren't marked items + */ + void CreateAndSendL( TInt aCommandId, + const RArray& aMarkedIds, + TPosLmItemId aSelectedId ); + + /** + * This method wraps entire encoding and sending multiple landmarks. + * It is done asynchronously but client doesn't observe it. + * This class takes care of error handling etc. + * @param aCommandId commmand id which determines the MTM + * @aLandmarks Array of CLmkLandmark,which wrap landmarks + * (CPosLandmark) & the respective categories. + * + */ + void SendLandmarksL( TInt aCommandId, + const TDesC& aPackageName, + const RPointerArray& aLandmarks ); + + /** + * This method wraps entire encoding and sending of single landmark. + * It is done asynchronously but client doesn't observe it. + * This class takes care of error handling etc. + * @param aCommandId commmand id which determines the MTM + * @param alandmark object CLmkLandmark,which wrap landmarks + * (CPosLandmark) & the respective categories. + * + */ + void SendSingleLandmarkL( TInt aCommandId, + const CLmkLandmark& alandmark ); + /** + * This method wraps entire encoding and sending of single landmark. + * This is an overloaded method, which used only for the landmarks, + * which exists in the database. + * It is done asynchronously but client doesn't observe it. + * This class takes care of error handling etc. + * @param alandmark object CPosLandmark,which wrap landmarks + */ + + void SendSingleLandmarkL(const CPosLandmark& alandmark); + /** + * This method can be used to send a specific file. + * It is used when forwarding an existing landmark package. + * Note: if file should be deleted then it must be closed and not + * read-only, otherwise leave occurs with a system wide error code. + * @param aCommandId commmand id which determines the MTM + * @aFile full file name to be sent as an attachment + * @aDeleteSentFile if TBool then aFile is deleted after sending + */ + void SendFileL( TInt aCommandId, + const TDesC& aFile, + TBool aDeleteSentFile ); + + + void SendFileL( TInt aCommandId, + RFile& aFile, + TBool aDeleteSentFile ); + + /** + * This method prepares the CLmkLandmark array, from the landmark id's passed. + * @param[in/out] aLmkLandmark Array of CLmkLanmark + * @param[in] aMarkedIds landmark ids. + */ + void PrepareMultipleLandmarkForSendL(RPointerArray& aLmkLandmark, + const RArray& aMarkedIds); + /** + * This method encapsulates CPosLandmark object in CLmkLandmark object + * @param[in/out] aLmkLandmark object of CLmkLandmark returned + * @param[in] aPosLandmark landmark object. + */ + void LmkLandmarkFromPosLandmarkL(CLmkLandmark*& aLmkLandmark, + const CPosLandmark& aPosLandmark); + + + + public: // From MLmkAOOperationObserver + + void HandleOperationL( TOperationTypes aType, + TReal32 aProgress, + TInt aStatus ); + private://new functions + + void PrepareSendFilePathL(HBufC*& aFilePath); + + private: + + /** + * C++ default constructor. + */ + CLmkSender(CPosLandmarkDatabase& aDb); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( CPosLandmarkDatabase& aDb ); + + + void SendL(TDes& iFile, TInt aCommandId); + + TBool QueryNewPackageNameLC(const TDesC& aCurrentPckgName, HBufC*& aNewPackageName); + + void SendLandmarksPackageL(TInt aCommandId,const TDesC& aPackageName,const RPointerArray& aLandmarks ); + + void SendSingleLandmarkL(TInt aCommandId,const RPointerArray& aLandmarks); + + void LoadFilteredSendListQueryL(const CMessageData* aMessageData); + + TPtr ReplaceSpecialCharactersL(TPtrC aText); + + private: // Data + + // Completion code of last asynchronous operation + TInt iLastOperationResult; + + ///Own: send ui + //CSendAppUi* iSendUi; + CSendUi* iSendUi; + ///Own: landmark package encoder + CLmkEncoder* iEncoder; + + ///Own: wait note + CAknWaitDialog* iWaitNote; + + //Added for Bug fix + CPosLandmarkDatabase& iDb; + }; + +#endif // CLMKSENDER_H + +// End of File \ No newline at end of file