mobilemessaging/unieditor/application/inc/UniEditorProcessImageOperation.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,2007 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:   CUniEditorProcessImageOperation 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 __UNIEDITORPROCESSIMAGEOPERATION_H
hgs
parents:
diff changeset
    21
#define __UNIEDITORPROCESSIMAGEOPERATION_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// INCLUDES
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include <e32base.h>
hgs
parents:
diff changeset
    26
#include <msvapi.h>
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
#include <uniobject.h>
hgs
parents:
diff changeset
    29
#include <uniimageprocessor.h>
hgs
parents:
diff changeset
    30
#include <cmsvattachment.h>
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
#include "UniEditorOperation.h"
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
class CMsgImageInfo; 
hgs
parents:
diff changeset
    37
class CMsgImageControl;
hgs
parents:
diff changeset
    38
class CUniEditorDocument;
hgs
parents:
diff changeset
    39
class MMsvAttachmentManager;
hgs
parents:
diff changeset
    40
class CMsvStore;
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
// DATA TYPES
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
// CLASS DECLARATION
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
/**
hgs
parents:
diff changeset
    47
* CUniEditorProcessImageOperation
hgs
parents:
diff changeset
    48
*
hgs
parents:
diff changeset
    49
* @since 3.2
hgs
parents:
diff changeset
    50
*/
hgs
parents:
diff changeset
    51
class CUniEditorProcessImageOperation : public CUniEditorOperation,
hgs
parents:
diff changeset
    52
                                        public MUniImageProcessorCallback
hgs
parents:
diff changeset
    53
    {
hgs
parents:
diff changeset
    54
    public: // new operations
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
        /**
hgs
parents:
diff changeset
    57
        * Factory method
hgs
parents:
diff changeset
    58
        */
hgs
parents:
diff changeset
    59
        static CUniEditorProcessImageOperation* NewL( 
hgs
parents:
diff changeset
    60
            MUniEditorOperationObserver& aObserver,
hgs
parents:
diff changeset
    61
            CUniEditorDocument& aDocument,
hgs
parents:
diff changeset
    62
            RFs& aFs );
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
        /**
hgs
parents:
diff changeset
    65
        * Start image process operation
hgs
parents:
diff changeset
    66
        *
hgs
parents:
diff changeset
    67
        * @param aImageInfo
hgs
parents:
diff changeset
    68
        * @param aAttachmentId  Attachment id, if the image is already stored as an attachment
hgs
parents:
diff changeset
    69
        *                       KMsvNullIndexEntryId, otherwise.
hgs
parents:
diff changeset
    70
        * @param aMessageSize
hgs
parents:
diff changeset
    71
        */
hgs
parents:
diff changeset
    72
        void Process( CMsgImageInfo* aImageInfo, TMsvAttachmentId aAttachmentId, TInt aMessageSize );
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
        /**
hgs
parents:
diff changeset
    75
        * Destructor
hgs
parents:
diff changeset
    76
        */
hgs
parents:
diff changeset
    77
        virtual ~CUniEditorProcessImageOperation();
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
        /**
hgs
parents:
diff changeset
    80
        * Detaches image info object.
hgs
parents:
diff changeset
    81
        */
hgs
parents:
diff changeset
    82
        CMsgImageInfo* DetachImageInfo();
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
        /**
hgs
parents:
diff changeset
    85
        * Detaches attachment id.
hgs
parents:
diff changeset
    86
        */
hgs
parents:
diff changeset
    87
        void DetachAttachmentId( TMsvAttachmentId& aAttachmentId );
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
    protected:
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
        /**
hgs
parents:
diff changeset
    92
        * From CActive
hgs
parents:
diff changeset
    93
        */
hgs
parents:
diff changeset
    94
        void RunL();
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
        /**
hgs
parents:
diff changeset
    97
        * From CActive
hgs
parents:
diff changeset
    98
        */
hgs
parents:
diff changeset
    99
        TInt RunError( TInt aError );
hgs
parents:
diff changeset
   100
        
hgs
parents:
diff changeset
   101
        /**
hgs
parents:
diff changeset
   102
        * From CUniEditorOperation
hgs
parents:
diff changeset
   103
        */
hgs
parents:
diff changeset
   104
        void DoCancelCleanup();
hgs
parents:
diff changeset
   105
        
hgs
parents:
diff changeset
   106
        /**
hgs
parents:
diff changeset
   107
        * From MUniImageProcessorCallback
hgs
parents:
diff changeset
   108
        */
hgs
parents:
diff changeset
   109
        void ImageProcessingReady( TSize aBitmapSize, TInt aFileSize, TBool aCompressed );
hgs
parents:
diff changeset
   110
        
hgs
parents:
diff changeset
   111
    private: // new operations
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
        /**
hgs
parents:
diff changeset
   114
        * C++ constructor
hgs
parents:
diff changeset
   115
        */
hgs
parents:
diff changeset
   116
        CUniEditorProcessImageOperation( MUniEditorOperationObserver& aObserver,
hgs
parents:
diff changeset
   117
                                         CUniEditorDocument& aDocument,
hgs
parents:
diff changeset
   118
                                         RFs& aFs );
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
        /**
hgs
parents:
diff changeset
   121
        * 2nd phase constructor.
hgs
parents:
diff changeset
   122
        */
hgs
parents:
diff changeset
   123
        void ConstructL();
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
        /**
hgs
parents:
diff changeset
   126
        * Returns optimal send image size.
hgs
parents:
diff changeset
   127
        */
hgs
parents:
diff changeset
   128
        TSize ImageSendSize() const;
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
        /**
hgs
parents:
diff changeset
   131
        * Checks whether some processing is needed for the image.
hgs
parents:
diff changeset
   132
        * Stores the possible processing method to "iProcessMethod".
hgs
parents:
diff changeset
   133
        *
hgs
parents:
diff changeset
   134
        * @return EFalse if aborted by user,
hgs
parents:
diff changeset
   135
        *         ETrue  otherwise
hgs
parents:
diff changeset
   136
        */
hgs
parents:
diff changeset
   137
        TBool CheckNeedToProcess();
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
        /**
hgs
parents:
diff changeset
   140
        * Creates empty attachment.
hgs
parents:
diff changeset
   141
        */
hgs
parents:
diff changeset
   142
        void CreateEmptyAttachmentL();
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
        /**
hgs
parents:
diff changeset
   145
        * Start check step.
hgs
parents:
diff changeset
   146
        */
hgs
parents:
diff changeset
   147
        void DoStartCheck();
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
        /**
hgs
parents:
diff changeset
   150
        * Start process step.
hgs
parents:
diff changeset
   151
        */
hgs
parents:
diff changeset
   152
        void DoStartProcessL();
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
        /**
hgs
parents:
diff changeset
   155
        * Start resolve step.
hgs
parents:
diff changeset
   156
        */
hgs
parents:
diff changeset
   157
        void DoStartResolveL();
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
        /**
hgs
parents:
diff changeset
   160
        * Processing ready.
hgs
parents:
diff changeset
   161
        */
hgs
parents:
diff changeset
   162
        void DoReady();
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
        /**
hgs
parents:
diff changeset
   165
        * Performs error handling without state change.
hgs
parents:
diff changeset
   166
        */
hgs
parents:
diff changeset
   167
        void DoErrorWithoutStateChange();
hgs
parents:
diff changeset
   168
        
hgs
parents:
diff changeset
   169
        /**
hgs
parents:
diff changeset
   170
        * Opens file by file name. If it fails with KErrPermissionDenied,
hgs
parents:
diff changeset
   171
        * file is searched from message store and opened from there        
hgs
parents:
diff changeset
   172
        */
hgs
parents:
diff changeset
   173
        RFile OpenFileForReadingL();
hgs
parents:
diff changeset
   174
        
hgs
parents:
diff changeset
   175
    private: // data
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
        enum TUniProcessStates
hgs
parents:
diff changeset
   178
            {
hgs
parents:
diff changeset
   179
            EUniProcessImgCheck,
hgs
parents:
diff changeset
   180
            EUniProcessImgProcess,
hgs
parents:
diff changeset
   181
            EUniProcessImgResolve,
hgs
parents:
diff changeset
   182
            EUniProcessImgReady,
hgs
parents:
diff changeset
   183
            EUniProcessImgError
hgs
parents:
diff changeset
   184
            };
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
        enum TUniProcessMethods
hgs
parents:
diff changeset
   187
            {
hgs
parents:
diff changeset
   188
            EUniProcessImgMethodNone        = 0x0,
hgs
parents:
diff changeset
   189
            EUniProcessImgMethodScale       = 0x1,
hgs
parents:
diff changeset
   190
            EUniProcessImgMethodConvert     = 0x2,
hgs
parents:
diff changeset
   191
            EUniProcessImgMethodCompress    = 0x4
hgs
parents:
diff changeset
   192
            };
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
        CMsgImageInfo*              iImageInfo;
hgs
parents:
diff changeset
   195
        TMsvAttachmentId            iAttachmentId;
hgs
parents:
diff changeset
   196
        TInt                        iMessageSize;
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
        CMsgImageInfo*              iNewImageInfo;
hgs
parents:
diff changeset
   199
        RFile                       iNewImageFile;
hgs
parents:
diff changeset
   200
        TMsvAttachmentId            iNewAttaId;
hgs
parents:
diff changeset
   201
        CMsvStore*                  iEditStore;
hgs
parents:
diff changeset
   202
    
hgs
parents:
diff changeset
   203
        CUniImageProcessor*         iImageProcessor;
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
        TInt                        iProcessMethod;
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
        TSize                       iScaleSize;
hgs
parents:
diff changeset
   208
  //      TSize                       iScaleSizeResult;
hgs
parents:
diff changeset
   209
        TDataType                   iTargetType;
hgs
parents:
diff changeset
   210
        TBool                       iExactImageScaling;
hgs
parents:
diff changeset
   211
    };
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
#endif //__UNIEDITORPROCESSIMAGEOPERATION_H