--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/postcard/postcardinc/PostcardOperationOpen.h Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,310 @@
+/*
+* Copyright (c) 2005 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:
+* CPostcardOperationOpen, asynchronous operation for postcard opening
+*
+*/
+
+
+
+
+#ifndef __POSTCARDOPERATIONOPEN_H
+#define __POSTCARDOPERATIONOPEN_H
+
+// INCLUDES
+
+#include <e32base.h>
+#include <e32std.h>
+
+#include <uniimageprocessor.h>
+
+#include <MIHLViewerObserver.h>
+
+#include "PostcardOperation.h"
+#include "PostcardContact.h"
+
+// CONSTANTS
+
+// MACROS
+
+// FORWARD DECLARATIONS
+class MIHLFileImage;
+class MIHLBitmap;
+class MIHLImageViewer;
+class CContactCard;
+class CFbsBitmap;
+class CMsgMediaInfo;
+class CMsvAttachment;
+class CPlainText;
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// CLASS DECLARATION
+
+/**
+* CPostcardOperationOpen
+*
+* @lib postcardeditor.exe
+* @since 3.0
+*/
+class CPostcardOperationOpen : public CPostcardOperation,
+ public MUniImageProcessorCallback,
+ public MIHLViewerObserver
+
+ {
+ public: // New methods
+
+ /**
+ * Factory method that creates this object.
+ * @since 3.0
+ * @return Pointer to instance
+ */
+ static CPostcardOperationOpen* NewL(
+ MPostcardOperationObserver& aObserver,
+ CPostcardDocument& aDocument,
+ CPostcardAppUi& aAppUi,
+ RFs& aFs );
+
+ /**
+ * Destructor
+ */
+ virtual ~CPostcardOperationOpen( );
+
+ /**
+ * Just initializes the iLaunchStep and completes
+ */
+ void Start( TInt aArgument );
+
+ private: // Constants
+
+ enum TPostcardOpenState
+ {
+ EPostcardOpenInitializing = 0,
+ EPostcardOpenCheckAttas,
+ EPostcardOpenHandleImage,
+ EPostcardOpenProcessImage,
+ EPostcardOpenUpdateSendasImageFile,
+ EPostcardOpenScaleImage,
+ EPostcardOpenHandleText,
+ EPostcardOpenHandleRecipient,
+ EPostcardOpenFinished,
+ EPostcardOpenError
+ };
+
+ enum TPostcardOpenFlags
+ {
+ EPostcardOpenRequestActive = 1,
+ EPostcardOpenConvertingPNG = 2
+ };
+
+ private: // Methods
+
+ /**
+ * Called by RunL.
+ * Calls different functions according to iLaunchStep
+ */
+ void DoLaunchStepL( );
+
+ /**
+ * If image is present and postcard type is sendui
+ * -> creates a media info object and checks the validity
+ * If image needs compressing -> starts to create a new attachment
+ * Otherwise starts scaling the image to bitmaps
+ */
+ void DoHandleImageL( );
+
+ /**
+ * This functions starts the image process
+ */
+ void DoStartProcessImageL( );
+
+ /**
+ * In case of image, adds CMsvHeaders to the attachment
+ */
+ void DoUpdateSendasAttachmentL( const TDataType& aMimeType );
+
+ /*
+ * Parse address and greeting out of special format text
+ */
+ void ParseSpecialFormatTextL( CPlainText& aText, CContactCard& aCard, CPlainText& aGreeting );
+
+ /**
+ * Reads the possible text from the message store.
+ * Check if this is special phonebook created text where the contact id is stored
+ * If it is, DoHandlePhonebookSendAsL is called.
+ * Otherwise if this is SendUi originated file, just passes the text into AppUi object.
+ * If opened for example from Drafts or Sent folder check if special text format is used
+ * If it is, DoHandleSpecialFormatOpenL is called.
+ * Otherwise just passes the text to AppUi object.
+ */
+ void DoHandleTextL( );
+
+ /**
+ * Reads the VCard from the message store. If this is forward, it deletes the VCard.
+ * Otherwise creates new CContactCard from the store and passes it to AppUi object.
+ */
+ void DoHandleRecipientL( );
+
+ /**
+ * Parses recipient information from the store and adds to contact card
+ */
+ void ParseRecipientL( CContactCard& aContactCard );
+
+ /**
+ * Creates a CContactCard from a contact. CPostcardRecipientWrapper is
+ * used to decide which address location should be used. If there is
+ * more than one location available CPostcardRecipientWrapper shows
+ * a dialog to user. New CContactCard is passed to AppUi object.
+ * @param aContact Contact to create a contact card from
+ */
+ void DoHandlePhonebookSendAsL( CPostcardContact& aContact );
+
+ /**
+ * Updates contact card with name and address information from the contact.
+ * @param aCard Contact card to update
+ * @param aContact Contact to get information from
+ * @param aLocation Address location to update contact card with
+ */
+ void UpdateContactCardL( CContactCard& aCard,
+ CPostcardContact& aContact, CPostcardContact::TLocation aLocation );
+
+ /**
+ * Add text field to a contact card
+ * @param aCard Contact card to update
+ * @param aText Field text
+ * @param aFieldSelect Field to update
+ */
+ static void AddContactCardFieldL( CContactCard& aCard,
+ const TPtrC& aText, TInt aFieldSelect );
+
+ /**
+ * Text is read from the message store. Special format syntax is read from the ini resource file.
+ * The text is checked field by field and new text and CContactCard objects are created out of it.
+ * The new objects are passes to AppUi object.
+ * When this function is called, DoHandleRecipientL is not used at all as the recipient
+ * information was externalized from the greeting text.
+ */
+ void DoHandleSpecialFormatOpenL( CPlainText& aText );
+
+ /**
+ * Move operation to a new state
+ */
+ void ToState( TPostcardOpenState aState );
+
+ /**
+ * Move operation to error state
+ */
+ void ToErrorState( TInt aResourceId );
+
+ /**
+ * Leaving version of ScalingReady()
+ */
+ void ScalingReadyL();
+
+ /**
+ * From CActive
+ */
+ void DoCancel( );
+
+ /**
+ * From CActive
+ * Calls DoLaunchStepL
+ */
+ void RunL( );
+
+ public: // From ImageProcessor
+
+ /*
+ * If process was not succesfull -> sets error and completes with it,
+ * Otherwise calls DoProcessImageFinishedL to start scaling to screen
+ */
+ void ImageProcessingReady( TSize aBitmapSize, TInt aFileSize, TBool aCompressed );
+
+
+ private: // called by the two functions above
+
+ /**
+ * Removes the original RFile because either compressor or converter created a new one.
+ * Creates ImageHandler and starts scaling the new image to screen (to bitmap)
+ *
+ * Creates ImageHandler and starts scaling the image to bitmap to be displayed on the screen
+ */
+ void StartScalingToScreenL( );
+
+
+ protected: // From MIHLViewerObserver
+
+ /**
+ * From MIHLViewerObserver Notifies client when image handler content has changed.
+ * Leave situation is handled in ViewerError() callback.
+ *
+ * Creates a duplicate of iDestinationBitmap, creates a CGulIcon of it and
+ * passes it to AppUi class
+ * @return void
+ */
+ void ViewerBitmapChangedL();
+
+ /**
+ * From MIHLViewerObserver Notifies client if error occurs in viewer.
+ *
+ * @param aError IN System wide error code.
+ *
+ * @return void
+ */
+ void ViewerError( TInt aError );
+
+ protected:
+
+ /**
+ * From CActive
+ */
+ TInt RunError( TInt aError );
+
+ /**
+ * Constructor.
+ */
+ CPostcardOperationOpen(
+ MPostcardOperationObserver& aObserver,
+ CPostcardDocument& aDocument,
+ CPostcardAppUi& aAppUi,
+ RFs& aFs );
+
+ /**
+ * 2nd phase constructor.
+ */
+ void ConstructL( );
+
+ protected: // data
+
+ CMsgMediaInfo* iImageInfo;
+ CUniImageProcessor* iImageProcessor; // Image processor
+
+ const TDesC& iSpecialFormat;
+ const TDesC& iSeparatorChar;
+
+ RFile* iEditFile;
+ CMsvAttachment* iEditAtta;
+ CFbsBitmap* iBitmap;
+ CFbsBitmap* iBitmapMask;
+
+ MIHLFileImage* iSourceImage; // source image for scaling to bitmap
+ MIHLBitmap* iDestinationBitmap; // scaled MIHL bitmap
+ MIHLImageViewer* iImageHandler; // image handler for scaling
+
+ TInt iFlags;
+ };
+
+#endif // __PostcardOperationOpen_H