wvuing/wvuiave/AppSrc/CCAUiMessageUtils.h
changeset 0 094583676ce7
--- /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