mobilemessaging/unieditor/application/inc/UniEditorDocument.h
author hgs
Wed, 03 Nov 2010 22:55:44 +0530
changeset 80 8b14b30db193
parent 79 2981cb3aa489
permissions -rw-r--r--
201044_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   CUniDocument class definition.      
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef __UNIEDITORDOCUMENT_H
hgs
parents:
diff changeset
    21
#define __UNIEDITORDOCUMENT_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
//  INCLUDES
hgs
parents:
diff changeset
    24
#include <msvapi.h>                     // CMsvEntry
hgs
parents:
diff changeset
    25
#include <MsgEditorDocument.h>          // CMsgEditorDocument
hgs
parents:
diff changeset
    26
#include <mmsvattachmentmanager.h>
hgs
parents:
diff changeset
    27
#include <mmsvattachmentmanagersync.h>
hgs
parents:
diff changeset
    28
#include <gsmuelem.h>
hgs
parents:
diff changeset
    29
#include <eikenv.h>
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
#include "UniEditorConsts.h"
hgs
parents:
diff changeset
    32
#include "UniMtmUi.h"                   //  IsUpload()
hgs
parents:
diff changeset
    33
#include "UniClientMtm.h"
hgs
parents:
diff changeset
    34
#include "unidatamodel.h"
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// CONSTANTS
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
// MACROS
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
// DATA TYPES
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
enum TUniMessageType
hgs
parents:
diff changeset
    43
    {
hgs
parents:
diff changeset
    44
    EUniReadOnly = 0,
hgs
parents:
diff changeset
    45
    EUniNewMessage,
hgs
parents:
diff changeset
    46
    EUniOpenFromDraft,
hgs
parents:
diff changeset
    47
    EUniReply,
hgs
parents:
diff changeset
    48
    EUniForward,
hgs
parents:
diff changeset
    49
    EUniSendUi
hgs
parents:
diff changeset
    50
    };
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
// Current state where the message is.
hgs
parents:
diff changeset
    53
enum TUniState
hgs
parents:
diff changeset
    54
    {
hgs
parents:
diff changeset
    55
    EUniSms = 1,
hgs
parents:
diff changeset
    56
    EUniMms = 2
hgs
parents:
diff changeset
    57
    };
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
//The order of the save types is significant!
hgs
parents:
diff changeset
    60
//Don't mess!
hgs
parents:
diff changeset
    61
enum TUniSaveType
hgs
parents:
diff changeset
    62
    {
hgs
parents:
diff changeset
    63
    ERegularSave = 0,        // Page change
hgs
parents:
diff changeset
    64
    EClosingSave,        // User save to draft
hgs
parents:
diff changeset
    65
    ESendingSave         // Before send ie. text conversion is made (paragraph sep -> linefeed)
hgs
parents:
diff changeset
    66
    };
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
// FUNCTION PROTOTYPES
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
class CUniClientMtm;
hgs
parents:
diff changeset
    73
class CUniMtmUi;
hgs
parents:
diff changeset
    74
class CUniEditorPlugin;
hgs
parents:
diff changeset
    75
class CUniDataModel;
hgs
parents:
diff changeset
    76
class CMsvMimeHeaders;
hgs
parents:
diff changeset
    77
class CMsvAttachment;
hgs
parents:
diff changeset
    78
class CCnvCharacterSetConverter;
hgs
parents:
diff changeset
    79
class CUniEditorObjectsModelObserver;
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
// CLASS DECLARATION
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
/**
hgs
parents:
diff changeset
    84
* CUniEditorDocument. The document is part of the Symbian OS application framework.
hgs
parents:
diff changeset
    85
*
hgs
parents:
diff changeset
    86
* @since 3.2
hgs
parents:
diff changeset
    87
*/
hgs
parents:
diff changeset
    88
class CUniEditorDocument : public CMsgEditorDocument
hgs
parents:
diff changeset
    89
    {
hgs
parents:
diff changeset
    90
    public:  // Constructors and destructor
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
        /**
hgs
parents:
diff changeset
    93
        * C++ constructor
hgs
parents:
diff changeset
    94
        *
hgs
parents:
diff changeset
    95
        * @param aApp   Reference to application instance
hgs
parents:
diff changeset
    96
        */
hgs
parents:
diff changeset
    97
        CUniEditorDocument( CEikApplication& aApp, CCoeEnv& aCoeEnv );
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
        /**
hgs
parents:
diff changeset
   100
        * Factory function to create this object
hgs
parents:
diff changeset
   101
        *
hgs
parents:
diff changeset
   102
        * @param aApp   Reference to application instance
hgs
parents:
diff changeset
   103
        */
hgs
parents:
diff changeset
   104
        static CUniEditorDocument* NewL( CEikApplication& aApp,
hgs
parents:
diff changeset
   105
                                         CCoeEnv& aCoeEnv );
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
        /**
hgs
parents:
diff changeset
   108
        * Destructor.
hgs
parents:
diff changeset
   109
        */
hgs
parents:
diff changeset
   110
        virtual ~CUniEditorDocument();
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
    public:
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
        /**
hgs
parents:
diff changeset
   115
        * MessageSize
hgs
parents:
diff changeset
   116
        * Calculates message size according to TS 23.140 v5.5.0.
hgs
parents:
diff changeset
   117
        * @param aSmilEstimate  if ETrue, uses estimated SMIL size (from CUniSmilModel)
hgs
parents:
diff changeset
   118
        *                       if EFalse, uses SMIL file size
hgs
parents:
diff changeset
   119
        * @return size in bytes
hgs
parents:
diff changeset
   120
        */
hgs
parents:
diff changeset
   121
        TInt MessageSize( TBool aSmilEstimate = EFalse );
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
        /**
hgs
parents:
diff changeset
   124
        * Safely deletes atta from given message (from store & smilmodel)
hgs
parents:
diff changeset
   125
        * This should be called only from Uni Objects view.
hgs
parents:
diff changeset
   126
        *
hgs
parents:
diff changeset
   127
        * @param aSlideNum
hgs
parents:
diff changeset
   128
        * @param aObject
hgs
parents:
diff changeset
   129
        * @param aAttachmentObject
hgs
parents:
diff changeset
   130
        */
hgs
parents:
diff changeset
   131
        void DeleteAttachmentL( TInt aSlideNum, 
hgs
parents:
diff changeset
   132
                                CUniObject* aObject, 
hgs
parents:
diff changeset
   133
                                TBool aAttachmentObject );
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
        /**
hgs
parents:
diff changeset
   136
        * Set whether message is SendAs, Forward, Reply or Open from Draft.
hgs
parents:
diff changeset
   137
        * Function determines it from launchflags & entry flags.
hgs
parents:
diff changeset
   138
        */
hgs
parents:
diff changeset
   139
        void SetMessageType();
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
        /**
hgs
parents:
diff changeset
   142
        * Launches plugings if they are not launched yet
hgs
parents:
diff changeset
   143
        */
hgs
parents:
diff changeset
   144
        void LaunchPlugings();
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
        /**
hgs
parents:
diff changeset
   147
        * Returns the overall state of the message
hgs
parents:
diff changeset
   148
        */
hgs
parents:
diff changeset
   149
        TUniState UniState() const;
hgs
parents:
diff changeset
   150
        
hgs
parents:
diff changeset
   151
        /**
hgs
parents:
diff changeset
   152
        * Creates correct character converter.
hgs
parents:
diff changeset
   153
        */
hgs
parents:
diff changeset
   154
        void CreateCharConverterL( TUniMessageCharSetSupport aMode );
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
        /**
hgs
parents:
diff changeset
   157
        * Count of the SD objects in the message
hgs
parents:
diff changeset
   158
        */
hgs
parents:
diff changeset
   159
        TInt SuperDistributableObjectCount() const;   
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
        /**
hgs
parents:
diff changeset
   162
        * From CMsgEditorDocument 
hgs
parents:
diff changeset
   163
        * Returns default folder for new messages.
hgs
parents:
diff changeset
   164
        * @return ID of the Drafts folder.
hgs
parents:
diff changeset
   165
        */
hgs
parents:
diff changeset
   166
        TMsvId DefaultMsgFolder() const;
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
        /**
hgs
parents:
diff changeset
   169
        * From CMsgEditorDocument
hgs
parents:
diff changeset
   170
        * Returns default message service used by application
hgs
parents:
diff changeset
   171
        * @return TMsvId KMsvLocalServiceIndexEntryId.
hgs
parents:
diff changeset
   172
        */
hgs
parents:
diff changeset
   173
        TMsvId DefaultMsgService() const;
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
        /**
hgs
parents:
diff changeset
   176
        * From CMsgEditorDocument
hgs
parents:
diff changeset
   177
        * Creates new message.
hgs
parents:
diff changeset
   178
        * A new message of type KUniMtmType is created
hgs
parents:
diff changeset
   179
        * in a destination folder.
hgs
parents:
diff changeset
   180
        * Calls CreateNewL(TMsvId aServiceType, TMsvId aDestination,
hgs
parents:
diff changeset
   181
        *                  TInt aTypeList).
hgs
parents:
diff changeset
   182
        * @param aService service used for sending message 
hgs
parents:
diff changeset
   183
        * @param aDestFolder folder in which message will be saved eg.
hgs
parents:
diff changeset
   184
        *                    KMsvDraftEntryIdValue
hgs
parents:
diff changeset
   185
        * @return New message operation.
hgs
parents:
diff changeset
   186
        */
hgs
parents:
diff changeset
   187
        TMsvId CreateNewL(TMsvId aService, TMsvId aDestFolder);
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
        /**
hgs
parents:
diff changeset
   190
        * From CMsgEditorDocument
hgs
parents:
diff changeset
   191
        * Called after entry is changed by BaseEditor SetEntry Function.
hgs
parents:
diff changeset
   192
        * From MsgEditorDocument
hgs
parents:
diff changeset
   193
        */
hgs
parents:
diff changeset
   194
        void EntryChangedL();
hgs
parents:
diff changeset
   195
hgs
parents:
diff changeset
   196
        /**
hgs
parents:
diff changeset
   197
        * From CMsgEditorDocument 
hgs
parents:
diff changeset
   198
        * Checks the mtm type of the message.
hgs
parents:
diff changeset
   199
        * If the mtm type is not UniMtm, does the specific msg type to uni mode conversion
hgs
parents:
diff changeset
   200
        */
hgs
parents:
diff changeset
   201
        TMsvId PrepareContextL( TMsvId aContext );
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
        /**
hgs
parents:
diff changeset
   204
        * From CMsgEditorDocument 
hgs
parents:
diff changeset
   205
        * In case of a reply or forward, calls DoReplyForwardL to create entry
hgs
parents:
diff changeset
   206
        */
hgs
parents:
diff changeset
   207
        TMsvId ChangeContextL( const TEditorParameters& aParameters );
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
        /**
hgs
parents:
diff changeset
   210
        * From CMsgEditorDocument 
hgs
parents:
diff changeset
   211
        * Called by ChangeContextL to create the plugin and do the conversion
hgs
parents:
diff changeset
   212
        */
hgs
parents:
diff changeset
   213
        TMsvId DoReplyForwardL( TBool aReply,
hgs
parents:
diff changeset
   214
                                TMsvId aSrc,
hgs
parents:
diff changeset
   215
                                TMsvId aDest,
hgs
parents:
diff changeset
   216
                                TMsvPartList aParts );
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
        /*
hgs
parents:
diff changeset
   219
        * From CMsgEditorDocument 
hgs
parents:
diff changeset
   220
        * Accessor (Overrides baseeditor)
hgs
parents:
diff changeset
   221
        * Returns CUniClientMtm reference correctly casted from CBaseMtm
hgs
parents:
diff changeset
   222
        * @param  None
hgs
parents:
diff changeset
   223
        * @return Reference to documents CUniClientMtm
hgs
parents:
diff changeset
   224
        */
hgs
parents:
diff changeset
   225
        CUniClientMtm& Mtm();
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
        /*
hgs
parents:
diff changeset
   228
        * From CMsgEditorDocument 
hgs
parents:
diff changeset
   229
        * Accessor (Overrides baseeditor)
hgs
parents:
diff changeset
   230
        * Returns CUniMtmUi reference correctly casted from CBaseMtmUi
hgs
parents:
diff changeset
   231
        * @param  None
hgs
parents:
diff changeset
   232
        * @return Reference to documents CUniMtmUi
hgs
parents:
diff changeset
   233
        */
hgs
parents:
diff changeset
   234
        CUniMtmUi& MtmUiL();
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
        /**
hgs
parents:
diff changeset
   237
        * From MMsgAttachmentModelObserver
hgs
parents:
diff changeset
   238
        */
hgs
parents:
diff changeset
   239
        RFile GetAttachmentFileL( TMsvAttachmentId aId );
hgs
parents:
diff changeset
   240
    
hgs
parents:
diff changeset
   241
        /**
hgs
parents:
diff changeset
   242
        * Returns number of non conformant attachments at this moment.
hgs
parents:
diff changeset
   243
        * The result may differ compared to the load time, if images
hgs
parents:
diff changeset
   244
        * are processed and inserted images conforms now.
hgs
parents:
diff changeset
   245
        * @return count of non-conformant objects
hgs
parents:
diff changeset
   246
        */
hgs
parents:
diff changeset
   247
        TInt UpdatedNonConformantCount() const;    
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
        /**
hgs
parents:
diff changeset
   250
        * @return the max size of the image
hgs
parents:
diff changeset
   251
        */
hgs
parents:
diff changeset
   252
        TSize MaxImageSize() const;
hgs
parents:
diff changeset
   253
hgs
parents:
diff changeset
   254
        /**
hgs
parents:
diff changeset
   255
        * @return the alternate encoding type based on input language id.
hgs
parents:
diff changeset
   256
        * Turkish SMS-PREQ2265 specific
hgs
parents:
diff changeset
   257
        */      
hgs
parents:
diff changeset
   258
        TSmsEncoding GetLanguageSpecificAltEncodingType(TInt aLangId);
hgs
parents:
diff changeset
   259
        
hgs
parents:
diff changeset
   260
    public: // inlines
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
        /**
hgs
parents:
diff changeset
   263
        * Current slide of the model where document is indexing.
hgs
parents:
diff changeset
   264
        * @return Index of the current slide.
hgs
parents:
diff changeset
   265
        */
hgs
parents:
diff changeset
   266
        inline TInt CurrentSlide();
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
        /**
hgs
parents:
diff changeset
   269
        * Sets current slide of the message.
hgs
parents:
diff changeset
   270
        * @param aSlideNum  - Index of the slide.
hgs
parents:
diff changeset
   271
        */
hgs
parents:
diff changeset
   272
        inline void SetCurrentSlide( TInt aSlideNum );
hgs
parents:
diff changeset
   273
hgs
parents:
diff changeset
   274
        /**
hgs
parents:
diff changeset
   275
        * Saved
hgs
parents:
diff changeset
   276
        * Accessor
hgs
parents:
diff changeset
   277
        * Queries whether message is saved.
hgs
parents:
diff changeset
   278
        * @param None
hgs
parents:
diff changeset
   279
        * @return ETrue,  User has already saved message (in this or some previous session)
hgs
parents:
diff changeset
   280
        *                 ie InPreparation flag is not set
hgs
parents:
diff changeset
   281
        *         EFalse, Message has not been saved by user yet.
hgs
parents:
diff changeset
   282
        */
hgs
parents:
diff changeset
   283
        inline TBool Saved() const;
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
        /**
hgs
parents:
diff changeset
   286
        * Messagetype accessor
hgs
parents:
diff changeset
   287
        *
hgs
parents:
diff changeset
   288
        * @return Message type
hgs
parents:
diff changeset
   289
        */
hgs
parents:
diff changeset
   290
        inline TUniMessageType MessageType() const;
hgs
parents:
diff changeset
   291
hgs
parents:
diff changeset
   292
        /*
hgs
parents:
diff changeset
   293
        * Mutator
hgs
parents:
diff changeset
   294
        * Set the body modified flag.
hgs
parents:
diff changeset
   295
        *
hgs
parents:
diff changeset
   296
        * @param aModified
hgs
parents:
diff changeset
   297
        */
hgs
parents:
diff changeset
   298
        inline void SetBodyModified( TBool aModified );
hgs
parents:
diff changeset
   299
hgs
parents:
diff changeset
   300
        /*
hgs
parents:
diff changeset
   301
        * Accessor
hgs
parents:
diff changeset
   302
        * Get the body modified flag.
hgs
parents:
diff changeset
   303
        *
hgs
parents:
diff changeset
   304
        * @return iBodyModified flag
hgs
parents:
diff changeset
   305
        */
hgs
parents:
diff changeset
   306
        inline TBool BodyModified() const;
hgs
parents:
diff changeset
   307
hgs
parents:
diff changeset
   308
        /*
hgs
parents:
diff changeset
   309
        * Mutator
hgs
parents:
diff changeset
   310
        * Set the header modified flag.
hgs
parents:
diff changeset
   311
        * @param aModified
hgs
parents:
diff changeset
   312
        */
hgs
parents:
diff changeset
   313
        inline void SetHeaderModified( TBool aModified );
hgs
parents:
diff changeset
   314
hgs
parents:
diff changeset
   315
        /*
hgs
parents:
diff changeset
   316
        * Accessor
hgs
parents:
diff changeset
   317
        * Get the header modified flag.
hgs
parents:
diff changeset
   318
        *
hgs
parents:
diff changeset
   319
        * @return iHeaderModified flag
hgs
parents:
diff changeset
   320
        */
hgs
parents:
diff changeset
   321
        inline TBool HeaderModified() const;
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
        /*
hgs
parents:
diff changeset
   324
        * Accessor
hgs
parents:
diff changeset
   325
        *
hgs
parents:
diff changeset
   326
        * @return ETrue if either iBodyModified or iHeaderModified
hgs
parents:
diff changeset
   327
        *         flag is ETrue.
hgs
parents:
diff changeset
   328
        */
hgs
parents:
diff changeset
   329
        inline TBool Modified() const;
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
        /*
hgs
parents:
diff changeset
   332
        * Accessor
hgs
parents:
diff changeset
   333
        *
hgs
parents:
diff changeset
   334
        * @return creation mode
hgs
parents:
diff changeset
   335
        */
hgs
parents:
diff changeset
   336
        inline TInt CreationMode() const;
hgs
parents:
diff changeset
   337
hgs
parents:
diff changeset
   338
        /*
hgs
parents:
diff changeset
   339
        * Mutator. Use this to override the current
hgs
parents:
diff changeset
   340
        * creation mode in MMS Settings.
hgs
parents:
diff changeset
   341
        *
hgs
parents:
diff changeset
   342
        * Notice: This does not automatically update the
hgs
parents:
diff changeset
   343
        *         creation mode of "MsgMediaResolver". It
hgs
parents:
diff changeset
   344
        *         should be done explicitly.
hgs
parents:
diff changeset
   345
        *
hgs
parents:
diff changeset
   346
        * @param creation mode
hgs
parents:
diff changeset
   347
        */
hgs
parents:
diff changeset
   348
        inline void SetCreationMode( TInt aCreationMode );
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
        /*
hgs
parents:
diff changeset
   351
        * Accessor
hgs
parents:
diff changeset
   352
        *
hgs
parents:
diff changeset
   353
        * @return ETrue if creation mode is user changeable
hgs
parents:
diff changeset
   354
        */
hgs
parents:
diff changeset
   355
        inline TBool CreationModeUserChangeable() const;
hgs
parents:
diff changeset
   356
        
hgs
parents:
diff changeset
   357
        /*
hgs
parents:
diff changeset
   358
        * Accessor
hgs
parents:
diff changeset
   359
        *
hgs
parents:
diff changeset
   360
        * @return size of "addresses"
hgs
parents:
diff changeset
   361
        */
hgs
parents:
diff changeset
   362
        inline TInt AddressSize() const;
hgs
parents:
diff changeset
   363
hgs
parents:
diff changeset
   364
        /*
hgs
parents:
diff changeset
   365
        * Mutator. 
hgs
parents:
diff changeset
   366
        *
hgs
parents:
diff changeset
   367
        * @param size of "addresses"
hgs
parents:
diff changeset
   368
        */
hgs
parents:
diff changeset
   369
        inline void SetAddressSize( TInt aAddressSize );
hgs
parents:
diff changeset
   370
hgs
parents:
diff changeset
   371
        /*
hgs
parents:
diff changeset
   372
        * Accessor
hgs
parents:
diff changeset
   373
        *
hgs
parents:
diff changeset
   374
        * @return size of "subject"
hgs
parents:
diff changeset
   375
        */
hgs
parents:
diff changeset
   376
        inline TInt SubjectSize() const;
hgs
parents:
diff changeset
   377
hgs
parents:
diff changeset
   378
        /*
hgs
parents:
diff changeset
   379
        * Mutator. 
hgs
parents:
diff changeset
   380
        *
hgs
parents:
diff changeset
   381
        * @param size of "subject"
hgs
parents:
diff changeset
   382
        */
hgs
parents:
diff changeset
   383
        inline void SetSubjectSize( TInt aSubjectSize );
hgs
parents:
diff changeset
   384
hgs
parents:
diff changeset
   385
        /*
hgs
parents:
diff changeset
   386
        * Accessor
hgs
parents:
diff changeset
   387
        *
hgs
parents:
diff changeset
   388
        * @return maximum message size in bytes
hgs
parents:
diff changeset
   389
        */
hgs
parents:
diff changeset
   390
        inline TUint MaxMessageSize() const;
hgs
parents:
diff changeset
   391
        
hgs
parents:
diff changeset
   392
        /**
hgs
parents:
diff changeset
   393
        */
hgs
parents:
diff changeset
   394
        inline TInt NonConformantCount() const;
hgs
parents:
diff changeset
   395
        
hgs
parents:
diff changeset
   396
        /**
hgs
parents:
diff changeset
   397
        * Returns previous save type
hgs
parents:
diff changeset
   398
        */
hgs
parents:
diff changeset
   399
        inline TUniSaveType PrevSaveType() const;        
hgs
parents:
diff changeset
   400
        
hgs
parents:
diff changeset
   401
        /**
hgs
parents:
diff changeset
   402
        * Sets previous save type
hgs
parents:
diff changeset
   403
        */
hgs
parents:
diff changeset
   404
        inline void SetPrevSaveType( TUniSaveType aPrevSaveType );
hgs
parents:
diff changeset
   405
        
hgs
parents:
diff changeset
   406
        /**
hgs
parents:
diff changeset
   407
        * Returns/sets the state of the message body (body + subject)
hgs
parents:
diff changeset
   408
        */
hgs
parents:
diff changeset
   409
        inline TUniState UniBodyState() const;
hgs
parents:
diff changeset
   410
        inline void SetBodyUniState( TUniState aState );        
hgs
parents:
diff changeset
   411
hgs
parents:
diff changeset
   412
        /**
hgs
parents:
diff changeset
   413
        * Returns/sets the state of the header part (recipient fields)
hgs
parents:
diff changeset
   414
        */
hgs
parents:
diff changeset
   415
        inline TUniState UniHeaderState() const;
hgs
parents:
diff changeset
   416
        inline void SetHeaderUniState( TUniState aState );        
hgs
parents:
diff changeset
   417
hgs
parents:
diff changeset
   418
        /**
hgs
parents:
diff changeset
   419
        * Returns pointer to message plugins
hgs
parents:
diff changeset
   420
        */
hgs
parents:
diff changeset
   421
        inline CUniEditorPlugin* SmsPlugin();
hgs
parents:
diff changeset
   422
        inline CUniEditorPlugin* MmsPlugin();
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
        /**
hgs
parents:
diff changeset
   425
        * Pointer to datamodel
hgs
parents:
diff changeset
   426
        */
hgs
parents:
diff changeset
   427
        inline CUniDataModel* DataModel();
hgs
parents:
diff changeset
   428
hgs
parents:
diff changeset
   429
        /**
hgs
parents:
diff changeset
   430
        * Max number of MMS recipients
hgs
parents:
diff changeset
   431
        */
hgs
parents:
diff changeset
   432
        inline TInt MaxMmsRecipients() const;
hgs
parents:
diff changeset
   433
hgs
parents:
diff changeset
   434
        /**
hgs
parents:
diff changeset
   435
        * Max number of SMS recipients
hgs
parents:
diff changeset
   436
        */
hgs
parents:
diff changeset
   437
        inline TInt MaxSmsRecipients() const;
hgs
parents:
diff changeset
   438
hgs
parents:
diff changeset
   439
        /**
hgs
parents:
diff changeset
   440
        * Max number of SMS sub messages
hgs
parents:
diff changeset
   441
        * After this number the message will be changed to MMS
hgs
parents:
diff changeset
   442
        */
hgs
parents:
diff changeset
   443
        inline TInt MaxSmsParts() const;
hgs
parents:
diff changeset
   444
hgs
parents:
diff changeset
   445
        /**
hgs
parents:
diff changeset
   446
        * Abs. max number of SMS sub messages even in hardcoded mode
hgs
parents:
diff changeset
   447
        */
hgs
parents:
diff changeset
   448
        inline TInt AbsoluteMaxSmsParts() const;
hgs
parents:
diff changeset
   449
hgs
parents:
diff changeset
   450
        /**
hgs
parents:
diff changeset
   451
        * Is Email Over Sms feature supported
hgs
parents:
diff changeset
   452
        */
hgs
parents:
diff changeset
   453
        inline TBool EmailOverSmsSupported() const;
hgs
parents:
diff changeset
   454
hgs
parents:
diff changeset
   455
        /**
hgs
parents:
diff changeset
   456
        * Character converter functions
hgs
parents:
diff changeset
   457
        */
hgs
parents:
diff changeset
   458
        inline CCnvCharacterSetConverter* CharConverter();
hgs
parents:
diff changeset
   459
        
hgs
parents:
diff changeset
   460
        /**
hgs
parents:
diff changeset
   461
        * Character set support.
hgs
parents:
diff changeset
   462
        */
hgs
parents:
diff changeset
   463
        inline TUniMessageCharSetSupport CharSetSupport();
hgs
parents:
diff changeset
   464
hgs
parents:
diff changeset
   465
        /**
hgs
parents:
diff changeset
   466
        * Returns the CSP bits of the SIM card
hgs
parents:
diff changeset
   467
        */
hgs
parents:
diff changeset
   468
        inline TInt CSPBits() const;
hgs
parents:
diff changeset
   469
        
hgs
parents:
diff changeset
   470
        /**
hgs
parents:
diff changeset
   471
        * Returns Eikon environment pointer.
hgs
parents:
diff changeset
   472
        */
hgs
parents:
diff changeset
   473
        inline CEikonEnv* EikonEnv(); 
hgs
parents:
diff changeset
   474
        
hgs
parents:
diff changeset
   475
        /**
hgs
parents:
diff changeset
   476
        * Abs. max number of characters in SMS message. 
hgs
parents:
diff changeset
   477
        * If set will overdrive maximum number of SMS sub messages.
hgs
parents:
diff changeset
   478
        *
hgs
parents:
diff changeset
   479
        * @return -1 if not specified. Otherwise maximum character limit.
hgs
parents:
diff changeset
   480
        */
hgs
parents:
diff changeset
   481
        inline TInt AbsoluteMaxSmsCharacters() const;
hgs
parents:
diff changeset
   482
        
hgs
parents:
diff changeset
   483
        /**
hgs
parents:
diff changeset
   484
        * Set unicode character mode enabled or disabled.
hgs
parents:
diff changeset
   485
        *
hgs
parents:
diff changeset
   486
        * @param aEnabled Enabled if ETrue. Otherwise disabled.
hgs
parents:
diff changeset
   487
        */
hgs
parents:
diff changeset
   488
        inline void SetUnicodeCharacterMode( TBool aEnabled );
hgs
parents:
diff changeset
   489
        
hgs
parents:
diff changeset
   490
        /**
hgs
parents:
diff changeset
   491
        * Return whether unicode character mode is enabled or not.
hgs
parents:
diff changeset
   492
        *
hgs
parents:
diff changeset
   493
        * @return ETrue if enabled. Otherwise EFalse.
hgs
parents:
diff changeset
   494
        */
hgs
parents:
diff changeset
   495
        inline TBool UnicodeCharacterMode() const;        
hgs
parents:
diff changeset
   496
        
hgs
parents:
diff changeset
   497
        /**
hgs
parents:
diff changeset
   498
        * Returns the currently applicable character limits for
hgs
parents:
diff changeset
   499
        * single SMS part and for concatenated SMS parts.
hgs
parents:
diff changeset
   500
        *
hgs
parents:
diff changeset
   501
        * @param aSinglePartLength On return contains the character limit 
hgs
parents:
diff changeset
   502
        *                          for single SMS part
hgs
parents:
diff changeset
   503
        * @param aConcatenatedPartLength On return contains the character limit of 
hgs
parents:
diff changeset
   504
        *                                single part on multiparted SMS message.
hgs
parents:
diff changeset
   505
        */
hgs
parents:
diff changeset
   506
        void SmsCharacterLimits( TInt& aSinglePartLength, TInt& aConcatenatedPartLength ) const;
hgs
parents:
diff changeset
   507
hgs
parents:
diff changeset
   508
        /**
hgs
parents:
diff changeset
   509
         * Returns current alternate encoding type
hgs
parents:
diff changeset
   510
         * Turkish SMS-PREQ2265 specific
hgs
parents:
diff changeset
   511
         */
hgs
parents:
diff changeset
   512
        inline TSmsEncoding AlternativeEncodingType();
hgs
parents:
diff changeset
   513
hgs
parents:
diff changeset
   514
        /**
hgs
parents:
diff changeset
   515
         * Sets the current alternate encoding type to input value
hgs
parents:
diff changeset
   516
         * Turkish SMS-PREQ2265 specific
hgs
parents:
diff changeset
   517
         */
hgs
parents:
diff changeset
   518
        inline void SetAlternativeEncodingType(TSmsEncoding aAlternateEncoding);
hgs
parents:
diff changeset
   519
hgs
parents:
diff changeset
   520
        /**
hgs
parents:
diff changeset
   521
         * Returns number of bytes to show warning notification when SMS size sweeps the boundary value
hgs
parents:
diff changeset
   522
         * Korean operator req : 415-5434
hgs
parents:
diff changeset
   523
         */
hgs
parents:
diff changeset
   524
        inline TInt SmsSizeWarningBytes();
hgs
parents:
diff changeset
   525
        
hgs
parents:
diff changeset
   526
        /* Set the Attachemnt flag ELaunchFromCvAttachment */
hgs
parents:
diff changeset
   527
        inline  void SetLaunchFromCvAttachment(TBool); 
hgs
parents:
diff changeset
   528
        
hgs
parents:
diff changeset
   529
         /* Verify is the  flag ELaunchFromCvAttachment is set */
hgs
parents:
diff changeset
   530
        inline TBool IsLaunchFromCvAttachment() ;
hgs
parents:
diff changeset
   531
    private:
hgs
parents:
diff changeset
   532
hgs
parents:
diff changeset
   533
        /**
hgs
parents:
diff changeset
   534
        * ConstructL
hgs
parents:
diff changeset
   535
        * 2nd phase constructor.
hgs
parents:
diff changeset
   536
        */
hgs
parents:
diff changeset
   537
        void ConstructL();
hgs
parents:
diff changeset
   538
        
hgs
parents:
diff changeset
   539
        /**
hgs
parents:
diff changeset
   540
        * Creates a new UniAppUi
hgs
parents:
diff changeset
   541
        *
hgs
parents:
diff changeset
   542
        * @return a pointer to CUniAppUi
hgs
parents:
diff changeset
   543
        */
hgs
parents:
diff changeset
   544
        CEikAppUi* CreateAppUiL();
hgs
parents:
diff changeset
   545
        
hgs
parents:
diff changeset
   546
        /**
hgs
parents:
diff changeset
   547
         * From MsgEditorDocument. See MsgEditorDocument.h
hgs
parents:
diff changeset
   548
         */
hgs
parents:
diff changeset
   549
        CMsgAttachmentModel* CreateNewAttachmentModelL( TBool aReadOnly );
hgs
parents:
diff changeset
   550
hgs
parents:
diff changeset
   551
    private:  // data
hgs
parents:
diff changeset
   552
        
hgs
parents:
diff changeset
   553
        enum TUniDocumentFlags
hgs
parents:
diff changeset
   554
            {
hgs
parents:
diff changeset
   555
            EUniDocumentHeaderModified = 0x1,
hgs
parents:
diff changeset
   556
            EUniDocumentBodyModified = 0x2,
hgs
parents:
diff changeset
   557
            EUniDocumentCreationModeUserChangeable = 0x4,
hgs
parents:
diff changeset
   558
            EUniDocumentEMailOverSms = 0x8,
hgs
parents:
diff changeset
   559
            EUniDocumentRestrictedReplySms = 0x10,
hgs
parents:
diff changeset
   560
            EUniDocumentRestrictedReplyMms = 0x20,
hgs
parents:
diff changeset
   561
            EUniDocumentCSPBitsSupported = 0x40,
hgs
parents:
diff changeset
   562
            EUniDocumentUnicodeCharacterMode = 0x80,
hgs
parents:
diff changeset
   563
            ELaunchFromCvAttachment = 0x100
hgs
parents:
diff changeset
   564
            };
hgs
parents:
diff changeset
   565
        
hgs
parents:
diff changeset
   566
        CEikonEnv*          iEnvironment;
hgs
parents:
diff changeset
   567
        RFs&                iFs;
hgs
parents:
diff changeset
   568
        TUniMessageType     iMessageType;
hgs
parents:
diff changeset
   569
        
hgs
parents:
diff changeset
   570
        CUniDataModel*      iDataModel;
hgs
parents:
diff changeset
   571
        CCnvCharacterSetConverter* iCharConverter;
hgs
parents:
diff changeset
   572
hgs
parents:
diff changeset
   573
        TInt                iCurrentSlide;
hgs
parents:
diff changeset
   574
        TUint32             iMaxMessageSize;
hgs
parents:
diff changeset
   575
        TInt                iAddressSize;
hgs
parents:
diff changeset
   576
        TInt                iSubjectSize;
hgs
parents:
diff changeset
   577
        TInt                iMaxMmsRecipients;
hgs
parents:
diff changeset
   578
        TInt                iMaxSmsRecipients;
hgs
parents:
diff changeset
   579
        TInt                iMaxConcatenatedSms;
hgs
parents:
diff changeset
   580
        TInt                iAbsMaxConcatenatedSms;
hgs
parents:
diff changeset
   581
        TInt                iCreationMode;
hgs
parents:
diff changeset
   582
        TInt                iNonConfCount;
hgs
parents:
diff changeset
   583
        TInt                iMaxImageWidth;
hgs
parents:
diff changeset
   584
        TInt                iMaxImageHeight;
hgs
parents:
diff changeset
   585
        
hgs
parents:
diff changeset
   586
        TInt                iSupportedFeatures;
hgs
parents:
diff changeset
   587
        TUniSaveType        iPrevSaveType;
hgs
parents:
diff changeset
   588
        TUniState           iBodyState;
hgs
parents:
diff changeset
   589
        TUniState           iHeaderState;
hgs
parents:
diff changeset
   590
        TInt                iFlags;
hgs
parents:
diff changeset
   591
        TInt                iCSPBits;
hgs
parents:
diff changeset
   592
        TUniMessageCharSetSupport    iCharSetSupport;
hgs
parents:
diff changeset
   593
        
hgs
parents:
diff changeset
   594
        CUniEditorObjectsModelObserver* iObjectObserver; 
hgs
parents:
diff changeset
   595
        
hgs
parents:
diff changeset
   596
        CUniEditorPlugin*   iSmsPlugin;
hgs
parents:
diff changeset
   597
        CUniEditorPlugin*   iMmsPlugin;
hgs
parents:
diff changeset
   598
        
hgs
parents:
diff changeset
   599
        /** Maximum amount of unicode characters that can be send with SMS. */
hgs
parents:
diff changeset
   600
        TInt                iAbsMaxSmsCharacters;
hgs
parents:
diff changeset
   601
        TInt                iCharSetMode;
hgs
parents:
diff changeset
   602
hgs
parents:
diff changeset
   603
        /** Turkish SMS-PREQ2265 specific */
hgs
parents:
diff changeset
   604
        TSmsEncoding        iAlternativeEncodingType;
hgs
parents:
diff changeset
   605
        
hgs
parents:
diff changeset
   606
        /** Sms size limit to show warning notifications: Korean req:415-5434 */
hgs
parents:
diff changeset
   607
        TInt                iSmsSizeWarningBytes;
hgs
parents:
diff changeset
   608
};
hgs
parents:
diff changeset
   609
hgs
parents:
diff changeset
   610
#include "UniEditorDocument.inl"
hgs
parents:
diff changeset
   611
hgs
parents:
diff changeset
   612
#endif   // __UNIDOCUMENT_H
hgs
parents:
diff changeset
   613
hgs
parents:
diff changeset
   614
// End of file