--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/unieditor/utils/inc/UniSlideLoader.h Wed Nov 03 09:52:46 2010 +0530
@@ -0,0 +1,394 @@
+/*
+* Copyright (c) 2005-2007 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: Unified Message Editor slide loader.
+*
+*/
+
+
+
+#ifndef C_UNISLIDELOADER_H
+#define C_UNISLIDELOADER_H
+
+// INCLUDES
+
+#include <e32base.h>
+#include <MsgMedia.hrh>
+#include <msgasynccontrolobserver.h>
+#include <ConeResLoader.h>
+
+#include <MsgEditorView.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+enum TUniControlMode
+ {
+ EUniControlEditorMode = 0,
+ EUniControlViewerMode
+ };
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+class CMsgBaseControl;
+//Hma class CMsgEditorView;
+class CUniObject;
+class CUniDataModel;
+class CMsgMediaControl;
+class MMsgAsyncControl;
+class CMsgXhtmlBodyControl;
+class MUniObjectObserver;
+
+// CLASS DECLARATION
+
+class MUniSlideLoaderObserver
+ {
+ public:
+
+ /**
+ * Called when slide loading has finished.
+ *
+ * @since S60 3.1
+ *
+ * @param aError KErrNone if no error happened,
+ * otherwise some systemwide error code.
+ */
+ virtual void SlideLoadReady( TInt aError ) = 0;
+ };
+
+
+// ==========================================================
+
+/**
+* Unified Editor slide loader class declaration.
+*
+* @lib UniUtils.lib
+*
+* @since S60 3.2
+*/
+NONSHARABLE_CLASS( CUniSlideLoader ): public CActive,
+ public MMsgAsyncControlObserver
+ {
+ public: // Constructor and destructor
+
+ /**
+ * Two-phased constructor.
+ *
+ * @since S60 3.2
+ *
+ * @param aControlObserver Observer for added control.
+ * @param aModel Reference to UniDataModel
+ * @param aView View to which controls are added.
+ * @param aControlMode TUniControlMode enumeration
+ *
+ * @return new object
+ */
+ IMPORT_C static CUniSlideLoader* NewL(
+ MMsgAsyncControlObserver& aControlObserver,
+ CUniDataModel& aModel,
+ CMsgEditorView& aView,
+ TUniControlMode aControlMode );
+
+ /**
+ * Two-phased constructor.
+ *
+ * @since S60 5.0
+ *
+ * @param aUniObjectObserver Observer for CUniObjet events. When slide is loaded
+ * observer is added to CUniObject. When ResetViewL() is called, observer is removed
+ * from CUniObject. When control is reloaded, observer remains untouched.
+ * @param aControlObserver Observer for added control.
+ * @param aModel Reference to UniDataModel
+ * @param aView View to which controls are added.
+ * @param aControlMode TUniControlMode enumeration
+ *
+ * @return new object
+ */
+ IMPORT_C static CUniSlideLoader* NewL(
+ MUniObjectObserver* aUniObjectObserver,
+ MMsgAsyncControlObserver& aControlObserver,
+ CUniDataModel& aModel,
+ CMsgEditorView& aView,
+ TUniControlMode aControlMode );
+
+
+ /**
+ * Destructor.
+ *
+ * @since S60 3.2
+ */
+ virtual ~CUniSlideLoader();
+
+ public:
+
+ /**
+ * Loads all the slide from given slide.
+ *
+ * @since S60 3.2
+ *
+ * @param aSlideObserver Slide loader observer.
+ * @param aSlideNum Loaded slide number
+ */
+ IMPORT_C void LoadSlideL(
+ MUniSlideLoaderObserver& aSlideObserver,
+ TInt aSlideNum );
+
+ /**
+ * Loads given object.
+ *
+ * @since S60 3.2
+ *
+ * @param aSlideObserver Slide loader observer.
+ * @param aObject Object to be loaded.
+ */
+ IMPORT_C void LoadObject(
+ MUniSlideLoaderObserver& aSlideObserver,
+ CUniObject* aObject );
+
+ /**
+ * Removes all the controls from the view.
+ *
+ * @since S60 3.2
+ */
+ IMPORT_C void ResetViewL();
+
+ /**
+ * Updates correct icon for media control.
+ *
+ * @since S60 3.2
+ *
+ * @param aMediaControl Control that icon is wanted to be updated.
+ * @param aObject Object related to the control
+ */
+ IMPORT_C void UpdateControlIconL( CMsgMediaControl& aMediaControl, CUniObject* aObject );
+
+ /**
+ * Reloads one control without need to reload whole slide.
+ *
+ * @since S60 5.0
+ *
+ * @param aMediaControl Control which needs to be reloaded.
+ * @param aObject Object related to the control
+ */
+ IMPORT_C void ReLoadControlL( CMsgMediaControl* aControl, CUniObject* aObject );
+
+ public:
+
+ /**
+ * From CActive. See e32base.h
+ *
+ * @since S60 3.2
+ *
+ */
+ void DoCancel();
+
+ /**
+ * From CActive. See e32base.h
+ *
+ * @since S60 3.2
+ */
+ void RunL();
+
+ /**
+ * From CActive. See e32base.h
+ *
+ * @since S60 3.2
+ */
+ TInt RunError( TInt aError );
+
+ /**
+ * From MMsgAsyncControlObserver. See MsgAsyncControlObserver.h
+ *
+ * @since S60 3.2
+ */
+ void MsgAsyncControlStateChanged( CMsgBaseControl& aControl,
+ TMsgAsyncControlState aNewState,
+ TMsgAsyncControlState aOldState );
+
+ /**
+ * From MMsgAsyncControlObserver. See MsgAsyncControlObserver.h
+ *
+ * @since S60 3.2
+ */
+ void MsgAsyncControlResourceChanged( CMsgBaseControl& aControl, TInt aType );
+
+ private: // Constructors
+
+ /**
+ * Hidden C++ default constructor.
+ */
+ CUniSlideLoader();
+
+ /**
+ * C++ constructor
+ */
+ CUniSlideLoader( MUniObjectObserver* aUniObjectObserver,
+ MMsgAsyncControlObserver& aControlObserver,
+ CUniDataModel& aDataModel,
+ CMsgEditorView& aView,
+ TUniControlMode aControlMode );
+
+ /**
+ * Symbian constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Completed current active scheduler loop.
+ */
+ void CompleteSelf();
+
+ /**
+ * Performs single load slide operation step.
+ */
+ void LoadSlideStepL();
+
+ /**
+ * Performs single load object operation step.
+ */
+ void LoadObjectStepL();
+
+ /**
+ * Loads object. Common function for all objects.
+ */
+ void LoadObjectL( CUniObject* aObject );
+
+ /**
+ * Loads text object.
+ */
+ void LoadTextL( CUniObject* aObject );
+
+ /**
+ * Loads image object.
+ */
+ void LoadImageL( CUniObject* aObject );
+
+ /**
+ * Loads audio object.
+ */
+ void LoadAudioL( CUniObject* aObject );
+
+ /**
+ * Loads video object.
+ */
+ void LoadVideoL( CUniObject* aObject );
+
+ /**
+ * Loads the svg
+ */
+ void LoadSvgL( CUniObject* aObject );
+
+ /**
+ * Loads content for media control.
+ */
+ TBool LoadControlL( MMsgAsyncControl& aMediaControl, CUniObject* aObject );
+
+ /**
+ * Adds control to view.
+ */
+ void AddToViewL( CMsgBaseControl* aControl,
+ TInt aControlId,
+ TMsgMediaType aType,
+ CUniObject* aObject );
+
+ /**
+ * Determines if error code is DRM error code or not.
+ */
+ TBool IsDRMError( TInt aError ) const;
+
+ /**
+ * Determines whether UniObject DRM rights are valid.
+ */
+ TBool DrmRightsValid( CUniObject* aObject ) const;
+
+ /**
+ * Consumes DRM righs from the UniObject.
+ */
+ TBool ConsumeDrmRights( CUniObject* aObject ) const;
+
+ /**
+ * Sets correct layout for media icon for specified control.
+ */
+ void SetIconLayoutL( CMsgMediaControl& aMediaControl );
+
+ /**
+ * Performs media control resource change event handling
+ */
+ void DoMsgAsyncControlResourceChangedL( CMsgBaseControl& aControl, TInt aType );
+
+ /**
+ * Resolves base control type and returns correct type pointer.
+ */
+ void ResolveCorrectControlType( CMsgBaseControl& aControl,
+ CMsgMediaControl*& aMediaControl,
+ CMsgXhtmlBodyControl*& aXhtmlControl );
+
+ /**
+ * Implements part of reloading control code
+ *
+ * @since S60 5.0
+ *
+ * @param aMediaControl Control which needs to be reloaded.
+ * @param aObject Object related to the control
+ */
+ TBool DoReLoadControlL( MMsgAsyncControl& aMediaControl, CUniObject* aObject );
+
+ /**
+ * Removes observers of the slide
+ *
+ * @since S60 5.0
+ */
+ void RemoveObservers( );
+
+ /**
+ * Resolve CUniObject related to media control.
+ *
+ * @since S60 5.0
+ * @param aControl control for which CUniObjects is needed
+ * @return CUniObject related to the given control
+ */
+ CUniObject* ObjectByBaseControl( CMsgBaseControl* aControl );
+
+ private: //Data
+
+ enum TMmsLoadOperation
+ {
+ ELoadSlide,
+ ELoadObject
+ };
+
+ MMsgAsyncControlObserver& iControlObserver;
+ CUniDataModel& iDataModel;
+ CMsgEditorView& iView;
+ TUniControlMode iControlMode;
+
+ MUniSlideLoaderObserver* iSlideObserver;
+
+ TInt iLoadedSlide;
+ TInt iObjectNum;
+ TMmsLoadOperation iOperation;
+ CUniObject* iLoadedObject;
+
+ TInt iError;
+
+ RConeResourceLoader iResourceLoader;
+
+ MUniObjectObserver* iUniObjectObserver;
+ };
+
+#endif // C_UNISLIDELOADER_H