mobilemessaging/postcard/postcardinc/PostcardDocument.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/postcard/postcardinc/PostcardDocument.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,260 @@
+/*
+* 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:  
+*       CPostcardDocument, document class for Postcard application.
+*
+*/
+
+
+
+
+#ifndef __POSTCARDDOCUMENT_H
+#define __POSTCARDDOCUMENT_H
+
+//  INCLUDES
+#include <msvapi.h>                     // CMsvEntry
+#include <MsgEditorDocument.h>          // CMsgEditorDocument
+
+// CONSTANTS
+
+// This tell how much of the max MMS size is reserved for greeting and recipient
+const TInt KPostcardAddressGreetingOverhead = 2000;
+// What's the max. size the greeting text can store itself internally
+// (the max. size of sent text is read from central repository)
+const TInt KPostcardDefaultGreetingSegment = 512; 
+
+// MACROS
+
+// DATA TYPES
+
+enum TPostcardMsgType // Type of the postcard 
+    {
+    EPostcardNew = 0,
+    EPostcardDraft,
+    EPostcardForward,
+    EPostcardEdit,
+    EPostcardSendAs,
+    EPostcardSent
+    };
+
+enum TPostcardPart // Enumerations for different parts of the postcard
+    {
+    EPostcardImage = 1,
+    EPostcardText = 2,
+    EPostcardRecipient = 4,
+    EPostcardNone = 8   // Prevents unnecessary icons to be drawn at startup.
+    };
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+class CMmsClientMtm;
+class CBaseMtmUi;
+class CMsgMediaResolver;
+class CMsgTextUtils;
+
+// CLASS DECLARATION
+
+class CPostcardDocument :public CMsgEditorDocument
+    {
+    public:  // Constructors and destructor
+
+    /**
+    * Destructor.
+    */
+    ~CPostcardDocument();
+
+    /**
+    * C++ constructor
+    *
+    * @param aApp   Reference to application instance
+    */
+    CPostcardDocument( CEikApplication& aApp );
+
+    /**
+    * Factory function to create this object
+    *
+    * @param aApp   Reference to application instance
+    */
+    static CPostcardDocument* NewL( CEikApplication& aApp );
+
+    public: // New functions
+
+    /**
+    * InitializeL
+    * Creates MediaResolver and MmsData
+    */ 
+    void InitializeL( RFs& aFs );
+
+    public: // Virtuals from CMsgEditorDocument
+
+    /**
+    * DefaultMsgFolder
+    * Returns default folder for new messages.
+    * @return ID of the Drafts folder.
+    */
+    TMsvId DefaultMsgFolder() const;
+
+    /**
+    * DefaultMsgService
+    * From CMsgEditorDocument
+    * Returns default message service used by application
+    * @return TMsvId KMsvLocalServiceIndexEntryId.
+    */
+    TMsvId DefaultMsgService() const;
+
+    /**
+    * CreateNewL
+    * From CMsgEditorDocument
+    * Creates new message.
+    * A new message of type Postcard is created
+    * in a destination folder.
+    * Calls CreateNewL(TMsvId aServiceType, TMsvId aDestination,
+    *                  TInt aTypeList).
+    * @param aService service used for message
+    * @param aDestFolder folder in which message will be saved eg.
+    *                    KMsvDraftEntryIdValue
+    * @return ID of mail operation.
+    */
+    TMsvId CreateNewL(TMsvId aService, TMsvId aDestFolder);
+
+    /**
+    * EntryChangedL
+    * From CMsgEditorDocument
+    * Called after entry is changed by BaseEditor SetEntry Function.
+    * From MsgEditorDocument
+    */
+    void EntryChangedL();
+
+    public: // From CMsgEditorDocument
+
+    /*
+    * Mtm
+    * Accessor (Overrides baseeditor)
+    * Returns CMmsClientMtm reference correctly casted from CBaseMtm
+    * @param  None
+    * @return Reference to documents CMmsClientMtm
+    */
+    CMmsClientMtm& Mtm();
+
+    /*
+    * MtmUi
+    * Accessor (Overrides baseeditor)
+    * Returns CMmsMtmUi reference correctly casted from CBaseMtmUi
+    * @param  None
+    * @return Reference to documents CMmsMtmUi
+    */
+    CBaseMtmUi& MtmUi();
+
+    public:
+
+    /**
+    * Get pointer to MediaResolver
+    * @return Pointer to MediaResolver
+    */
+    inline CMsgMediaResolver* MediaResolver( ) { return iMediaResolver; };
+
+    /**
+    * Get pointer to MmsData
+    * @return Pointer to MmsData
+    */
+	inline CMsgTextUtils* TextUtils( ) { return iTextUtils; };
+			
+    /**
+    * Messagetype accessor
+    *
+    * @return Message type
+    */
+    inline TPostcardMsgType MessageType() const { return iMsgType; };
+
+    public: // new ones:
+
+    /**
+    * Sets aPart as changed
+    */
+    void SetChanged( TPostcardPart aPart );
+
+    /**
+    * Checks if aPart is changed
+    */
+    TBool Changed( TPostcardPart aPart ) const;
+
+    /**
+    * ETrue if any part of the postcard has been changed
+    */
+    TBool Modified( ) const;
+
+    /**
+    * Set whether message is SendAs, Forward, Reply or Open from Draft.
+    * Function determines it from launch flags & entry flags.
+    */
+    void SetMessageType();
+
+    /**
+    * Returns the max size of the message
+    */
+	TInt MaxMessageSize( ) const;
+
+    /**
+    * Returns the max size of the image (max message - textrecipientoverhead)
+    */
+	TInt MaxImageSize( ) const;
+
+    /**
+    * Called by Controller so it knows if the app is started from ROM or not
+    * Returns full filepath to this application
+    */        
+    TFileName AppFullName( );
+
+    /**
+    * Check if the mimetype is an image
+    */
+    TBool IsImage( const TDataType& aMimeType );
+
+    /**
+    * Tells the maximum width and height of the image.
+    * If image is bigger than that -> scaling is needed
+    */
+	TSize MaxImageDimensions( );
+	
+    protected:  // New functions
+
+    /**
+    * ConstructL
+    * 2nd phase constructor.
+    */
+    void ConstructL();
+
+    private: // New Functions
+
+    /**
+    * Creates a new CPostcardAppUi
+    */
+    CEikAppUi* CreateAppUiL();
+
+    private:  // data
+
+    RFs                 iFs;
+    TInt                iMsgChanged;
+    TPostcardMsgType    iMsgType;
+    CMsgMediaResolver*  iMediaResolver;
+    CMsgTextUtils*      iTextUtils;
+    TInt 				iMaxMessageSize;
+    };
+
+
+#endif   // __POSTCARDDOCUMENT_H
+
+// End of file