mobilemessaging/unieditor/application/inc/UniEditorAppUi.h
changeset 79 2981cb3aa489
equal deleted inserted replaced
25:84d9eb65b26f 79:2981cb3aa489
       
     1 /*
       
     2 * Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   Unified SMS and MMS Editor Application UI class definition.      
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #ifndef _UNIEDITORAPPUI_H
       
    21 #define _UNIEDITORAPPUI_H
       
    22 
       
    23 //  INCLUDES
       
    24 
       
    25 #include <gmxmlparser.h>                // for MMDXMLParserObserver & CMDXMLParser
       
    26 
       
    27 #include <MsgEditorAppUi.h>             // for CMsgEditorAppUi
       
    28 #include <MsgEditorView.h>
       
    29 #include <MsgAddressControl.h>
       
    30 #include <MsgBodyControl.h>             // for CMsgBodyControl
       
    31 #include <MsgEditor.hrh>
       
    32 #include <msgimagecontrol.h>            // for CMsgImageControl (needed in .inl)
       
    33 #include <msgasynccontrolobserver.h>
       
    34 
       
    35 #include <MsgRecipientItem.h>           // for CMsgRecipientArray
       
    36 #include <MsgAttachmentUtils.h>
       
    37 #include <MMGFetchVerifier.h>
       
    38 #include <akntoolbarobserver.h>
       
    39 #include <AknServerApp.h>               // for MAknServerAppExitObserver
       
    40 #include <AknProgressDialog.h>          // for MProgressDialogCallback
       
    41 #include <peninputclient.h>
       
    42 #include <peninputsrveventhandler.h>
       
    43 #include <cenrepnotifyhandler.h>    // MCenRepNotifyHandlerCallback
       
    44 
       
    45 #include <eikedwob.h>                   // for MEikEdwinObserver
       
    46 
       
    47 #include <aknlongtapdetector.h> // for long tap
       
    48 // Needed by inline functions
       
    49 #include "uniobjectlist.h"
       
    50 #include "unidatamodel.h"
       
    51 #include "UniSendingSettings.h"
       
    52 
       
    53 #include "UniEditorHeader.h"            // THeadersFields,  
       
    54 #include "UniEditorApp.hrh"             // TUniEditorPanicIds
       
    55 #include "UniEditorOperation.h"         // MUniEditorOperatorObserver
       
    56 
       
    57 // CONSTANTS
       
    58 
       
    59 // FUNCTION PROTOTYPES
       
    60 
       
    61 // FORWARD DECLARATIONS
       
    62 class TFilename;
       
    63 class TChar;
       
    64 class CAknTitlePane;
       
    65 class CAknNavigationDecorator;
       
    66 class CAknNavigationControlContainer;
       
    67 class CAknWaitDialog;
       
    68 class CUniEditorDocument;
       
    69 class CAknLocalScreenClearer;
       
    70 class CRepository;
       
    71 class CSelectionItemList;
       
    72 class CEikImage; // for context icon
       
    73 class CAknInfoPopupNoteController;
       
    74 class CDocumentHandler;
       
    75 class CAknIconArray;
       
    76 class CAknInputBlock;
       
    77 class CMDXMLDocument;
       
    78 class CAknToolbar;
       
    79 
       
    80 class CMsgMediaInfo;
       
    81 class CMsgImageControl;
       
    82 class TMsgControlsIds;
       
    83 
       
    84 class CUniClientMtm;
       
    85 class CUniSmilModel;
       
    86 class CUniSlideLoader;
       
    87 class CUniEditorLaunchOperation;
       
    88 class CUniEditorSaveOperation;
       
    89 class CUniEditorSendOperation;
       
    90 class CUniEditorChangeSlideOperation;
       
    91 class CUniEditorInsertOperation;
       
    92 class CUniEditorVCardOperation;
       
    93 class CUniEditorHeader;
       
    94 class CAknToolbarExtension;
       
    95 class CAknStylusPopUpMenu;
       
    96 class CAknLocalScreenClearer;
       
    97 
       
    98 // CLASS DECLARATION
       
    99 
       
   100 /**
       
   101 * CUniEditorAppUi
       
   102 *
       
   103 * @since 3.2
       
   104 */
       
   105 class CUniEditorAppUi : 
       
   106     public CMsgEditorAppUi,
       
   107     public MMGFetchVerifier,
       
   108     public MMsgAsyncControlObserver,
       
   109     public MUniEditorOperationObserver,
       
   110     public MAknToolbarObserver,
       
   111     public MMDXMLParserObserver,
       
   112     public MAknServerAppExitObserver,
       
   113     public MEikEdwinObserver,
       
   114     public MProgressDialogCallback,
       
   115     public MPenUiActivationHandler,
       
   116     public MCenRepNotifyHandlerCallback,
       
   117     public MAknLongTapDetectorCallBack
       
   118     {
       
   119     public:  // Constructors and destructor
       
   120         
       
   121         /**
       
   122         * C++ default constructor.
       
   123         */
       
   124         CUniEditorAppUi();
       
   125 
       
   126         /**
       
   127         * Destructor.
       
   128         */
       
   129         virtual ~CUniEditorAppUi();
       
   130 
       
   131         /**
       
   132         * Removes object from screen.  (Objectsview callback method)
       
   133         * @param aRegion, region to remove the object from
       
   134         * @param aLayout, layout before removed from model
       
   135         */
       
   136         void RemoveObjectL( TUniRegion aRegion, TUniLayout aLayout );
       
   137 
       
   138         /**
       
   139         * Changes object order on screen. (Objectsview callback method)
       
   140         * @param aLayout, new layout
       
   141         */
       
   142         void ChangeOrderL( TUniLayout aLayout );
       
   143 
       
   144         /**
       
   145         * If there is image control, sets image release/lock
       
   146         * according to parameter. Otherwise does nothing.
       
   147         * @param aRelease, ETrue = release/unlock, EFalse = lock
       
   148         */
       
   149         void ReleaseImage( TBool aRelease );
       
   150 
       
   151         /**
       
   152         * Saves, if needed and exits
       
   153         */        
       
   154         void ExitAndSaveL();
       
   155         
       
   156         /**
       
   157         * Wrapper on the FetchFileL function of Base Editor.
       
   158         * Called by "Insert" functions.
       
   159         *
       
   160         * @param aFetchType, EImage or ENewImage or
       
   161         *                    EAudio or ENewAudio or
       
   162         *                    EVideo or ENewVideo
       
   163         */
       
   164         TBool FetchFileL( MsgAttachmentUtils::TMsgAttachmentFetchType aFetchType );
       
   165 
       
   166         /**
       
   167         * Sets focus to first focusable control on body.
       
   168         */
       
   169         void SetFocusToBodyBeginningL();
       
   170         
       
   171         /**
       
   172         * Callback for CPeriodic
       
   173         */        
       
   174         static TInt DelayedExitL( TAny* aThis );
       
   175         
       
   176         /**
       
   177         * Callback for MProgressDialogCallback
       
   178         */        
       
   179         void DialogDismissedL( TInt /*dismissed*/ );
       
   180         
       
   181         /**
       
   182         * Exit Unieditor without save during critimal memory condition
       
   183         */   
       
   184         void ExitWithoutSave();
       
   185     public: // Functions from base classes
       
   186     
       
   187         /**
       
   188         * From MMsgEditorObserver. Calls DoEditorObserverL()
       
   189         *
       
   190         * For passing events from Base Editor to MMS Editor
       
   191         */
       
   192         void EditorObserver( TMsgEditorObserverFunc aFunc,
       
   193                              TAny* aArg1,
       
   194                              TAny* aArg2,
       
   195                              TAny* aArg3 );
       
   196         
       
   197         /**
       
   198         * Handles the editor observer event.
       
   199         */
       
   200         void DoEditorObserverL( TMsgEditorObserverFunc aFunc,
       
   201                                 TAny* aArg1,
       
   202                                 TAny* aArg2,
       
   203                                 TAny* aArg3 );
       
   204 
       
   205         /**
       
   206         * From MMGFetchVerifier
       
   207         */
       
   208         TBool VerifySelectionL( const MDesCArray* aSelectedFiles );
       
   209 
       
   210         /**
       
   211          * From MAknToolbarObserver
       
   212          */
       
   213         void DynInitToolbarL( TInt aResourceId, CAknToolbar* aToolbar );
       
   214         
       
   215         /**
       
   216          * From MAknToolbarObserver
       
   217          */
       
   218         void OfferToolbarEventL( TInt aCommand );
       
   219     
       
   220         /**
       
   221          * From MApaServerAppExitObserver
       
   222          */
       
   223         void HandleServerAppExit( TInt aReason );
       
   224     
       
   225         /**
       
   226         * From MEikEdwinObserver
       
   227         */
       
   228         void HandleEdwinEventL( CEikEdwin* aEdwin, TEdwinEvent aEventType );
       
   229         
       
   230         /**
       
   231          * From CMsgEditorAppUi
       
   232          */
       
   233         void HandleEntryMovedL( TMsvId aOldParent, TMsvId aNewParent );
       
   234 		
       
   235 		/**
       
   236          * From CMsgEditorAppUi
       
   237          */
       
   238         void HandleStatusPaneSizeChange();
       
   239         
       
   240         /*
       
   241         * From MPenUiActivationHandler
       
   242         */
       
   243         void OnPeninputUiDeactivated();
       
   244         
       
   245         /*
       
   246         * From MPenUiActivationHandler
       
   247         */
       
   248         void OnPeninputUiActivated();       
       
   249     
       
   250     private: // Functions from base classes
       
   251             
       
   252         /**
       
   253         * From MMsgEditorLauncher
       
   254         */
       
   255         void LaunchViewL();
       
   256 
       
   257         /**
       
   258         * From CCoeAppUi 
       
   259         */
       
   260         TKeyResponse HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
       
   261 
       
   262         /**
       
   263         * From CEikAppUi 
       
   264         */
       
   265         void HandleCommandL( TInt aCommand );
       
   266 
       
   267         /**
       
   268         * From CAknAppUi 
       
   269         */
       
   270         void ProcessCommandL(TInt aCommand);
       
   271         
       
   272         /**
       
   273         * Performs the command.
       
   274         */
       
   275         void DoHandleCommandL( TInt aCommand );
       
   276         
       
   277         /**
       
   278          * Performs the command.
       
   279          */
       
   280         void DoOfferToolbarEventL( TInt aCommand );
       
   281         
       
   282         /**
       
   283         * From CAknAppUi.
       
   284         *
       
   285         * Handles navipane updating when launched from idle and
       
   286         * when returning from preview.
       
   287         *
       
   288         * @param aForeground, ETrue if app is foreground.
       
   289         */
       
   290         void HandleForegroundEventL(TBool aForeground);
       
   291 
       
   292         /**
       
   293         * From MEikMenuObserver 
       
   294         */
       
   295         void DynInitMenuPaneL( TInt aMenuId, CEikMenuPane* aMenuPane );
       
   296         
       
   297         /**
       
   298         * Helper function to be called in normal unimode and upload mode.
       
   299         * Handles the menu options based on the focused media object
       
   300         */
       
   301         void DynInitFocusedMediaBasedOptionsL( CEikMenuPane* aMenuPane );
       
   302         
       
   303         /**
       
   304         * From MUniEditorOperationObserver. Called when operation 
       
   305         * state is changed.
       
   306         */
       
   307         void EditorOperationEvent( TUniEditorOperationType aOperation,
       
   308                                    TUniEditorOperationEvent aEvent );
       
   309 
       
   310         /**
       
   311         * Performs the real operation event handling
       
   312         */
       
   313         void DoEditorOperationEventL( TUniEditorOperationType aOperation,
       
   314                                       TUniEditorOperationEvent aEvent );
       
   315 
       
   316         /**
       
   317         * From MUniEditorOperationObserver. Query is wanted to be shown 
       
   318         * to the user.
       
   319         */
       
   320         TBool EditorOperationQuery( TUniEditorOperationType aOperation,
       
   321                                     TUniEditorOperationQuery aEvent );        
       
   322 
       
   323         
       
   324         /**
       
   325         * Shows the query to the user.
       
   326         */
       
   327         TBool DoEditorOperationQueryL( TUniEditorOperationType aOperation,
       
   328                                        TUniEditorOperationQuery aEvent );        
       
   329 
       
   330         /**
       
   331         * Performs the change slide operation event handling.
       
   332         */
       
   333         void DoChangeSlideCompleteL();
       
   334         
       
   335         /**
       
   336         * Performs the insert operation event handling.
       
   337         */
       
   338         void DoInsertCompleteL( TUniEditorOperationEvent aEvent );
       
   339         
       
   340         /**
       
   341         * Performs the 2nd phase of insert operation event handling.
       
   342         */
       
   343         void DoInsertComplete2ndPhaseL();
       
   344         
       
   345         /**
       
   346         * Performs launch operation event handling.
       
   347         */
       
   348         void DoLaunchCompleteL();
       
   349         
       
   350         /**
       
   351         * Performs save operation event handling.
       
   352         */
       
   353         void DoSaveCompleteL();
       
   354         
       
   355         /**
       
   356         * Performs the 2nd phase of saving operation event handling.
       
   357         */
       
   358         void DoSavingComplete2ndPhase();
       
   359         
       
   360         /**
       
   361         * Performs send operation event handling.
       
   362         */
       
   363         void DoSendCompleteL();
       
   364         
       
   365         /**
       
   366         * Performs 2nd phase of send operation event handling.
       
   367         */
       
   368         void DoSendComplete2ndPhase();
       
   369         
       
   370         /**
       
   371         * Performs vCard insert operation event handling.
       
   372         */
       
   373         void DoVCardCompleteL();
       
   374         
       
   375         /**
       
   376         * Shows insert errors
       
   377         */
       
   378         void ShowInsertErrorsL();
       
   379         
       
   380         /**
       
   381         * From MMsgAsyncControlObserver. Called when asynchronous control
       
   382         * state is changed
       
   383         */
       
   384         void MsgAsyncControlStateChanged( CMsgBaseControl& aControl,
       
   385                                           TMsgAsyncControlState aNewState,
       
   386                                           TMsgAsyncControlState aOldState );
       
   387         
       
   388         /**
       
   389         * From MMsgAsyncControlObserver. Called when asynchronous control
       
   390         * receives resource change event.
       
   391         */
       
   392         void MsgAsyncControlResourceChanged( CMsgBaseControl& aControl, TInt aType );
       
   393         
       
   394         /**
       
   395         * 2nd phase constructor.
       
   396         */
       
   397         void ConstructL(); 
       
   398     	// From MAknLongTapDetectorCallBack
       
   399         /**
       
   400          * @see MAknLongTapDetectorCallBack
       
   401          */
       
   402         void HandleLongTapEventL(
       
   403             const TPoint& aPenEventLocation, 
       
   404             const TPoint& aPenEventScreenLocation );
       
   405 
       
   406     private:
       
   407     
       
   408         enum TUniEditorInsertTextType
       
   409             {
       
   410             ETemplateText,
       
   411             EMemoText
       
   412             };
       
   413         
       
   414         enum TUniEditorInsertOtherType
       
   415             {
       
   416             ETextFile,
       
   417             EOtherFile
       
   418             };
       
   419             
       
   420     private: // New functions
       
   421           
       
   422         /**
       
   423         * Update the msglength information in navipane.
       
   424         * Reads the current size from document.
       
   425         *
       
   426         * @param aForceDraw, forces drawing of size label. 
       
   427         */
       
   428         void MsgLengthToNavipaneL( TBool aForceDraw = EFalse );    
       
   429         
       
   430         /**
       
   431         * Calculates the SMS Messages Characters left in the current segment and Total No. of segments in the message
       
   432         * Total No. of segments in the message
       
   433         *
       
   434         * @Return value
       
   435         * charsLeft: Characters left in the current segment
       
   436         * msgsParts: Total No of segments 
       
   437         */
       
   438         void CalculateSMSMsgLen(TInt& charsLeft, TInt& msgsParts);
       
   439 
       
   440         /**
       
   441         * Check if message has any data i.e. either in header ("To"),
       
   442         * in message body or as attachments.
       
   443         *
       
   444         * @return ETrue, message empty,
       
   445         *         EFalse, message not empty
       
   446         */        
       
   447         TBool IsMessageEmpty() const;
       
   448 
       
   449         /**
       
   450         * Draw the "not viewable" icons
       
   451         * (editable 3GPP SMIL or non-editable SMIL).
       
   452         *
       
   453         * @param aEditable, ETrue should be set if SMIL is Template SMIL
       
   454         */
       
   455         void InsertPresentationL( TBool aEditable );
       
   456 
       
   457         /**
       
   458         * Updates the address size to CUniEditorDocument
       
   459         */
       
   460         void SetAddressSize();
       
   461 
       
   462         /**
       
   463         * Updates the subject size to CUniEditorDocument
       
   464         */
       
   465         void SetSubjectSize();
       
   466 
       
   467         /**
       
   468         * Checks message content and if ok send message
       
   469         */        
       
   470         void DoUserSendL();
       
   471 
       
   472         /**
       
   473         * Handles message saving after exit 
       
   474         */        
       
   475         void DoMsgSaveExitL();
       
   476 
       
   477         /**
       
   478         * Handles delayed (external) exit 
       
   479         * @param aDelayTime in microsecods
       
   480         */        
       
   481         void DoDelayedExit( TInt aDelayTime );
       
   482 
       
   483         /**
       
   484         * Handles message saving after user has pressed close.
       
   485         */        
       
   486         void DoBackSaveL();
       
   487 
       
   488         /**
       
   489         * Does actual saving of message to DRAFT folder.
       
   490         *
       
   491         * @param aSaveType, Controls how the saving is done
       
   492         *                   e.g. keep entry hidden etc.
       
   493         */        
       
   494         void DoSaveL( TUniSaveType aSaveType ); 
       
   495 
       
   496         /**
       
   497         * Verifies addresses in address control.
       
   498         *
       
   499         * @return ETrue, if verify successful,
       
   500         *         EFalse otherwise
       
   501         */        
       
   502         TBool VerifyAddressesL( TBool& aModified );
       
   503 
       
   504         /**
       
   505         * Handles user move and select page commands. 
       
   506         */        
       
   507         void DoUserMoveOrSelectPageL( TBool aMovePage );
       
   508         
       
   509         /**
       
   510         * Handles user objects view command. 
       
   511         */        
       
   512         void DoUserObjectsViewL( TBool aFocusAttachments );
       
   513 
       
   514         /**
       
   515         * Handles user add recipient command. 
       
   516         */        
       
   517         void DoUserAddRecipientL();
       
   518 
       
   519         /**
       
   520         * Handles user message info command. 
       
   521         */        
       
   522         void DoUserMessageInfoL();
       
   523 
       
   524         /**
       
   525         * Handles user sending settings command. 
       
   526         */        
       
   527         void DoUserSendingOptionsL();
       
   528 
       
   529         /**
       
   530         * Handles user insert media command. 
       
   531         */        
       
   532         void DoUserInsertMediaL();
       
   533         
       
   534         /**
       
   535         * Handles user insert image command. Creates attachment
       
   536         * and draws image to display. 
       
   537         *
       
   538         * @param aFetchType, ENewImage or EImage 
       
   539         */        
       
   540         void DoUserInsertImageL( MsgAttachmentUtils::TMsgAttachmentFetchType aFetchType );
       
   541 
       
   542         /**
       
   543         * Handles user insert video command. Creates attachment
       
   544         * and draws image to display. 
       
   545         *
       
   546         * @param aFetchType, ENewVideo or EVideo
       
   547         */        
       
   548         void DoUserInsertVideoL( MsgAttachmentUtils::TMsgAttachmentFetchType aFetchType );
       
   549 
       
   550         /**
       
   551         * Handles user insert audio command. Creates atta and draws audio 
       
   552         * (indicator) to display.
       
   553         *
       
   554         * @param aFetchType, ENewAudio or EAudio 
       
   555         */        
       
   556         void DoUserInsertAudioL( MsgAttachmentUtils::TMsgAttachmentFetchType aFetchType );
       
   557 
       
   558         /**
       
   559         * Starts insert operation
       
   560         *
       
   561         * @param aAddSlide Indicates whether new slide should be added.
       
   562         * @param aAddAsAttachment Indicates that file is inserted as attachment.
       
   563         */
       
   564         void DoStartInsertL( TBool aAddSlide, TBool aAddAsAttachment );
       
   565 
       
   566         /**
       
   567         * Creates a media info object from given file and
       
   568         * performs a preliminary check whether it is ok to 
       
   569         * insert the given media file.
       
   570         *
       
   571         * The media info object is created to "iInsertingMedia"
       
   572         * member variable.
       
   573         *
       
   574         * @param aMediaType Media type to be checked
       
   575         * @param aFileName  Media file to be checked
       
   576         * @return ETrue if media info object was created
       
   577         *         EFalse otherwise
       
   578         */        
       
   579         TBool CreateMediaInfoForInsertL( TMsgMediaType aMediaType,
       
   580                                          const TDesC& aFileName );
       
   581 
       
   582         /**
       
   583         * Checks whether the media object in "iInsertingMedia"
       
   584         * member variable is SuperDistributable or not. If yes
       
   585         * and Full OMA DRM is supported gives "Send without 
       
   586         * rights query".
       
   587         *
       
   588         * Deletes the "iInsertingMedia" variable if query is
       
   589         * not accepted.
       
   590         *
       
   591         * @return ETrue, if it is ok to insert the media
       
   592         *         EFalse, otherwise (iInsertingMedia deleted!)
       
   593         */
       
   594         TBool SuperDistributionCheckForInsertL();
       
   595 
       
   596 
       
   597         /**
       
   598         * Checks whether it is ok to insert the media object
       
   599         * in "iInsertingMedia" member variable.
       
   600         *
       
   601         * Deletes the "iInsertingMedia" variable if inserting
       
   602         * is not allowed.
       
   603         *
       
   604         * @return ETrue, if it is ok to insert the media
       
   605         *         EFalse, otherwise (iInsertingMedia deleted!)
       
   606         */
       
   607         TBool CheckMediaInfoForInsertL();
       
   608 
       
   609         /**
       
   610         * Handles user insert slide command. 
       
   611         */
       
   612         void DoUserInsertSlideL();
       
   613         
       
   614         /**
       
   615         * Handles user remove slide command. 
       
   616         */
       
   617         void DoUserRemoveSlideL();
       
   618 
       
   619         /**
       
   620         * Does the actual slide removal. First removes
       
   621         * All objects from the slide, then removes the
       
   622         * actual slide and finally changes the current slide
       
   623         */        
       
   624         void DoRemoveSlideL();
       
   625 
       
   626         /**
       
   627         * Handles user slide change command, i.e. 
       
   628         * this is called when the user scrolls out of
       
   629         * the current slide.
       
   630         * 
       
   631         * @param aSlideNum  Number of the next slide to be drawn
       
   632         */        
       
   633         void DoUserChangeSlideL( TInt aSlideNum );
       
   634 
       
   635         /**
       
   636         * Sets focus after slide is drawn
       
   637         */        
       
   638         void DoSetFocusL();
       
   639 
       
   640         /**
       
   641         * Sets text to title pane
       
   642         */        
       
   643         void SetTitleL();
       
   644 
       
   645         /**
       
   646         * Handles user remove image, audio of video media object
       
   647         * @param aMediaControlId media control id
       
   648         * @param aRegion region the control resides
       
   649         * @param aConfirmResource confirm query to be shown to user
       
   650         */        
       
   651         void DoUserRemoveMediaL(    TMsgControlId   aMediaControlId,
       
   652                                     TUniRegion      aRegion );
       
   653 
       
   654         /**
       
   655         * Handles user insert text command.
       
   656         *
       
   657         * @param aType Text type wanted to be inserted.
       
   658         */
       
   659         void DoUserInsertTextL( TUniEditorInsertTextType aType );
       
   660         
       
   661         /**
       
   662         * Handles user insert other file command.
       
   663         *
       
   664         * @param aType Other file type wanted to be inserted.
       
   665         */
       
   666         void DoUserInsertOtherFileL( TUniEditorInsertOtherType aType );
       
   667         
       
   668         /**
       
   669         * Handles user insert vCard command.        
       
   670         */
       
   671         void DoUserInsertVCardL();
       
   672         
       
   673 //        /**
       
   674 //        * Handles user insert SVG command.        
       
   675 //        */
       
   676 //        void DoUserInsertSvgL();
       
   677         
       
   678         /**
       
   679         * Draws navipane at launch time.
       
   680         */
       
   681         void InitNaviPaneL();
       
   682 
       
   683         /**
       
   684         * Updates following navi indicators to both avkon editor pane and navidecorator pane
       
   685         * - Priority low / high
       
   686         */
       
   687         void UpdateIndicatorIconsL();
       
   688 
       
   689         /**
       
   690         * Auxiliary function. Shows a infomation note using notewrappers. 
       
   691         *
       
   692         * @param aResourceID
       
   693         * @param aWaiting, is note waiting or not.
       
   694         */  
       
   695         void ShowInformationNoteL(TInt aResourceID, TBool aWaiting );
       
   696 
       
   697         /**
       
   698         * Auxiliary function. Shows an error note using notewrappers. 
       
   699         *
       
   700         * @param aResourceID
       
   701         * @param aWaiting, is note waiting or not.
       
   702         */  
       
   703         void ShowErrorNoteL(TInt aResourceID, TBool aWaiting );
       
   704 
       
   705         /**
       
   706         * Auxiliary function. 
       
   707         * Shows a confirmation query.
       
   708         *
       
   709         * @param aResourceID
       
   710         * @return the return value returned by CAknQueryDialog::ExecuteLD
       
   711         */  
       
   712         TInt ShowConfirmationQueryL( TInt aResourceID );
       
   713         TInt ShowConfirmationQueryL( const TDesC& aText ) const;
       
   714         TInt ShowConfirmationNoQuestionQueryL( const TDesC& aText ) const;
       
   715         TInt ShowConfirmableInfoL( TInt aResourceID );
       
   716         TInt ShowConfirmableInfoL( const TDesC& aText ) const;
       
   717         TInt ShowConfirmableInfoErrorL( const TDesC& aText ) const;
       
   718 
       
   719         /**
       
   720         * Auxiliary function. Shows a confirmation query if it is not shown before. 
       
   721         *
       
   722         * @param aResourceID
       
   723         * @return the return value returned by CAknQueryDialog::ExecuteLD
       
   724         */  
       
   725         TInt ShowGuidedModeConfirmationQueryL( TInt aResourceID );
       
   726 
       
   727         /**
       
   728         * Shows wait note using CAknWaitDialog.
       
   729         *
       
   730         * @param aResourceID
       
   731         */
       
   732         TBool ShowWaitNoteL( TInt aResourceId );
       
   733         
       
   734         /**
       
   735         * Remove wait note from screen.
       
   736         */
       
   737         void RemoveWaitNote();
       
   738 
       
   739         /** 
       
   740         * Handles text addition to model when needed, updates size
       
   741         * when addreses or bodytext edited.
       
   742         */        
       
   743         void HandleCharInputL();
       
   744 
       
   745         /** 
       
   746         * Checks whether text object should be added to smilmodel when
       
   747         * after characters are added/removed
       
   748         */        
       
   749         void UpdateSmilTextAttaL();
       
   750 
       
   751         /**
       
   752         * Message size according to TS 23.140 v5.5.0
       
   753         *
       
   754         * @return size in bytes
       
   755         */
       
   756         TInt MessageSizeInBytes();
       
   757 
       
   758         /**
       
   759         * Handles selection key press.
       
   760         */
       
   761         void DoSelectionKeyL();
       
   762         
       
   763         /**
       
   764         * Performs launch finalization.
       
   765         */
       
   766         void FinalizeLaunchL();
       
   767         
       
   768         /**
       
   769         * Shows possible notes related to editor launching. 
       
   770         * These notes include both error notes and notes related to content & MMS creation mode.
       
   771         *
       
   772         * @aParam aShutDown  Returns ETrue    if launching can proceed
       
   773         *                            EFalse   if launching should be aborted immediatelly.
       
   774         */
       
   775         void ShowLaunchNotesL( TBool& aShutDown );
       
   776 
       
   777         /**
       
   778         * Sets an error resource id to be handled later
       
   779         * (usually after LaunchViewL).
       
   780         *
       
   781         * @param aStoreId   IN/OUT  The correct id is stored here
       
   782         * @param aNewId     IN      Error id
       
   783         */
       
   784         void SetErrorResource( TInt& aStoreId, TInt aNewId );
       
   785         
       
   786         /**
       
   787         * Determines error "priority"
       
   788         */
       
   789         TInt ErrorPriority( TInt aErrorId );
       
   790 
       
   791         /**
       
   792         * Checks if phone is in offline mode or not
       
   793         *
       
   794         * @return ETrue if phone is in offline mode
       
   795         *         Otherwise EFalse.
       
   796         */
       
   797         TBool IsPhoneOfflineL() const;
       
   798 
       
   799         /**
       
   800         * Checks whether there's enough disk space
       
   801         * to save the message.
       
   802         *
       
   803         * @return ETrue if there is enough disk space.
       
   804         *         Otherwise EFalse.
       
   805         */
       
   806         TBool CanSaveMessageL() const;
       
   807 
       
   808         /** 
       
   809         * Launches help application
       
   810         */
       
   811         void LaunchHelpL();
       
   812 
       
   813         /** 
       
   814         * Gets help context
       
   815         */
       
   816         CArrayFix<TCoeHelpContext>* HelpContextL() const;          
       
   817 
       
   818         /** 
       
   819         * User selects a new template and launches smil editor
       
   820         */
       
   821         void NewTemplateL();
       
   822 
       
   823         /** 
       
   824         * Opens smil editor for template message opened from drafts folder
       
   825         */
       
   826         void OpenTemplateL();
       
   827 
       
   828         /** 
       
   829         * Called when user wants to play created presentation
       
   830         * Starts creating SMIL DOM
       
   831         */
       
   832         void PlayPresentationL();
       
   833         
       
   834         /** 
       
   835         * When the SMIL DOM creation is ready, this function is called by the callback funtion
       
   836         * to start the SMILPlayer dialog.
       
   837         */
       
   838         void DoCompletePlayPresentationL();
       
   839         
       
   840         /** 
       
   841         * Removes template from message.
       
   842         */
       
   843         void RemoveTemplateL();
       
   844 
       
   845         /**
       
   846         * Handles user change order command.
       
   847         */
       
   848         void DoUserChangeOrderL( TUniLayout aLayout );
       
   849 
       
   850         /**
       
   851         * Begins active scheduler loop
       
   852         */
       
   853         void BeginActiveWait( CUniEditorOperation* aOperation );
       
   854         
       
   855         /**
       
   856         * Stops active scheduler loop
       
   857         */
       
   858         void EndActiveWait();
       
   859         
       
   860         /**
       
   861         * Returns available objects as a bit mask
       
   862         */
       
   863         TUint32 ObjectsAvailable();
       
   864         
       
   865         /**
       
   866         * Handles resource change events.
       
   867         */
       
   868         void HandleResourceChangeL(TInt aType);
       
   869     
       
   870         /**
       
   871         * ParseFileCompleteL
       
   872         * Call back function used to inform client of Parser when SMIL dom is ready for preview
       
   873         */
       
   874         void ParseFileCompleteL();
       
   875 
       
   876         /** 
       
   877         * Accessor
       
   878         * Get pointer to image control
       
   879         *
       
   880         * @return Pointer to image control or
       
   881         *         NULL if image control does not exist
       
   882         */
       
   883         inline CMsgImageControl* ImageCtrl() const;
       
   884 
       
   885         /** 
       
   886         * Accessor
       
   887         * To check whether To field is ON CURRENT SLIDE.
       
   888         * Address handling should take place through CUniEditorHeader
       
   889         *
       
   890         * @return Pointer to image control or
       
   891         *         NULL if image control does not exist
       
   892         */
       
   893         inline CMsgAddressControl* ToCtrl() const;
       
   894 
       
   895         /** 
       
   896         * Accessor
       
   897         * To check whether Subject field is on ON CURRENT SLIDE
       
   898         * Subject handling should take place through CUniEditorHeader
       
   899         *
       
   900         * @return Pointer to image control or
       
   901         *         NULL if image control does not exist
       
   902         */
       
   903         inline CMsgExpandableControl* SubjectCtrl() const;
       
   904    
       
   905         /** 
       
   906         * Accessor
       
   907         * Get pointer to body control
       
   908         *
       
   909         * @return Pointer to body control or
       
   910         *         NULL if body control does not exist
       
   911         */
       
   912         inline CMsgBodyControl* BodyCtrl() const;
       
   913 
       
   914         /** 
       
   915         * Accessor
       
   916         * Get pointer to address control rich text editor
       
   917         *
       
   918         * @return Pointer to address control editor or
       
   919         *         NULL if address control does not exist
       
   920         */
       
   921         inline CEikRichTextEditor* RecipientCtrlEditor(CUniBaseHeader::THeaderFields aField) const;
       
   922 
       
   923         /** 
       
   924         * Accessor
       
   925         * Get pointer to subject control rich text editor
       
   926         *
       
   927         * @return Pointer to subject control editor or
       
   928         *         NULL if subject control does not exist
       
   929         */
       
   930         inline CEikRichTextEditor* SubjectCtrlEditor() const;
       
   931 
       
   932         /** 
       
   933         * Accessor
       
   934         * Get pointer to body control rich text editor
       
   935         *
       
   936         * @return Pointer to body control editor or
       
   937         *         NULL if body control does not exist
       
   938         */
       
   939         inline CEikRichTextEditor* BodyCtrlEditor() const;
       
   940 
       
   941         /** 
       
   942         * Accessor
       
   943         * Get pointer to document instance
       
   944         *
       
   945         * @return Pointer to UniEditorDocument
       
   946         */
       
   947         inline CUniEditorDocument* Document() const;
       
   948 
       
   949         /**
       
   950         * Check if message header is empty
       
   951         *
       
   952         * @return ETrue, to field is empty,
       
   953         *         EFalse, to field has text
       
   954         */        
       
   955         inline TBool IsHeaderEmpty() const;
       
   956 
       
   957         /**
       
   958         * Check if message body is empty
       
   959         *
       
   960         * @return ETrue, message body empty,
       
   961         *         EFalse, message body not empty
       
   962         */        
       
   963         inline TBool IsBodyEmpty() const;
       
   964 
       
   965         /**
       
   966         * Accessor
       
   967         * Get reference to file session
       
   968         *
       
   969         * @return Reference to file session
       
   970         */        
       
   971         inline RFs& FsSession() const;
       
   972     
       
   973         /**
       
   974         * Implements AddHeaders command
       
   975         */
       
   976         void DoUserAddHeadersL();
       
   977         
       
   978         /**
       
   979         * Collects statistics about additional headers after user
       
   980         * has closed the multiselection list.
       
   981         * @param aIndexesOut list of (un)selected items. Values are TBool 
       
   982         * @param aVariation flags of variation
       
   983         * @param aNewSelectionFlags OUT contains headers, which user selected
       
   984         * @param aRemoveFlags OUT contains headers to be removed from UI
       
   985         * @param aRemovewarningFlags OUT contains headers to be removed from UI,
       
   986         *        which contains data
       
   987         * @param aAddFlags OUT contains headers to be added to the UI
       
   988         * 
       
   989         *        Every flag is a combination of EMmsFeatureSubject, EMmsFeatureCc
       
   990         *        and EMmsFeatureBcc of enum TMmsFeatures
       
   991         */
       
   992         void AddHeadersCollectStatisticsL( CArrayFix<TInt>& aIndexesOut, 
       
   993                                            TInt aVariation,
       
   994                                            TInt& aNewSelectionFlags,
       
   995                                            TInt& aRemoveFlags,
       
   996                                            TInt& aRemoveWarningFlags,
       
   997                                            TInt& aAddFlags) const;
       
   998 
       
   999 
       
  1000         /**
       
  1001         * Returns count of headers, which have flag set
       
  1002         * @param aFlags combination of flags of EMmsFeatureSubject, EMmsFeatureCc
       
  1003         * and EMmsFeatureBcc of enum TMmsFeatures
       
  1004         * @return count of headers
       
  1005         */
       
  1006         TInt AddHeadersCount( TInt aFlags ) const;
       
  1007         
       
  1008         /**
       
  1009         * Set scroll positions of editor controls to the end of
       
  1010         * of the text (address controls and body text if before image)
       
  1011         * or beginning of body text, if body text is after media object.
       
  1012         * This function is usually called after inserting media has been successful.
       
  1013         */
       
  1014         void SetCursorPositionsForInsertL();
       
  1015 
       
  1016         /**
       
  1017         * Add icon of priority to navi pane
       
  1018         */
       
  1019         void PriorityToNaviPane();
       
  1020         
       
  1021         /**
       
  1022         * Removes text from the current page
       
  1023         */
       
  1024         void RemoveCurrentTextObjectL();
       
  1025         
       
  1026         /**
       
  1027         * Checks body message type.
       
  1028         */
       
  1029         void CheckBodyForMessageTypeL();
       
  1030         
       
  1031         /**
       
  1032         * Checks header message type.
       
  1033         */
       
  1034         void CheckHeaderForMessageTypeL();
       
  1035         
       
  1036         /**
       
  1037         * Checks if the body content is SMS conformant
       
  1038         */
       
  1039         TBool IsBodySmsCompatibleL( TBool aInAutoMode = ETrue );
       
  1040         
       
  1041         /**
       
  1042         * Set iSmsSize and EUnicodeMode
       
  1043         */
       
  1044         void CheckSmsSizeAndUnicodeL();
       
  1045         
       
  1046         /**
       
  1047         * Checks if there are too many recipients and shows a note
       
  1048         * @return ETrue - if recipients OK otherwise EFalse
       
  1049         */
       
  1050         TBool CheckMaxRecipientsAndShowNoteL( TBool aSendCheck = EFalse );
       
  1051         
       
  1052         /**
       
  1053         * Returns SMS plugin
       
  1054         */
       
  1055         inline CUniEditorPlugin* SmsPlugin();
       
  1056         
       
  1057         /**
       
  1058         * Returns MMS plugin
       
  1059         */
       
  1060         inline CUniEditorPlugin* MmsPlugin();        
       
  1061         
       
  1062         /**
       
  1063         * Returns whether editor is fully launched or not.
       
  1064         */
       
  1065         inline TBool IsLaunched() const;
       
  1066         
       
  1067         /**
       
  1068         * Creates a string from integer
       
  1069         * If size is less than 10 kilobytes -> string with one decimal
       
  1070         * If size is 0 or 10k or more -> integer string
       
  1071         * 
       
  1072         * @since    3.1
       
  1073         * @param    aSizeInBytes    IN size to be converted to string
       
  1074         *                           in bytes
       
  1075         * @param    aSize   IN/OUT the size string
       
  1076         * @param    aInteger    OUT the integer part of the string
       
  1077         * @param    aFragment   OUT the decimal part of the string
       
  1078         */
       
  1079         void CreateMmsNaviSizeStringL( const TInt aSizeInBytes,
       
  1080                                        TDes& aSize,
       
  1081                                        TInt& aInteger,
       
  1082                                        TInt& aFragment );
       
  1083                 
       
  1084         /**
       
  1085         * Handles insert other file command from toolbar.
       
  1086         */
       
  1087         void DoToolbarInsertOtherL();
       
  1088         
       
  1089         /**
       
  1090         * Shows list query
       
  1091         */
       
  1092         TBool ShowListQueryL( TInt aResourceID, TInt& aSelectedIndex ) const;
       
  1093         
       
  1094         /**
       
  1095         * Hides popup note
       
  1096         */
       
  1097         void HidePopupNote();
       
  1098         
       
  1099         /**
       
  1100         * Shows popup note
       
  1101         */
       
  1102         void ShowPopupNoteL( TBool aMms );
       
  1103         
       
  1104         /**
       
  1105         * Plays focused item
       
  1106         */
       
  1107         void PlayFocusedItemL();
       
  1108         
       
  1109         /**
       
  1110         * Checks the size of the sms body and shows notes
       
  1111         * If aSendCheck is ETrue, checks only if the body exceeds the max size
       
  1112         */
       
  1113         void CheckMaxSmsSizeAndShowNoteL( TBool aSendCheck = EFalse );
       
  1114         
       
  1115         /**
       
  1116         * Sets or removes edwin control's maximum size 
       
  1117         */
       
  1118         void SetOrRemoveMaxSizeInEdwin();
       
  1119         
       
  1120         /**
       
  1121         * Checks the focused item and updates the middle softkey accordingly
       
  1122         */
       
  1123         void UpdateMiddleSoftkeyL();
       
  1124         
       
  1125         /**
       
  1126         * Sets input mode to address fields
       
  1127         */
       
  1128         void SetInputModeToAddressFields( TInt aInputMode );
       
  1129         
       
  1130         /**
       
  1131         * Handles user priority change command.
       
  1132         */
       
  1133         void DoEditMmsPriorityL();
       
  1134         
       
  1135         /**
       
  1136         * Creates radio button array
       
  1137         */
       
  1138         CAknIconArray* RadioButtonArrayL();
       
  1139         
       
  1140         /**
       
  1141         * Confirms SMS message sending in multiple parts
       
  1142         */
       
  1143         TBool ConfirmSmsSendInMultiplePartsL();
       
  1144         
       
  1145         /**
       
  1146         * Sets title icons sizes.
       
  1147         */
       
  1148         void SetTitleIconsSizeL();
       
  1149         
       
  1150         /**
       
  1151         * Tells if email addresses are accepted by the message
       
  1152         * For example locked sms + EmailOverSms or not-locked sms
       
  1153         */
       
  1154         TBool AcceptEmailAddresses();
       
  1155         
       
  1156         /**
       
  1157         * Tells if the message is locked in sms mode
       
  1158         * (either by restricted reply or temporarily in sending options)
       
  1159         */
       
  1160         TBool IsHardcodedSms();
       
  1161         
       
  1162         /**
       
  1163         * Resolves control id of the focused control after the launch.
       
  1164         */
       
  1165         TMsgControlId ResolveLaunchFocusedControlL();
       
  1166         
       
  1167         /**
       
  1168         * Sets correct message type locking to MTM
       
  1169         */
       
  1170         void SetMessageTypeLockingL();
       
  1171         
       
  1172         /**
       
  1173         * Activates input blocker properly.
       
  1174         *
       
  1175         * @param aActiveObjectToCancel Pointer to an active object that is called when 
       
  1176         *                              input blocker is cancelled. Can be NULL.
       
  1177         */
       
  1178         void ActivateInputBlockerL( CActive* aActiveObjectToCancel );
       
  1179         
       
  1180         /**
       
  1181         * Deactivates input blocker properly.
       
  1182         */
       
  1183         void DeactivateInputBlocker();
       
  1184         
       
  1185         /**
       
  1186         * Updates toolbar items status to correct one.
       
  1187         */
       
  1188         void UpdateToolbarL();
       
  1189         
       
  1190         /**
       
  1191         * Check whether message is locked to SMS mode and if
       
  1192         * it includes an attachment (i.e. vCard or vCal). Performs
       
  1193         * actions related to changes from in and out of this state.
       
  1194         */
       
  1195         void CheckLockedSmsWithAttaL();
       
  1196         
       
  1197         /**
       
  1198          * Sets fixed toolbar dimmed.
       
  1199          */
       
  1200         void SetFixedToolbarDimmed();
       
  1201         
       
  1202         /**
       
  1203          * Cleanup item for setting toolbar enabled.
       
  1204          */
       
  1205         static void EnableFixedToolbar( TAny* aAny );
       
  1206         
       
  1207           /**
       
  1208          * Cleanup item for Updating fixed toolbar Dimmed.
       
  1209          */
       
  1210          static void UpdateFixedToolbar( TAny* aAny );
       
  1211         /**
       
  1212          * Cleanup item for.Disabling SendKey
       
  1213          */
       
  1214         static void DisableSendKey( TAny* aAny );
       
  1215         
       
  1216         
       
  1217         
       
  1218         /**
       
  1219          * Creates fixed toolbar.
       
  1220          * 
       
  1221          * @param aDimmed ETrue if all toolbar items are wanted to be set dimmed.
       
  1222          *                EFalse otherwise.
       
  1223          */
       
  1224         void CreateFixedToolbarL( TBool aSetDimmed );
       
  1225         
       
  1226         /**
       
  1227         * Sets extension button to dimmed/undimmed.
       
  1228         * 
       
  1229         * @param aExtension Toolbar extension
       
  1230         * @param aButtonId Toolbar button id
       
  1231         * @param aDimmed ETrue/EFalse Dimmed/Undimmed.
       
  1232         */
       
  1233         void SetExtensionButtonDimmed( CAknToolbarExtension* aExtension, TInt aButtonId, TBool aDimmed );
       
  1234         
       
  1235         /**
       
  1236          * Enables toolbar.
       
  1237          */
       
  1238         void DoEnableFixedToolbar();
       
  1239         /**
       
  1240          * Update toolbar.
       
  1241          */
       
  1242         void DoUpdateFixedToolbar();
       
  1243                 
       
  1244         /**
       
  1245          * Handles enter key processing.
       
  1246          */
       
  1247         TBool DoEnterKeyL();
       
  1248         
       
  1249         /**
       
  1250         * Verifys and if valid to show SMS Size, then sends it to the PenInput server
       
  1251         */
       
  1252         void SmsMsgLenToPenInputL();
       
  1253         
       
  1254         /**
       
  1255         * Verifys whether Updated Message Length is required to send to Pen Input or not
       
  1256         */
       
  1257         TBool UpdateMsgLenToPenInput();
       
  1258         
       
  1259         /**
       
  1260          *     Notification from central repository
       
  1261          */
       
  1262        	void HandleNotifyInt( TUint32 aId, TInt aNewValue );
       
  1263 
       
  1264        	/**
       
  1265        	 *  Shows the Popup note in ITUT, when message size exceeds or deceeds
       
  1266        	 *  a certain limit or it changes from sms to mms and vice versa
       
  1267        	 */
       
  1268        	void ShowDiscreetPopUpL(const TDesC& aMessage);
       
  1269        	
       
  1270        	/**
       
  1271        	 * Is Inserted objects path are valid.
       
  1272        	 * All the media objects are availble in their respective paths. 
       
  1273        	 *
       
  1274        	 * @return ETrue, if all the media objects are available
       
  1275        	 * otherwise EFalse.
       
  1276        	 */
       
  1277        	TBool IsObjectsPathValidL() const;
       
  1278        	        
       
  1279     private:     // Enumerations
       
  1280 
       
  1281     enum TUniEditorFlags
       
  1282         {
       
  1283         EUseEstimatedSmilSize   = 0x0001,
       
  1284         ELaunchSuccessful       = 0x0002,
       
  1285         EShowGuidedConf         = 0x0004,
       
  1286         EEditorExiting          = 0x0008,
       
  1287         ERunAppShutterAtExit    = 0x0010,
       
  1288         EEditorClosing          = 0x0020,
       
  1289         EInsertAddsSlide        = 0x0040,   
       
  1290         EMaxRecipientShown      = 0x0080,   // max recipient note already shown
       
  1291         EShowInfoPopups         = 0x0100,   // show "message type changed" notes
       
  1292         EMaxSmsSizeNoteShown    = 0x0200,   // max size of sms note is shown
       
  1293         ESubjectOkInSms         = 0x0400,   // if defined subject is ok to show also in sms auto mode
       
  1294         EHideSizeCounter        = 0x0800,   // hide size counters in navipane
       
  1295         ESmsCounterShownLast    = 0x1000,    // last time a counter was updated it was sms counter
       
  1296         EShowSmsSentInManyParts = 0x2000,    // ask the query "message will be sent in x parts"
       
  1297         EDoNotUpdateTitlePane   = 0x4000,    // set while Objects view is open so the title pane remains ok if layout is changed
       
  1298         EShowSmsSizeNoteNextTime = 0x8000, // when max sms size reached -> show this note after next letter
       
  1299         EToolbarHidden          = 0x10000,
       
  1300         ELockedSmsWithAtta      = 0x20000,
       
  1301         EMsgEditInProgress      = 0x40000,
       
  1302         ESmsSizeWarningNoteShown = 0x80000, // Korean req: 415-5434
       
  1303         EHideMessageTypeOption   = 0x100000
       
  1304         };
       
  1305 
       
  1306     private:     // Data
       
  1307 
       
  1308         TInt                       iDisplaySize;       // Current msg size in navipane. Kb/Mb
       
  1309 
       
  1310         CAknLocalScreenClearer*    iScreenClearer;
       
  1311         CPeriodic*                 iIdle;
       
  1312 
       
  1313         CUniSmilModel*             iSmilModel;         // Fetch pointer from document at launch
       
  1314         CUniClientMtm*             iMtm;               // Fetch pointer from document at launch
       
  1315 
       
  1316         CMDXMLParser*              iParser;    // SMIL Parser fore presentation preview
       
  1317         CMDXMLDocument*            iDom;        // Dom created by parser for smil player
       
  1318 
       
  1319         CAknInputBlock*            iInputBlocker;    // AknInputBlocker
       
  1320 
       
  1321         CAknWaitDialog*            iWaitDialog;
       
  1322         TInt                       iWaitResId;
       
  1323 
       
  1324         TInt                       iOriginalSlide;
       
  1325         TInt                       iNextSlide;
       
  1326         TMsgControlId              iNextFocus;
       
  1327         CAknTitlePane*             iTitlePane;
       
  1328         HBufC*                     iTitleSms;
       
  1329         HBufC*                     iTitleMms;
       
  1330         TInt                       iSmsBodyLength;
       
  1331         TInt                       iSmsSubjectLength;
       
  1332         TInt                       iPrevSmsLength; 
       
  1333 
       
  1334         HBufC*                     iSmsLengthFormatBuffer;
       
  1335         HBufC*                     iMmsLengthFormatBuffer;
       
  1336 
       
  1337         CGulIcon*                  iIconSms;
       
  1338         CGulIcon*                  iIconMms;
       
  1339         
       
  1340         CAknInfoPopupNoteController* iPopupNote;
       
  1341         HBufC*                     iPopupChangedMmsBuffer;
       
  1342         HBufC*                     iPopupChangedSmsBuffer;
       
  1343 
       
  1344         CRepository*               iMuiuSettRepository;
       
  1345 
       
  1346         TUint32                    iEditorFlags;
       
  1347         TInt                       iSupportedFeatures;
       
  1348 
       
  1349         CUniSlideLoader*           iSlideLoader;
       
  1350 
       
  1351         CUniEditorHeader*          iHeader;
       
  1352         CUniEditorChangeSlideOperation* iChangeSlideOperation;
       
  1353         CUniEditorInsertOperation* iInsertOperation;
       
  1354         CUniEditorLaunchOperation* iLaunchOperation;
       
  1355         CUniEditorSaveOperation*   iSaveOperation;
       
  1356         CUniEditorSendOperation*   iSendOperation;
       
  1357         CUniEditorOperation*       iActiveOperation;
       
  1358         CUniEditorVCardOperation*  iVCardOperation;
       
  1359 
       
  1360         CMsgMediaInfo*             iInsertingMedia;
       
  1361         TMsgMediaType              iInsertingType;
       
  1362         
       
  1363         CActiveSchedulerWait       iWait;
       
  1364         
       
  1365         CAknNavigationControlContainer* iNaviPane;
       
  1366 
       
  1367         CDocumentHandler*           iDocHandler;
       
  1368         TInt                        iMskResId;
       
  1369         
       
  1370         // Used to connect pointer down and up events to correct control. Not owned.
       
  1371         CMsgBaseControl*            iFocusedControl;
       
  1372         CMsgBaseControl*            iStoredBodyControl;
       
  1373         
       
  1374         CAknToolbar*                iFixedToolbar;
       
  1375         
       
  1376         RPeninputServer             iPeninputServer;
       
  1377         CCenRepNotifyHandler*       iNotifyHandler;
       
  1378         CRepository*                iInputTxtLangRepository;
       
  1379         TBool                       iMsgLenToVKB;
       
  1380         
       
  1381         //Turkish SMS-PREQ2265 specific...
       
  1382         TInt                        iNumOfPDUs;
       
  1383         TInt                        iCharsLeft;
       
  1384         TBool                       iNLTFeatureSupport;
       
  1385 		HBufC*                      iPrevBuffer;
       
  1386         TBool						iSettingsChanged;    
       
  1387         
       
  1388         //Korean Req: 415-5434
       
  1389         HBufC*                     iPopupSmsSizeAboveLimitBuffer;
       
  1390         HBufC*                     iPopupSmsSizeBelowLimitBuffer;
       
  1391 		TBool                      iFinalizeLaunchL;
       
  1392         // Own: For long tap detecting
       
  1393         CAknLongTapDetector* iLongTapDetector;
       
  1394 
       
  1395         // For long tap handling
       
  1396         TBool iTapConsumed;     
       
  1397       /** 
       
  1398       * Contact image selection stylus popup menu 
       
  1399       * Own. 
       
  1400       */  
       
  1401     	CAknStylusPopUpMenu* iEmbeddedObjectStylusPopup;
       
  1402 		// sendui+jepg optimization changes
       
  1403     	TBool  iOptimizedFlow;
       
  1404         //For avoiding flickering when menu key/ To Control is pressed with VKB On 
       
  1405         CAknLocalScreenClearer* iScreenClearerPartialVKBOn;
       
  1406     };
       
  1407 
       
  1408 #include "UniEditorAppUi.inl"
       
  1409 
       
  1410 #endif      //  _UniEditorAPPUI_H
       
  1411 
       
  1412 // End of File
       
  1413