mobilemessaging/unieditor/utils/inc/UniObjectsViewDialog.h
changeset 79 2981cb3aa489
parent 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/unieditor/utils/inc/UniObjectsViewDialog.h	Wed Nov 03 09:52:46 2010 +0530
@@ -0,0 +1,334 @@
+/*
+* 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 Objects view dialog.
+*
+*/
+
+
+#ifndef C_UNIOBJECTSVIEWDIALOG_H
+#define C_UNIOBJECTSVIEWDIALOG_H
+
+// ========== INCLUDE FILES ================================
+
+#include <MsgViewAttachmentsDialog.h>
+#include <MsgAttachmentUtils.h>
+#include <AknServerApp.h>
+
+#include "unimodelconst.h"      // TUniLayout
+#include <uniobject.h>
+
+// ========== CONSTANTS ====================================
+
+// ========== MACROS =======================================
+
+// ========== FUNCTION PROTOTYPES ==========================
+
+// ========== FORWARD DECLARATIONS =========================
+
+class CSendUi;
+class CMsvEntry;
+class CMessageData;
+class CUniObject;
+class CUniDataModel;
+class CUniDataUtils;
+class CUniObjectsModel;
+class CUniObjectsInfo;
+
+// ========== DATA TYPES ===================================
+
+enum TUniObjectsDialogExitCmd
+    {
+    EUniObjectsViewExit,
+    EUniObjectsViewBack
+    };
+
+// ========== CLASS DECLARATION ============================
+
+/**
+*  Unified Editor Objects view dialog.
+*
+*  @lib UniUtils.lib
+*
+*  @since S60 3.2
+*/
+NONSHARABLE_CLASS( CUniObjectsViewDialog ) :    public CMsgViewAttachmentsDialog,
+                                                public MUniObjectObserver
+
+    {
+    public:
+
+        enum TUniObjectsDialogType
+            {
+            EEditor,
+            EViewer,
+            EForward
+            };
+
+    public:
+
+        /**
+         * Factory method that creates objects view.
+         *
+         * @since S60 3.2
+         *
+         * @param aDialogType      type of the dialog (editor, viewer or forward)
+         * @param aAttachmentModel reference to attachment model
+         * @param aDocument        reference to document owning SmilModel
+         * @param aExitCmd         Exit command issued for dialog
+         * @return Return value of dialogs ExecuteLD   
+         */
+        IMPORT_C static TInt ObjectsViewL( TUniObjectsDialogType aDialogType,
+                                           CUniObjectsModel& aAttachmentModel,
+                                           CEikonEnv* aEikonEnv,
+                                           TUniObjectsDialogExitCmd& aExitCmd,
+                                           CUniDataModel& aDataModel,
+                                           TInt aFocusedItemIndex = -1 );
+
+        /**
+         * Constructor.
+         *
+         * @since S60 3.2
+         *
+         * @param aTitle           title for dialog (shown in title pane)
+         * @param aDialogType      type of the dialog (editor, viewer or forward)
+         * @param aMenuId          resource id for menu
+         * @param aAttachmentModel reference to attachment model
+         * @param aDocument        reference to document owning SmilModel
+         * @param aResourceOffset  offset of the resource file (got from
+         *                         eikenv->AddResourceFileL)
+         * @param aExitCmd         Exit command issued for dialog
+         */
+        CUniObjectsViewDialog( TDesC& aTitle,
+                               TUniObjectsDialogType aDialogType,
+                               TInt aMenuId,
+                               CUniObjectsModel& aAttachmentModel,
+                               TInt aResourceOffset,
+                               TUniObjectsDialogExitCmd& aExitCmd,
+                               CUniDataModel& aDataModel,
+                               TInt aFocusedItemIndex );
+
+        /**
+         * Destructor.
+         *
+         * @since S60 3.2
+         */
+        virtual ~CUniObjectsViewDialog();
+
+    public:   // from CAknDialog
+
+        /**
+         * From CAknDialog. See akndialg.h
+         *
+         * @since S60 3.2
+         */
+        void ProcessCommandL( TInt aCommandId );
+
+        /**
+         * From CAknDialog. See akndialg.h
+         *
+         * @since S60 3.2
+         */
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+        /**
+         * From CAknDialog. See akndialg.h
+         *
+         * @since S60 3.2
+         */
+        void DynInitMenuPaneL( TInt aMenuId, CEikMenuPane* aMenuPane );
+        
+        /** 
+         * From CEikDialog
+         * Sets the layout for the dialog. Called just before the dialog
+         * is activated
+         */
+        void PreLayoutDynInitL();
+        
+    public: // from MApaServerAppExitObserver
+    
+        /**
+        * Handle the exit of a connected server app.
+        * This implementation provides S60 default behavior
+        * for handling of the EAknCmdExit exit code. Derived classes
+        * should base-call this implementation if they override this
+        * function.
+        *
+        * @since S60 3.2
+        *
+        * @param aReason The reason that the server application exited.
+        * This will either be an error code, or the command id that caused
+        * the server app to exit.
+        */
+        void HandleServerAppExit( TInt aReason );
+
+    private:
+        
+        /**
+         * Loads form data.
+         */
+        void LoadFormDataL();
+        
+        /**
+         * Remove attachment from model.
+         * @param aIndex 
+         */
+        void RemoveAttachmentL( TInt aIndex );
+
+        /**
+         * Change order of attachment.
+         * @param aCommandId   
+         * @param aNewPosition 
+         */
+        void ChangeOrderL( TInt aCommandId, TInt aNewPosition );
+
+        /**
+         * From CCoeControl, returns help context
+         */
+        void GetHelpContext( TCoeHelpContext& aContext ) const; 
+
+        /**
+         * By default Symbian constructor is private.
+         */
+        void ConstructL( CMsvEntry& aEntry );
+
+        /**
+         * "Calculates" on which slide we are.
+         * @return slide number
+         */
+        TInt SlideNumber( TInt aIndex );
+
+        /**
+         * Checks whether there are both image and text present
+         * @return ETrue if both image and text are present, EFalse otherwise
+         */
+        TBool IsImageAndTextPresent();
+
+        /** 
+         * Launches help application
+         */
+        void LaunchHelpL();
+
+        /**
+         * Processes menu command open.
+         * @param aIndex Index of the item to be opened 
+         */
+        void ProcessCommandOpenL( TInt aIndex );
+
+        /**
+         * Processes menu command save.
+         * @param aIndex Index of the item to be saved 
+         */
+        void ProcessCommandSaveL( TInt aIndex );
+
+        /**
+         * Processes menu command remove.
+         * @param aIndex Index of the item to be removed 
+         */
+        void ProcessCommandRemoveL( TInt aIndex );
+
+        /**
+         * Processes menu command send.
+         * @param aIndex Index of the item to be removed 
+         */
+        void ProcessCommandSendL( CMessageData& aMsgData, 
+                                  TInt aIndex, 
+                                  TUid aServiceId,
+                                  TUid aBioUid );
+
+        /**
+         * Creates a temporary text file in Unicode format
+         */
+        void CreateTempTextFileL( CUniObject* aObject, TFileName& aTempFileName );
+
+        /**
+         * Creates a temporary path
+         */
+        void CreateTempPathL( const TDesC& aFileName, TFileName& aTempFileName );
+
+        /**
+         * Checks whether an attachment file is of bio message type
+         */
+        TBool BioMessageTypeL( TPtrC8 aMimeType,
+                               TUid& aBioUid );
+    
+        /*
+        * PopulateAttachmentModelL
+        * Populates given model from smilmodel contents
+        *
+        * @param aObjectsViewModel
+        */
+        static void PopulateAttachmentModelL( CUniObjectsModel& aObjectsViewModel,
+                                              CUniDataModel& aUniDataModel );
+        
+        /**
+        * Creates an CUniObjectsInfo* from an CUniObject
+        * to be used when populating objects view model
+        *
+        * @param aObjectsViewModel
+        * @param aObject - Object to get info from.
+        * @param aAttachment - Indicate the object is attachment object
+        *                      (i.e. not referenced from SMIL)
+        * @param aSlideNumber - Number of slide on which object is located.
+        * @return new CUniObjectsinfo object
+        */
+        static CUniObjectsInfo* CreateObjectsInfoL( CUniObjectsModel& aObjectsViewModel,
+                                                    CUniObject& aObject,
+                                                    TBool aAttachmentObject,
+                                                    TInt aSlideNumber );
+        
+        /**
+        * Resolves DRM type to CUniObject object.
+        *
+        * @param aObject - Object to get info from.
+        *
+        * @return DRM type
+        */
+        static TInt GetObjectsInfoDRMTypeL( CUniObject& aObject );
+
+        /// MUniObjectObserver
+        void HandleUniObjectEvent(  CUniObject&  aUniObject,
+                                    TUniObjectEvent aUniEvent );
+
+        /**
+        * Checks whether objects has drm rights left just now
+        * @return TBool
+        */                
+        TBool IsRightsNow( CUniObject& aObject ) const;
+
+        /**
+        * Checks whether object has drm rights when downloaded to the current slide
+        * @return TBool
+        */                
+        TBool IsDrmRightsWhenLoaded( CUniObject& aObject ) const;
+        
+    private:  // data
+
+        TUniObjectsDialogType  iDialogType;
+        
+        TInt iResourceOffset;
+        
+        CUniDataModel& iDataModel;
+
+        CSendUi* iSendUi;
+
+        TInt iSupportedFeatures;
+
+        TUniObjectsDialogExitCmd iExitCmd;
+        
+        TInt iFocusedItemIndex;
+    };
+
+#endif // C_UNIOBJECTSVIEWDIALOG_H
+
+// End of File