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