diff -r 000000000000 -r 094583676ce7 wvuing/wvuiave/AppSrc/CCAUiMessageUtils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/wvuiave/AppSrc/CCAUiMessageUtils.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,296 @@ +/* +* Copyright (c) 2006 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: UI utils for message handling +* +*/ + + + +#ifndef CCAUIMESSAGEUTILS_H +#define CCAUIMESSAGEUTILS_H + +// INCLUDES +#include +#include +#include // RApaLsSession +#include // MAknServerAppExitObserver +#include // TNewServiceFileType + + +// FORWARD DECLARATIONS +class MCAConversationMessage; +class CDocumentHandler; +class CImageDecoder; +class MCAConversationPC; +class MCABlockChecker; +class MCAGroupPC; + + +// CLASS DECLARATION + +/** +* UI utils for message handling +* +* @lib chat.exe +* @since Series 60 3.2 +*/ +class CCAUiMessageUtils : public CActive, + public MMGFetchVerifier, + public MAknServerAppExitObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CCAUiMessageUtils* NewLC( MCABlockChecker* aBlockChecker = NULL ); + + /** + * Destructor. + */ + virtual ~CCAUiMessageUtils(); + + public: // New functions + + /** + * Send new file + */ + void SendNewFileL( TNewServiceFileType aFileType, + MCAConversationPC& aMessageRWInterfacePC, + const TDesC& aSender = KNullDesC, + const MDesCArray* aScreenNames = NULL, + TBool aIsWhisperAllowed = ETrue ); + + /** + * Send image + */ + void SendImageL( + MCAConversationPC& aMessageRWInterfacePC, + const TDesC& aSender = KNullDesC, + const MDesCArray* aScreenNames = NULL, + TBool aIsWhisperAllowed = ETrue ); + + /** + * Send files + */ + void SendFileL( const MDesCArray& aFileNames, + MCAConversationPC& aMessageRWInterfacePC, + const TDesC& aSender = KNullDesC, + const MDesCArray* aScreenNames = NULL ); + + /** + * Send new file + */ + void SendNewFileL( TNewServiceFileType aFileType, + MCAGroupPC& aMessageRWInterfacePC, + const TDesC& aSender = KNullDesC, + const MDesCArray* aScreenNames = NULL, + TBool aIsWhisperAllowed = ETrue ); + + /** + * Send image + */ + void SendImageL( + MCAGroupPC& aMessageRWInterfacePC, + const TDesC& aSender = KNullDesC, + const MDesCArray* aScreenNames = NULL, + TBool aIsWhisperAllowed = ETrue ); + + /** + * Send files + */ + void SendFileL( const MDesCArray& aFileNames, + MCAGroupPC& aMessageRWInterfacePC, + const TDesC& aSender = KNullDesC, + const MDesCArray* aScreenNames = NULL ); + + + /** + * Open object + * @param aMessage Reference message with Image content + */ + void OpenObjectL( MCAConversationMessage& aMsg ); + + /** + * Save object + * @param aMessage Reference message with Image content + * @return KErrNone if success. KUserCancel if the user + * cancelled the operation. + */ + TInt SaveObjectL( MCAConversationMessage& aMsg ); + + /** + * Forwards a content message to recipient(s) + * @param aMessage Reference message from which the content is + * taken and forwarded + * @param aRecipient Recipient for the forwarded message + * @param aScreenNames Names of the recipients (if whispering is + * allowed) + * @param aMsgCreator Message creator + * @param aWriteInterface Interface to which the forwarded message is + * to be written. + * @param aIsWhisperingAllowed ETrue if whispering is allowed. + * @param aSender Sender of the message + * @return ETrue if message was handled, EFalse otherwise. + */ + TBool ForwardContentMessageL( + const MCAConversationMessage& aMessage, + const TDesC& aRecipient, + const MDesCArray* aScreenNames, + MCAConversationPC& aMessageRWInterfacePC, + TBool aIsWhisperingAllowed, + const TDesC& aSender = KNullDesC ); + /** + * Forwards a content message to recipient(s) + * @param aMessage Reference message from which the content is + * taken and forwarded + * @param aRecipient Recipient for the forwarded message + * @param aScreenNames Names of the recipients (if whispering is + * allowed) + * @param aMsgCreator Message creator + * @param aWriteInterface Interface to which the forwarded message is + * to be written. + * @param aIsWhisperingAllowed ETrue if whispering is allowed. + * @param aSender Sender of the message + * @return ETrue if message was handled, EFalse otherwise. + */ + TBool ForwardContentMessageL( + const MCAConversationMessage& aMessage, + const TDesC& aRecipient, + const MDesCArray* aScreenNames, + MCAGroupPC& aMessageRWInterfacePC, + TBool aIsWhisperingAllowed, + const TDesC& aSender = KNullDesC ); + + protected: // Functions from base classes + + /** + * @see MAknServerAppExitObserver + * @since 3.2 + */ + void HandleServerAppExit( TInt aReason ); + + /** + * @see MMGFetcVerifier + */ + TBool VerifySelectionL( const MDesCArray* aSelectedFiles ); + + protected: // From CActive + + /** + * @see CActive + */ + void RunL(); + + /** + * @see CActive + */ + void DoCancel(); + + /** + * @see CActive. + */ + TInt RunError( TInt aError ); + + private: + + /** + * C++ default constructor. + */ + CCAUiMessageUtils( MCABlockChecker* aBlockChecker ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Select recipients as image or file recipients. + * @param aScreenNames The screen names within the group + * @return ETrue if accepted, EFalse if cancelled + * @since 3.2 + */ + TBool SelectRecipientsL( const MDesCArray* aScreenNames, + TBool aIsWhisperAllowed = ETrue ); + + + + /** + * Does the actual file sending. The recipients, + * if any, should already be in the iSelectedNames. + * @see SendFileL + * @since 3.2 + */ + void DoSendFileL( + const MDesCArray& aFileNames, + MCAConversationPC& aMsgRWInterface, + const TDesC& aSender = KNullDesC ); + /** + * Does the actual file sending. The recipients, + * if any, should already be in the iSelectedNames. + * @see SendFileL + * @since 3.2 + */ + void DoSendFileL( + const MDesCArray& aFileNames, + MCAGroupPC& aMsgRWInterface, + const TDesC& aSender = KNullDesC ); + + /** + * Retrieves the optimal decode size (as small as possible) + * for validating the image + */ + TSize DecodeSize( const TSize& aSize ); + + /** + * set Navigation Pane to be dimmed. + */ + void SetNavigationPaneDimmed( TBool aDimmed ); + + /** + * check image file type before it will be sent. + */ + TBool CheckFileL( const MDesCArray& aFileNames, TDataType& aDataType, TPtrC8& aMimeType, TBool& aSendOption ); + + private: // Data + + // Exit reason for server apps + TInt iServerAppExitReason; + + // Activescheduler wait + CActiveSchedulerWait iWait; + + // apa session + RApaLsSession iApaSession; + + // owns, document handler + CDocumentHandler* iDocHandler; + + // owns, selected screen names + CDesCArray* iSelectedNames; + + // owns + CImageDecoder* iDecoder; + + // Not owned - used to check if current recipient is blocked. + MCABlockChecker* iBlockChecker; + + // the flat to indicate that VerifySelectionL() should be run or not. + TBool iBeginVerifySelection; + + }; + +#endif // CCAUIMESSAGEUTILS_H + +// End of File