--- /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 <e32base.h>
+#include <MMGFetchVerifier.h>
+#include <apgcli.h> // RApaLsSession
+#include <aknserverapp.h> // MAknServerAppExitObserver
+#include <NewFileService.hrh> // 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