messagingappbase/msgeditor/modelinc/MsgEditorModel.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/msgeditor/modelinc/MsgEditorModel.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,182 @@
+/*
+* Copyright (c) 2002 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:  MsgEditorModel  declaration
+*
+*/
+
+
+
+#ifndef INC_MSGEDITORMODEL_H
+#define INC_MSGEDITORMODEL_H
+
+// ========== INCLUDE FILES ================================
+
+// ========== CONSTANTS ====================================
+
+// ========== MACROS =======================================
+
+// ========== DATA TYPES ===================================
+
+// ========== FUNCTION PROTOTYPES ==========================
+
+// ========== FORWARD DECLARATIONS =========================
+
+class CBaseMtm;
+class CClientMtmRegistry;
+class CMtmUiRegistry;
+class CMtmUiDataRegistry;
+class CBaseMtmUi;
+class CBaseMtmUiData;
+class MMsgEditorModelObserver;
+
+// ========== CLASS DECLARATION ============================
+
+/**
+ * Interface for message editor/viewer model module.
+ *
+ */
+class CMsgEditorModel : public CBase, public MMsvSessionObserver
+{
+
+public:      // new functions
+
+    /**
+     * Constructor.
+     */
+    CMsgEditorModel();
+
+    /**
+     * Destructor.
+     */
+    ~CMsgEditorModel();
+
+    /**
+     * 2nd phase constructor.
+     */
+    void ConstructL();
+
+    /**
+     * Set up current message entry, creates a real connection between current
+     * editor/viewer session and an message entry to be displayed or edited.
+     * @param aEntryId
+     */
+    void SetEntryL(TMsvId aEntryId);
+
+    /**
+     * Loads client and ui mtm's according to given message type.
+     */
+    void PrepareMtmL(const TUid aMtmType);
+
+    /**
+     * Return reference to current session.
+     * @return
+     */
+    inline CMsvSession& Session() const;
+
+    /**
+     * Return reference to mtm.
+     * @return
+     */
+    inline CBaseMtm& Mtm() const;
+
+    /**
+     * Return reference to mtm ui.
+     * @return
+     */
+    CBaseMtmUi& MtmUiL();
+
+    /**
+     * Return reference to mtm ui data.
+     * @return
+     */
+    CBaseMtmUiData& MtmUiDataL();
+    
+    /**
+     * Return current message's entry.
+     * @return
+     */
+    inline const TMsvEntry& Entry() const;
+
+    /**
+     * Set the editor model observer.
+     * @param aObserver
+     */
+    inline void SetModelObserver(MMsgEditorModelObserver* aObserver);
+
+    /**
+     * Returns the current (the most recently known) status of the media.
+     * @return
+     */
+    inline TBool MediaAvailable() const;
+
+    /**
+     * Allows changing the media availability flag stored in model.
+     * @param aMediaAvailable
+     */
+    inline void SetMediaAvailable(TBool aMediaAvailable);
+
+    /**
+     *
+     */
+    void Wait();
+
+public:      // new public data member
+
+    TInt iLaunchWait;
+
+private:     // from MMsvSessionObserver
+
+    /**
+     * Handles session event observer, and call event handling functions in
+     * observer. Note that if additional session event handlers are defined in
+     * the session, they are called before this function (as this is the
+     * main session observer).
+
+     * Note that the same event (especially EMsvEntriesChanged) may happen
+     * several times successively when the message is saved. This is probably
+     * because the editor may modify the same entry several times when saving
+     * message.
+     *
+     * @param aEvent
+     * @param aArg1
+     * @param aArg2
+     * @param aArg3
+     */
+    void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
+
+    /**
+     *
+     */
+    void CompleteConstructL();
+
+private:     // data
+
+    CMsvSession*             iSession;
+    CBaseMtm*                iMtm;
+    CClientMtmRegistry*      iMtmReg;
+    CMtmUiRegistry*          iMtmUiReg;
+    CMtmUiDataRegistry*      iMtmUiDataReg;
+    CBaseMtmUi*              iMtmUi;
+    MMsgEditorModelObserver* iModelObserver;
+    TBool                    iMediaAvailable;
+    TBool                    iWait;
+    CBaseMtmUiData*          iMtmUiData;
+
+};
+
+#include "MsgEditorModel.inl"
+
+#endif
+
+// End of File