messagingapp/msgui/unifiededitor/src/msgunieditorbody.cpp
changeset 27 e4592d119491
parent 25 84d9eb65b26f
child 47 5b14749788d7
equal deleted inserted replaced
25:84d9eb65b26f 27:e4592d119491
    20 #include <HbTextItem>
    20 #include <HbTextItem>
    21 #include <HbFrameItem>
    21 #include <HbFrameItem>
    22 #include <HbFrameDrawer>
    22 #include <HbFrameDrawer>
    23 #include <HbIconItem>
    23 #include <HbIconItem>
    24 #include <HbPushButton>
    24 #include <HbPushButton>
    25 #include <QFileInfo>
       
    26 #include <HbAction>
    25 #include <HbAction>
    27 #include <hbinputeditorinterface.h>
    26 #include <hbinputeditorinterface.h>
    28 #include <QGraphicsLayout>
    27 //#include <HbGestureSceneFilter>
    29 #include <HbGestureSceneFilter>
    28 //#include <HbGesture>
    30 #include <HbGesture>
       
    31 #include <HbMenu>
    29 #include <HbMenu>
    32 #include <HbMainWindow>
    30 #include <HbMainWindow>
    33 #include <hbinstance.h>
       
    34 #include <HbDeviceProfile>
    31 #include <HbDeviceProfile>
    35 #include <QImageReader>
    32 #include <QImageReader>
    36 #include <QFileInfo>
    33 #include <QFileInfo>
    37 #include <apmstd.h>
       
    38 #include <MsgMediaResolver.h>
    34 #include <MsgMediaResolver.h>
    39 #include <MsgImageInfo.h>
    35 #include <MsgImageInfo.h>
    40 #include <HbIconAnimationManager>
    36 #include <HbIconAnimationManager>
    41 #include <HbIconAnimator>
    37 #include <HbIconAnimator>
    42 #include <HbIcon>
    38 #include <HbIcon>
       
    39 #include <QGraphicsLinearLayout>
       
    40 #include <HbNotificationDialog>
    43 
    41 
    44 #include <csmsaccount.h>
    42 #include <csmsaccount.h>
    45 #include <smutset.h>
    43 #include <smutset.h>
    46 #include <xqaiwrequest.h>
    44 #include <xqaiwrequest.h>
    47 #include <xqrequestinfo.h>
    45 #include <xqrequestinfo.h>
    66 const QString AUDIO_REGION("AudioRegion");
    64 const QString AUDIO_REGION("AudioRegion");
    67 const QString VIDEO_REGION("VideoRegion");
    65 const QString VIDEO_REGION("VideoRegion");
    68 const QString IMAGE_REGION("ImageRegion");
    66 const QString IMAGE_REGION("ImageRegion");
    69 const QString INVALID_REGION("InvalidRegion");
    67 const QString INVALID_REGION("InvalidRegion");
    70 const QString SEND_ICON("qtg_mono_send");
    68 const QString SEND_ICON("qtg_mono_send");
       
    69 const int KShowCounterLimit = 10;
       
    70 const int BYTES_TO_KBYTES_FACTOR = 1024; 
    71 
    71 
    72 //Localized Constants for item specific menu
    72 //Localized Constants for item specific menu
    73 #define LOC_OPEN    hbTrId("txt_common_menu_open")
    73 #define LOC_OPEN    hbTrId("txt_common_menu_open")
    74 #define LOC_REMOVE  hbTrId("txt_common_menu_remove")
    74 #define LOC_REMOVE  hbTrId("txt_common_menu_remove")
    75 #define LOC_DETAILS hbTrId("txt_common_menu_details")
    75 #define LOC_DETAILS hbTrId("txt_common_menu_details")
    76 #define LOC_TITLE   hbTrId("txt_messaging_title_messaging")
    76 #define LOC_TITLE   hbTrId("txt_messaging_title_messaging")
       
    77 #define LOC_UNABLE_TO_ADD_CONTENT hbTrId("txt_messaging_dpopinfo_unable_to_add_more_content")
       
    78 #define LOC_UNABLE_TO_ATTACH_ITEM hbTrId("txt_messaging_dpopinfo_unable_to_attach_item_avai")
       
    79 #define LOC_PROCESSING hbTrId("txt_messaging_formlabel_loading")
    77 
    80 
    78 const QString AUDIO_ICON("qtg_mono_audio");
    81 const QString AUDIO_ICON("qtg_mono_audio");
    79 const QString ANIMATION_ICON(":/qtg_anim_longtap_2");
    82 const QString ANIMATION_ICON("qtg_anim_loading");
    80 
    83 const QString ANIMATION_FILE(":/qtg_anim_loading.axml");
    81 const TInt KShowCounterLimit = 10;
    84 // LOCAL FUNCTIONS
    82 
    85 
    83 MsgUnifiedEditorBody::MsgUnifiedEditorBody( const QString& pluginPath, 
    86 //---------------------------------------------------------------
    84     QGraphicsItem *parent ) :
    87 // showInsertFailureNote
    85 HbWidget(parent),
    88 // @return fullPath of unified editor's temporary dir
       
    89 //---------------------------------------------------------------
       
    90 void showInsertFailureNote()
       
    91 {
       
    92     int availableSize =
       
    93             (MsgMonitor::maxMmsSize() - MsgMonitor::messageSize())
       
    94             /BYTES_TO_KBYTES_FACTOR;
       
    95     QString displayStr = QString(LOC_UNABLE_TO_ATTACH_ITEM)
       
    96             .arg(availableSize);
       
    97     HbNotificationDialog* dlg = new HbNotificationDialog();
       
    98     dlg->setFocusPolicy(Qt::NoFocus);
       
    99     dlg->setDismissPolicy(HbPopup::TapAnywhere);
       
   100     dlg->setAttribute(Qt::WA_DeleteOnClose, true);
       
   101     dlg->setText(displayStr);
       
   102     dlg->show();
       
   103 }
       
   104 
       
   105 
       
   106 MsgUnifiedEditorBody::MsgUnifiedEditorBody( QGraphicsItem *parent ) :
       
   107 MsgUnifiedEditorBaseWidget(parent),
    86 mHasImage(false),
   108 mHasImage(false),
    87 mHasAudio(false),
   109 mHasAudio(false),
    88 mTextEdit(0),
   110 mTextEdit(0),
    89 mEditorFrame(0),
   111 mEditorFrame(0),
    90 mIconItem(0),
   112 mIconItem(0),
    91 mAudioItem(0),
   113 mAudioItem(0),
    92 mPluginPath(pluginPath),
       
    93 mImageSize(0),
   114 mImageSize(0),
    94 mAudioSize(0),
   115 mAudioSize(0),
    95 mVideoSize(0),
   116 mVideoSize(0),
    96 mProcessImageOperation(0),
   117 mProcessImageOperation(0),
    97 mMediaResolver(0),
   118 mMediaResolver(0),
    98 mImageInfo(0)
   119 mImageInfo(0),
    99 {
   120 mProcessingWidget(0)
   100     setPluginBaseId(style()->registerPlugin(mPluginPath));
   121 {
   101 
       
   102     mTextEdit = new HbTextEdit(this);
   122     mTextEdit = new HbTextEdit(this);
   103     HbStyle::setItemName(mTextEdit,"textEdit");
   123     HbStyle::setItemName(mTextEdit,"textEdit");
   104 
   124 
   105     HbFrameDrawer* frameDrawer = new HbFrameDrawer(EDITOR_FRAME, 
   125     HbFrameDrawer* frameDrawer = new HbFrameDrawer(EDITOR_FRAME, 
   106                                                    HbFrameDrawer::NinePieces);
   126                                                    HbFrameDrawer::NinePieces);
   113     HbEditorInterface editorInterface(mTextEdit);
   133     HbEditorInterface editorInterface(mTextEdit);
   114     HbAction *sendAction = new HbAction(HbIcon(SEND_ICON), QString(),this);
   134     HbAction *sendAction = new HbAction(HbIcon(SEND_ICON), QString(),this);
   115     connect(sendAction, SIGNAL(triggered()),this, SIGNAL(sendMessage()));
   135     connect(sendAction, SIGNAL(triggered()),this, SIGNAL(sendMessage()));
   116     editorInterface.addAction(sendAction);
   136     editorInterface.addAction(sendAction);
   117 
   137 
   118     mGestureFilter = new HbGestureSceneFilter(Qt::LeftButton, this);
   138   /*  mGestureFilter = new HbGestureSceneFilter(Qt::LeftButton, this);
   119     mGestureFilter->setLongpressAnimation(true);
   139     mGestureFilter->setLongpressAnimation(true);
   120     HbGesture *gesture = new HbGesture(HbGesture::longpress, 5);
   140     HbGesture *gesture = new HbGesture(HbGesture::longpress, 5);
   121     mGestureFilter->addGesture(gesture);
   141     mGestureFilter->addGesture(gesture);
   122     connect(gesture, SIGNAL(longPress(QPointF)), this, SLOT(longPressed(QPointF)));
   142     connect(gesture, SIGNAL(longPress(QPointF)), this, SLOT(longPressed(QPointF)));*/
   123     connect(mTextEdit, SIGNAL(contentsChanged()), this, SLOT(onTextChanged()));
   143     connect(mTextEdit, SIGNAL(contentsChanged()), this, SLOT(onTextChanged()));
   124 
       
   125     mfs.Connect();
       
   126     mfs.ShareProtected();
       
   127 
   144 
   128     mMmsConformanceCheck = new MmsConformanceCheck;
   145     mMmsConformanceCheck = new MmsConformanceCheck;
   129     
   146     
   130     mCharCounter = new HbTextItem(this);
   147     mCharCounter = new HbTextItem(this);
   131     HbStyle::setItemName(mCharCounter, "charCounter");
   148     HbStyle::setItemName(mCharCounter, "charCounter");
   144     mPluginLoader = new UniEditorPluginLoader(this);
   161     mPluginLoader = new UniEditorPluginLoader(this);
   145 
   162 
   146     mPluginInterface =
   163     mPluginInterface =
   147                         mPluginLoader->getUniEditorPlugin(ConvergedMessage::Sms);    
   164                         mPluginLoader->getUniEditorPlugin(ConvergedMessage::Sms);    
   148     
   165     
       
   166     TRAP_IGNORE(
   149     CSmsSettings* settings = CSmsSettings::NewLC();
   167     CSmsSettings* settings = CSmsSettings::NewLC();
   150     CSmsAccount* account = CSmsAccount::NewLC();
   168     CSmsAccount* account = CSmsAccount::NewLC();
   151     account->LoadSettingsL( *settings );
   169     account->LoadSettingsL( *settings );
   152 
   170 
   153     if( settings->CharacterSet() == TSmsDataCodingScheme::ESmsAlphabetUCS2)
   171     if( settings->CharacterSet() == TSmsDataCodingScheme::ESmsAlphabetUCS2)
   159     mCharSupportType = TUniSendingSettings::EUniCharSupportReduced;
   177     mCharSupportType = TUniSendingSettings::EUniCharSupportReduced;
   160     }
   178     }
   161     
   179     
   162     CleanupStack::PopAndDestroy( account );
   180     CleanupStack::PopAndDestroy( account );
   163     CleanupStack::PopAndDestroy( settings );                
   181     CleanupStack::PopAndDestroy( settings );                
   164 
   182     );
   165     //Set the mPrevBuffer to NULL initially
   183 
   166     mPrevBuffer = QString();
       
   167     
       
   168     mCharCounter->setVisible(false);
   184     mCharCounter->setVisible(false);
   169     mBackgroundItem->setVisible(false);
   185     mBackgroundItem->setVisible(false);
   170 }
   186 }
   171 
   187 
   172 MsgUnifiedEditorBody::~MsgUnifiedEditorBody()
   188 MsgUnifiedEditorBody::~MsgUnifiedEditorBody()
   173 {
   189 {
   174     style()->unregisterPlugin(mPluginPath);
       
   175     delete mMmsConformanceCheck;
   190     delete mMmsConformanceCheck;
   176     delete mProcessImageOperation;
   191     delete mProcessImageOperation;
   177     delete mMediaResolver;
   192     delete mMediaResolver;
   178     delete mImageInfo;
   193     delete mImageInfo;
   179     //Close has to be called after ProcessImageOperation object is deleted
       
   180     mfs.Close();
       
   181 }
   194 }
   182 
   195 
   183 QString MsgUnifiedEditorBody::text()
   196 QString MsgUnifiedEditorBody::text()
   184 {
   197 {
   185     return mTextEdit->toPlainText();
   198     return mTextEdit->toPlainText();
   202         int error = KErrNone;
   215         int error = KErrNone;
   203         
   216         
   204         if( !mProcessImageOperation )
   217         if( !mProcessImageOperation )
   205         {
   218         {
   206         TRAP(error,mProcessImageOperation = 
   219         TRAP(error,mProcessImageOperation = 
   207             CUniEditorProcessImageOperation::NewL(*this, mfs));
   220             CUniEditorProcessImageOperation::NewL(*this));
   208         }
   221         }
   209         if( !mMediaResolver && error == KErrNone )
   222         if( !mMediaResolver && error == KErrNone )
   210         {
   223         {
   211         TRAP(error,mMediaResolver = CMsgMediaResolver::NewL());
   224         TRAP(error,mMediaResolver = CMsgMediaResolver::NewL());
   212         }
   225         }
   213 
   226 
   214         if( error == KErrNone)
   227         if( error == KErrNone)
   215         {
   228         {
   216             mMediaResolver->SetCharacterSetRecognition(EFalse);
   229             mMediaResolver->SetCharacterSetRecognition(EFalse);
   217 
       
   218             HBufC *name = S60QConversions::qStringToS60Desc(imagefile);
   230             HBufC *name = S60QConversions::qStringToS60Desc(imagefile);
   219             RFile file = mMediaResolver->FileHandleL(*name);
   231             RFile file;
   220      
   232             TRAP(error, file = mMediaResolver->FileHandleL(*name));
   221             TRAP(error,mImageInfo = static_cast<CMsgImageInfo*>
   233             if(error == KErrNone)
   222             (mMediaResolver->CreateMediaInfoL(file)));
   234             {
   223             if (error == KErrNone)
   235                 TRAP(error,mImageInfo = static_cast<CMsgImageInfo*>
   224             {
   236                 (mMediaResolver->CreateMediaInfoL(file)));
   225                 TRAP(error, mMediaResolver->ParseInfoDetailsL(mImageInfo, file));
   237                 if (error == KErrNone)
       
   238                 {
       
   239                     TRAP(error, mMediaResolver->ParseInfoDetailsL(
       
   240                             mImageInfo, file));
       
   241                 }
       
   242                 file.Close();
   226             }
   243             }
   227 
       
   228             file.Close();
       
   229             delete name;
   244             delete name;
   230         }
   245         }
   231         
   246 
   232         if (error == KErrNone)
   247         if (error == KErrNone)
   233         {
   248         {
   234             mSavedImageFile = imagefile;
   249             mSavedImageFile = imagefile;
   235             startResizeAnimation();
   250             startResizeAnimation();
   236             mProcessImageOperation->Process(mImageInfo);
   251             mProcessImageOperation->Process(mImageInfo);
   261     else
   276     else
   262     {
   277     {
   263         mImageFile.clear();
   278         mImageFile.clear();
   264         setImage(false);
   279         setImage(false);
   265         //Show appropriate note and leave
   280         //Show appropriate note and leave
       
   281         showInsertFailureNote();
   266         return;
   282         return;
   267     }
   283     }
   268 
   284 
   269     mIconItem = new HbIconItem(this);
   285     mIconItem = new HbIconItem(this);
   270     mIconItem->hide();
   286     mIconItem->hide();
   272     QPixmap pixmap(mImageFile);
   288     QPixmap pixmap(mImageFile);
   273     mIconItem->setIcon(HbIcon(pixmap));
   289     mIconItem->setIcon(HbIcon(pixmap));
   274 
   290 
   275     HbStyle::setItemName(mIconItem, "pixmap");
   291     HbStyle::setItemName(mIconItem, "pixmap");
   276     mIconItem->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
   292     mIconItem->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
   277     mIconItem->installSceneEventFilter(mGestureFilter);
   293    // mIconItem->installSceneEventFilter(mGestureFilter);
   278 
   294 
   279     // repolish the body widget
   295     // repolish the body widget
   280     this->repolish();
   296     this->repolish();
   281 
   297 
   282     // emit signal to indicate addition of image
   298     // emit signal to indicate addition of image
   296         delete mAudioItem;
   312         delete mAudioItem;
   297         mAudioItem = NULL;
   313         mAudioItem = NULL;
   298         mAudioSize = 0;
   314         mAudioSize = 0;
   299     }
   315     }
   300 
   316 
   301     //TODO: Add conformance checks before calculating the size    
       
   302     int msgSize = messageSize();
   317     int msgSize = messageSize();
   303     QFileInfo fileinfo(mAudioFile);
   318     QFileInfo fileinfo(mAudioFile);
   304     int audioSize = fileinfo.size() + KEstimatedMimeHeaderSize;
   319     int audioSize = fileinfo.size() + KEstimatedMimeHeaderSize;
   305     if((audioSize + msgSize) <= MsgMonitor::maxMmsSize() )
   320     if((audioSize + msgSize) <= MsgMonitor::maxMmsSize() )
   306     {
   321     {
   309     else
   324     else
   310     {
   325     {
   311     	mAudioFile.clear();
   326     	mAudioFile.clear();
   312     	setAudio(false);
   327     	setAudio(false);
   313     	//Show appropriate note and leave
   328     	//Show appropriate note and leave
       
   329     	showInsertFailureNote();
   314     	return;
   330     	return;
   315     }    
   331     }    
   316 
   332 
   317     HbIconItem* audioIcon = new HbIconItem(AUDIO_ICON);
   333     HbIconItem* audioIcon = new HbIconItem(AUDIO_ICON);
   318     mAudioItem = new HbPushButton(this);
   334     mAudioItem = new HbPushButton(this);
   330 
   346 
   331     // emit signal to indicate addition of audio
   347     // emit signal to indicate addition of audio
   332     emit contentChanged();
   348     emit contentChanged();
   333 }
   349 }
   334 
   350 
   335 void MsgUnifiedEditorBody::setVideo(QString& videofile)
       
   336 {
       
   337     //check for insert conformance
       
   338     if(EInsertSuccess != mMmsConformanceCheck->checkModeForInsert(videofile))
       
   339         return;
       
   340 
       
   341     // update the media file-list
       
   342     mVideoFile = videofile;
       
   343 
       
   344     //TODO: Add conformance checks before calculating the size    
       
   345     int msgSize = messageSize();
       
   346     QFileInfo fileinfo(mVideoFile);
       
   347     int videoSize = fileinfo.size() + KEstimatedMimeHeaderSize;
       
   348     if((videoSize + msgSize) <= MsgMonitor::maxMmsSize() )    
       
   349     {
       
   350     	mVideoSize = videoSize;
       
   351     }
       
   352     else
       
   353     {
       
   354     	//Show appropriate note and leave
       
   355     	return;
       
   356     }    
       
   357 
       
   358     //TODO: create video item instance
       
   359 
       
   360     // repolish the body widget
       
   361     this->repolish();
       
   362 
       
   363     // emit signal to indicate addition of video
       
   364     emit contentChanged();
       
   365 }
       
   366 
       
   367 void MsgUnifiedEditorBody::setText(QString& text)
   351 void MsgUnifiedEditorBody::setText(QString& text)
   368 {
   352 {
   369 	mTextEdit->setPlainText(text);
   353 	mTextEdit->setPlainText(text);
   370 }
   354 }
   371 
   355 
   385 }
   369 }
   386 
   370 
   387 QSizeF MsgUnifiedEditorBody::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
   371 QSizeF MsgUnifiedEditorBody::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
   388 {
   372 {
   389     QSizeF szHint = HbWidget::sizeHint(which,constraint);
   373     QSizeF szHint = HbWidget::sizeHint(which,constraint);
   390     
   374 
   391     QList<HbMainWindow *> windowList = hbInstance->allMainWindows();
   375     HbMainWindow* mMainWindow = this->mainWindow();    
   392     HbMainWindow* mMainWindow = windowList[0];
   376     if(!mMainWindow)
       
   377     {
       
   378         return szHint;
       
   379     }
   393 
   380 
   394     qreal leftMargin = 0.0;
   381     qreal leftMargin = 0.0;
   395     qreal rightMargin = 0.0;
   382     qreal rightMargin = 0.0;
   396     qreal chromeHeight = 0.0;
   383     qreal chromeHeight = 0.0;
   397     qreal toolbarHeight = 0.0;
   384     qreal toolbarHeight = 0.0;
   438         QSizeF audioSize = mAudioItem->effectiveSizeHint(which, constraint);
   425         QSizeF audioSize = mAudioItem->effectiveSizeHint(which, constraint);
   439         szHint.rheight() += (audioSize.height() + bodyItemSpacing);
   426         szHint.rheight() += (audioSize.height() + bodyItemSpacing);
   440         mAudioItem->show();
   427         mAudioItem->show();
   441     }
   428     }
   442     
   429     
   443     if(mIconItem)
   430     if(mIconItem || mProcessingWidget)
   444         {
   431         {
   445         QSizeF imageSize(0.0,0.0);
   432         QSizeF imageSize(0.0,0.0);
   446         QSizeF defaultImageSize(QImageReader(mImageFile).size());
   433         QSizeF defaultImageSize(QImageReader(mImageFile).size());
   447 
   434 
   448         if(!defaultImageSize.isEmpty())
   435         if(!defaultImageSize.isEmpty())
   472             {
   459             {
   473                 qreal newWidth = defaultImageSize.width()*newHeight/defaultImageSize.height();
   460                 qreal newWidth = defaultImageSize.width()*newHeight/defaultImageSize.height();
   474                 imageSize.setWidth(newWidth);
   461                 imageSize.setWidth(newWidth);
   475             }
   462             }
   476 
   463 
       
   464             if(mIconItem)
       
   465             {
   477             mIconItem->setPreferredSize(imageSize);
   466             mIconItem->setPreferredSize(imageSize);
   478             mIconItem->setSize(imageSize);
   467             mIconItem->setSize(imageSize);
   479             if(mMainWindow->orientation() == Qt::Horizontal)
   468             if(mMainWindow->orientation() == Qt::Horizontal)
   480             {
   469             {
   481                 QPointF currPos = mIconItem->pos();
   470                 QPointF currPos = mIconItem->pos();
   482                 currPos.setX(leftMargin+((maxWidth-imageSize.width())/2));
   471                 currPos.setX(leftMargin+((maxWidth-imageSize.width())/2));
   483                 mIconItem->setPos(currPos);
   472                 mIconItem->setPos(currPos);
   484             }
   473             }
   485             mIconItem->show();
   474             mIconItem->show();
       
   475             }
       
   476             
       
   477             if(mProcessingWidget)
       
   478             {
       
   479                 imageSize.setHeight(mProcessingWidget->preferredHeight());
       
   480                 mProcessingWidget->setPreferredSize(imageSize);
       
   481                 mProcessingWidget->show();
       
   482             }
   486             szHint.rheight() += imageSize.height();
   483             szHint.rheight() += imageSize.height();
   487         }
   484         }
   488     }
   485     }
       
   486     
   489 
   487 
   490     mTextEdit->setMinimumHeight(maxHeight);
   488     mTextEdit->setMinimumHeight(maxHeight);
   491     szHint.rheight() += bodyItemSpacing;
   489     szHint.rheight() += bodyItemSpacing;
   492     return szHint;
   490     return szHint;
   493 }
   491 }
   514     if(objName == IMAGE_REGION)
   512     if(objName == IMAGE_REGION)
   515     {
   513     {
   516         mImageFile.clear();
   514         mImageFile.clear();
   517         if(mIconItem)
   515         if(mIconItem)
   518         {
   516         {
   519             mIconItem->removeSceneEventFilter(mGestureFilter);
   517       //      mIconItem->removeSceneEventFilter(mGestureFilter);
   520             delete mIconItem;
   518             delete mIconItem;
   521             mIconItem = NULL;
   519             mIconItem = NULL;
   522         }
   520         }
   523         setImage(false);
   521         setImage(false);
   524         mImageSize = 0;
   522         mImageSize = 0;
   707 }
   705 }
   708 
   706 
   709 void MsgUnifiedEditorBody::onTextChanged()
   707 void MsgUnifiedEditorBody::onTextChanged()
   710 {   
   708 {   
   711     QString string = text();
   709     QString string = text();
   712     
   710 
   713     if(  !mPrevBuffer.isEmpty() &&
   711     if( string.size() > mPrevBuffer.size() &&
   714          string.size() > mPrevBuffer.size() &&
   712         MsgMonitor::messageType() == ConvergedMessage::Mms )
   715          MsgMonitor::messageType() == ConvergedMessage::Mms )
   713     {
   716     {
   714         // reject any text input if mms size limit is reached
   717         //Save the previous buffer
   715         int futureSize = bodySize() +
   718         mPrevBuffer = string;
   716                 MsgMonitor::containerSize() + MsgMonitor::subjectSize();
   719         // emit signal to indicate change in content
   717         if(futureSize > MsgMonitor::maxMmsSize())
   720         emit contentChanged();
   718         {
   721                 
   719             mTextEdit->setPlainText(mPrevBuffer);
   722         return;
   720             HbNotificationDialog::launchDialog(LOC_UNABLE_TO_ADD_CONTENT);
       
   721             mTextEdit->setCursorPosition(mPrevBuffer.length());
       
   722             return;
       
   723         }
       
   724         else if(!mPrevBuffer.isEmpty())
       
   725         {
       
   726             //Save the previous buffer
       
   727             mPrevBuffer = string;
       
   728             // emit signal to indicate change in content
       
   729             emit contentChanged();
       
   730             return;
       
   731         }
   723     }
   732     }
   724 
   733 
   725     //Check done for optimization
   734     //Check done for optimization
   726     //Only if content is deleted we need to call encodingsettings again
   735     //Only if content is deleted we need to call encodingsettings again
   727     if (mPrevBuffer.isEmpty() || string.size() <= mPrevBuffer.size())
   736     if (mPrevBuffer.isEmpty() || string.size() <= mPrevBuffer.size())
   787     handleSetImage();
   796     handleSetImage();
   788 }
   797 }
   789 
   798 
   790 void MsgUnifiedEditorBody::startResizeAnimation()
   799 void MsgUnifiedEditorBody::startResizeAnimation()
   791 {
   800 {
   792     HbIconAnimationManager *manager = HbIconAnimationManager::global();
   801     QGraphicsLinearLayout* processingLayout = new QGraphicsLinearLayout(Qt::Vertical);
   793     bool defined = manager->addDefinitionFile(":/animation.axml");
   802     
   794 
   803     mProcessingWidget = new HbWidget(this);
   795     HbIcon animIcon;
   804     HbStyle::setItemName(mProcessingWidget,"pixmap"); 
   796     animIcon.setIconName("frame_anim_looping");
   805     mProcessingWidget->hide();
   797 
   806     mProcessingWidget->setLayout(processingLayout);
   798     mIconItem = new HbIconItem(this);
   807     
   799     mIconItem->hide();
   808     HbTextItem* processingText = new HbTextItem(LOC_PROCESSING,mProcessingWidget);
   800     HbStyle::setItemName(mIconItem,"pixmap");
   809     processingText->setAlignment(Qt::AlignCenter);
   801     mIconItem->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
   810     processingLayout->addItem(processingText);
   802     mIconItem->setIcon(animIcon);
   811     
   803 
   812     HbIconItem* animationItem = new HbIconItem(ANIMATION_ICON,mProcessingWidget);
   804     mImageFile = ANIMATION_ICON;
   813     processingLayout->addItem(animationItem);
   805     HbIconAnimator animator;
   814     
   806     animator.setIcon(animIcon);
   815     HbIconAnimator& iconAnimator = animationItem->animator();
   807 
   816     HbIconAnimationManager* iconAnimationManager = HbIconAnimationManager::global();
   808     animator.startAnimation();
   817     iconAnimationManager->addDefinitionFile(ANIMATION_FILE);
   809     this->repolish();
   818     
       
   819     iconAnimator.startAnimation();
       
   820     
       
   821     this->repolish();    
   810 }
   822 }
   811 
   823 
   812 void MsgUnifiedEditorBody::stopResizeAnimation()
   824 void MsgUnifiedEditorBody::stopResizeAnimation()
   813 {
   825 {
   814     if (mIconItem)
   826     if(mProcessingWidget)
   815     {
   827     {
   816         delete mIconItem;
   828         delete mProcessingWidget;
   817         mIconItem = NULL;     
   829         mProcessingWidget = NULL;
   818     }   
   830     }
   819 }
   831 }
   820 
   832 
   821 // ---------------------------------------------------------
   833 // ---------------------------------------------------------
   822 // MsgUnifiedEditorBody::isUnicode
   834 // MsgUnifiedEditorBody::isUnicode
   823 // ---------------------------------------------------------
   835 // ---------------------------------------------------------
   855 {
   867 {
   856     Q_UNUSED(errorMessage)
   868     Q_UNUSED(errorMessage)
   857     Q_UNUSED(errorCode)
   869     Q_UNUSED(errorCode)
   858 }
   870 }
   859 
   871 
       
   872 //---------------------------------------------------------------
       
   873 // MsgUnifiedEditorBody :: setFocus
       
   874 // @see header file
       
   875 //---------------------------------------------------------------
       
   876 void MsgUnifiedEditorBody::setFocus()
       
   877 {
       
   878     mTextEdit->setFocus(Qt::MouseFocusReason);
       
   879 }
   860 // EOF
   880 // EOF