messagingapp/msgui/unifiededitor/src/msgunieditorbody.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
equal deleted inserted replaced
23:238255e8b033 25:84d9eb65b26f
    15  *
    15  *
    16  */
    16  */
    17 
    17 
    18 // INCLUDES
    18 // INCLUDES
    19 #include <HbTextEdit>
    19 #include <HbTextEdit>
       
    20 #include <HbTextItem>
    20 #include <HbFrameItem>
    21 #include <HbFrameItem>
    21 #include <HbFrameDrawer>
    22 #include <HbFrameDrawer>
    22 #include <HbIconItem>
    23 #include <HbIconItem>
    23 #include <HbPushButton>
    24 #include <HbPushButton>
    24 #include <QFileInfo>
    25 #include <QFileInfo>
    38 #include <MsgImageInfo.h>
    39 #include <MsgImageInfo.h>
    39 #include <HbIconAnimationManager>
    40 #include <HbIconAnimationManager>
    40 #include <HbIconAnimator>
    41 #include <HbIconAnimator>
    41 #include <HbIcon>
    42 #include <HbIcon>
    42 
    43 
       
    44 #include <csmsaccount.h>
       
    45 #include <smutset.h>
       
    46 #include <xqaiwrequest.h>
       
    47 #include <xqrequestinfo.h>
       
    48 #include <xqsharablefile.h>
       
    49 #include <xqappmgr.h>
       
    50 
    43 // USER INCLUDES
    51 // USER INCLUDES
    44 #include "msgunieditorbody.h"
    52 #include "msgunieditorbody.h"
    45 #include "UniEditorGenUtils.h"
    53 #include "UniEditorGenUtils.h"
       
    54 #include "unisendingsettings.h"
    46 #include "msgmonitor.h"
    55 #include "msgmonitor.h"
    47 #include "s60qconversions.h"
    56 #include "s60qconversions.h"
    48 #include "mmsinsertcheckoperation.h"
    57 #include "mmsconformancecheck.h"
       
    58 #include "unieditorpluginloader.h"
       
    59 #include "unieditorplugininterface.h"
       
    60 #include "convergedmessage.h"
       
    61 #include "msgmediautil.h"
    49 
    62 
    50 // Constants
    63 // Constants
    51 const QString EDITOR_FRAME("qtg_fr_editor");
    64 const QString EDITOR_FRAME("qtg_fr_lineedit_normal");
       
    65 const QString BACKGROUND_FRAME("qtg_fr_btn_normal");
    52 const QString AUDIO_REGION("AudioRegion");
    66 const QString AUDIO_REGION("AudioRegion");
    53 const QString VIDEO_REGION("VideoRegion");
    67 const QString VIDEO_REGION("VideoRegion");
    54 const QString IMAGE_REGION("ImageRegion");
    68 const QString IMAGE_REGION("ImageRegion");
    55 const QString INVALID_REGION("InvalidRegion");
    69 const QString INVALID_REGION("InvalidRegion");
    56 const QString SEND_ICON("qtg_mono_send.svg");
    70 const QString SEND_ICON("qtg_mono_send");
    57 
    71 
    58 //Localized Constants
    72 //Localized Constants for item specific menu
    59 #define LOC_COMMON_OPEN hbTrId("txt_common_menu_open")
    73 #define LOC_OPEN    hbTrId("txt_common_menu_open")
    60 #define LOC_REMOVE_ATTACHMENT hbTrId("txt_messaging_menu_remove_attachment")
    74 #define LOC_REMOVE  hbTrId("txt_common_menu_remove")
    61 #define LOC_COMMON_DETAILS hbTrId("txt_common_menu_details")
    75 #define LOC_DETAILS hbTrId("txt_common_menu_details")
    62 
    76 #define LOC_TITLE   hbTrId("txt_messaging_title_messaging")
    63 
    77 
    64 MsgUnifiedEditorBody::MsgUnifiedEditorBody( const QString& pluginPath, QGraphicsItem *parent ) :
    78 const QString AUDIO_ICON("qtg_mono_audio");
       
    79 const QString ANIMATION_ICON(":/qtg_anim_longtap_2");
       
    80 
       
    81 const TInt KShowCounterLimit = 10;
       
    82 
       
    83 MsgUnifiedEditorBody::MsgUnifiedEditorBody( const QString& pluginPath, 
       
    84     QGraphicsItem *parent ) :
    65 HbWidget(parent),
    85 HbWidget(parent),
    66 mHasImage(false),
    86 mHasImage(false),
    67 mHasAudio(false),
    87 mHasAudio(false),
    68 mTextEdit(0),
    88 mTextEdit(0),
    69 mEditorFrame(0),
    89 mEditorFrame(0),
    81 
   101 
    82     mTextEdit = new HbTextEdit(this);
   102     mTextEdit = new HbTextEdit(this);
    83     HbStyle::setItemName(mTextEdit,"textEdit");
   103     HbStyle::setItemName(mTextEdit,"textEdit");
    84 
   104 
    85     HbFrameDrawer* frameDrawer = new HbFrameDrawer(EDITOR_FRAME, 
   105     HbFrameDrawer* frameDrawer = new HbFrameDrawer(EDITOR_FRAME, 
    86     		HbFrameDrawer::NinePieces);
   106                                                    HbFrameDrawer::NinePieces);
    87     
   107     
    88     mEditorFrame = new HbFrameItem(frameDrawer,this);
   108     mEditorFrame = new HbFrameItem(frameDrawer,this);
    89     HbStyle::setItemName(mEditorFrame,"textEditFrame");
   109     HbStyle::setItemName(mEditorFrame,"textEditFrame");
    90     mEditorFrame->setZValue(-1);
   110     mEditorFrame->setZValue(-1);
    91 
   111     
    92     // add "Send" action in VKB
   112     // add "Send" action in VKB
    93     HbEditorInterface editorInterface(mTextEdit);
   113     HbEditorInterface editorInterface(mTextEdit);
    94     HbAction *sendAction = new HbAction(HbIcon(SEND_ICON), QString(),this);
   114     HbAction *sendAction = new HbAction(HbIcon(SEND_ICON), QString(),this);
    95     connect(sendAction, SIGNAL(triggered()),this, SIGNAL(sendMessage()));
   115     connect(sendAction, SIGNAL(triggered()),this, SIGNAL(sendMessage()));
    96     editorInterface.addAction(sendAction);
   116     editorInterface.addAction(sendAction);
    97 
   117 
    98     mGestureFilter = new HbGestureSceneFilter(Qt::LeftButton, this);
   118     mGestureFilter = new HbGestureSceneFilter(Qt::LeftButton, this);
    99     mGestureFilter->setLongpressAnimation(true);
   119     mGestureFilter->setLongpressAnimation(true);
   100     HbGesture *gesture = new HbGesture(HbGesture::longpress, 0);
   120     HbGesture *gesture = new HbGesture(HbGesture::longpress, 5);
   101     mGestureFilter->addGesture(gesture);
   121     mGestureFilter->addGesture(gesture);
   102     connect(gesture, SIGNAL(longPress(QPointF)), this, SLOT(longPressed(QPointF)));
   122     connect(gesture, SIGNAL(longPress(QPointF)), this, SLOT(longPressed(QPointF)));
   103     connect(mTextEdit, SIGNAL(contentsChanged()), this, SLOT(onTextChanged()));
   123     connect(mTextEdit, SIGNAL(contentsChanged()), this, SLOT(onTextChanged()));
   104 
   124 
   105     mfs.Connect();
   125     mfs.Connect();
   106     mfs.ShareProtected();
   126     mfs.ShareProtected();
   107 
   127 
   108     mMmsInsertCheckOp = new MmsInsertCheckOperation;
   128     mMmsConformanceCheck = new MmsConformanceCheck;
       
   129     
       
   130     mCharCounter = new HbTextItem(this);
       
   131     HbStyle::setItemName(mCharCounter, "charCounter");
       
   132     mCharCounter->setZValue(1.5);
       
   133     mCharCounter->setText("160(1)");
       
   134     
       
   135     mBackgroundItem = new HbFrameItem(this);
       
   136     HbStyle::setItemName(mBackgroundItem, "charCounterFrame");
       
   137 
       
   138     mBackgroundItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
       
   139     mBackgroundItem->frameDrawer().setFillWholeRect(true);
       
   140     
       
   141     mBackgroundItem->frameDrawer().setFrameGraphicsName(
       
   142         BACKGROUND_FRAME);    
       
   143     
       
   144     mPluginLoader = new UniEditorPluginLoader(this);
       
   145 
       
   146     mPluginInterface =
       
   147                         mPluginLoader->getUniEditorPlugin(ConvergedMessage::Sms);    
       
   148     
       
   149     CSmsSettings* settings = CSmsSettings::NewLC();
       
   150     CSmsAccount* account = CSmsAccount::NewLC();
       
   151     account->LoadSettingsL( *settings );
       
   152 
       
   153     if( settings->CharacterSet() == TSmsDataCodingScheme::ESmsAlphabetUCS2)
       
   154     {
       
   155     mCharSupportType = TUniSendingSettings::EUniCharSupportFull;
       
   156     }
       
   157     else
       
   158     {
       
   159     mCharSupportType = TUniSendingSettings::EUniCharSupportReduced;
       
   160     }
       
   161     
       
   162     CleanupStack::PopAndDestroy( account );
       
   163     CleanupStack::PopAndDestroy( settings );                
       
   164 
       
   165     //Set the mPrevBuffer to NULL initially
       
   166     mPrevBuffer = QString();
       
   167     
       
   168     mCharCounter->setVisible(false);
       
   169     mBackgroundItem->setVisible(false);
   109 }
   170 }
   110 
   171 
   111 MsgUnifiedEditorBody::~MsgUnifiedEditorBody()
   172 MsgUnifiedEditorBody::~MsgUnifiedEditorBody()
   112 {
   173 {
   113     style()->unregisterPlugin(mPluginPath);
   174     style()->unregisterPlugin(mPluginPath);
   114     delete mMmsInsertCheckOp;
   175     delete mMmsConformanceCheck;
   115     delete mProcessImageOperation;
   176     delete mProcessImageOperation;
   116     delete mMediaResolver;
   177     delete mMediaResolver;
   117     delete mImageInfo;
   178     delete mImageInfo;
   118     //Close has to be called after ProcessImageOperation object is deleted
   179     //Close has to be called after ProcessImageOperation object is deleted
   119     mfs.Close();
   180     mfs.Close();
   152 
   213 
   153         if( error == KErrNone)
   214         if( error == KErrNone)
   154         {
   215         {
   155             mMediaResolver->SetCharacterSetRecognition(EFalse);
   216             mMediaResolver->SetCharacterSetRecognition(EFalse);
   156 
   217 
   157             RFile file;
       
   158 
       
   159             HBufC *name = S60QConversions::qStringToS60Desc(imagefile);
   218             HBufC *name = S60QConversions::qStringToS60Desc(imagefile);
   160             file.Open(mfs, *name, EFileWrite);
   219             RFile file = mMediaResolver->FileHandleL(*name);
   161 
   220      
   162             TRAP(error,mImageInfo = static_cast<CMsgImageInfo*>
   221             TRAP(error,mImageInfo = static_cast<CMsgImageInfo*>
   163             (mMediaResolver->CreateMediaInfoL(file)));
   222             (mMediaResolver->CreateMediaInfoL(file)));
   164             if (error == KErrNone)
   223             if (error == KErrNone)
   165             {
   224             {
   166                 TRAP(error, mMediaResolver->ParseInfoDetailsL(mImageInfo, file));
   225                 TRAP(error, mMediaResolver->ParseInfoDetailsL(mImageInfo, file));
   187 }
   246 }
   188 
   247 
   189 void MsgUnifiedEditorBody::handleSetImage()
   248 void MsgUnifiedEditorBody::handleSetImage()
   190 {   
   249 {   
   191     //check for insert conformance
   250     //check for insert conformance
   192     if(EInsertSuccess != mMmsInsertCheckOp->checkModeForInsert(mImageFile))
   251     if(EInsertSuccess != mMmsConformanceCheck->checkModeForInsert(mImageFile))
   193         return;
   252         return;
   194     
   253     
   195     int msgSize = messageSize();
   254     int msgSize = messageSize();
   196     QFileInfo fileinfo(mImageFile);
   255     QFileInfo fileinfo(mImageFile);
   197     int imageSize = fileinfo.size() + KEstimatedMimeHeaderSize;
   256     int imageSize = fileinfo.size() + KEstimatedMimeHeaderSize;
   218     mIconItem->installSceneEventFilter(mGestureFilter);
   277     mIconItem->installSceneEventFilter(mGestureFilter);
   219 
   278 
   220     // repolish the body widget
   279     // repolish the body widget
   221     this->repolish();
   280     this->repolish();
   222 
   281 
   223     // emit signal to indicate addition of mms content
   282     // emit signal to indicate addition of image
   224     emit mmContentAdded(true);
   283     emit contentChanged();
   225 
       
   226     // emit signal to indicate new body size
       
   227     emit sizeChanged(bodySize());
       
   228 }
   284 }
   229 
   285 
   230 void MsgUnifiedEditorBody::setAudio(QString& audiofile)
   286 void MsgUnifiedEditorBody::setAudio(QString& audiofile)
   231 {
   287 {
   232     //check for insert conformance
   288     //check for insert conformance
   233     if(EInsertSuccess != mMmsInsertCheckOp->checkModeForInsert(audiofile))
   289     if(EInsertSuccess != mMmsConformanceCheck->checkModeForInsert(audiofile))
   234         return;
   290         return;
   235 
   291 
   236     setAudio(true);
   292     setAudio(true);
   237     mAudioFile = audiofile;
   293     mAudioFile = audiofile;
   238     if(mAudioItem)
   294     if(mAudioItem)
   256     	setAudio(false);
   312     	setAudio(false);
   257     	//Show appropriate note and leave
   313     	//Show appropriate note and leave
   258     	return;
   314     	return;
   259     }    
   315     }    
   260 
   316 
   261     HbIconItem* audioIcon = new HbIconItem(":/qtg_mono_audio.svg");
   317     HbIconItem* audioIcon = new HbIconItem(AUDIO_ICON);
   262     mAudioItem = new HbPushButton(this);
   318     mAudioItem = new HbPushButton(this);
   263     mAudioItem->hide();
   319     mAudioItem->hide();
   264     HbStyle::setItemName(mAudioItem,"audioItem");
   320     HbStyle::setItemName(mAudioItem,"audioItem");
   265     mAudioItem->setIcon(audioIcon->icon());
   321     mAudioItem->setIcon(audioIcon->icon());
   266     mAudioItem->setText(fileinfo.baseName());
   322     mAudioItem->setText(fileinfo.baseName());
   267     //TODO: get actual play-time from utility
   323     MsgMediaUtil mediaUtil;
   268     mAudioItem->setAdditionalText("00:00");
   324     mAudioItem->setAdditionalText(mediaUtil.mediaDuration(mAudioFile));
   269     mAudioItem->setTextAlignment(Qt::AlignVCenter | Qt::AlignLeft);
   325     mAudioItem->setTextAlignment(Qt::AlignVCenter | Qt::AlignLeft);
   270     connect(mAudioItem, SIGNAL(longPress(QPointF)), this, SLOT(longPressed(QPointF)));
   326     connect(mAudioItem, SIGNAL(longPress(QPointF)), this, SLOT(longPressed(QPointF)));
   271 
   327 
   272     // repolish the body widget
   328     // repolish the body widget
   273     this->repolish();
   329     this->repolish();
   274 
   330 
   275     // emit signal to indicate addition of mms content
   331     // emit signal to indicate addition of audio
   276     emit mmContentAdded(true);
   332     emit contentChanged();
   277 
       
   278     // emit signal to indicate new body size
       
   279     emit sizeChanged(bodySize());
       
   280 }
   333 }
   281 
   334 
   282 void MsgUnifiedEditorBody::setVideo(QString& videofile)
   335 void MsgUnifiedEditorBody::setVideo(QString& videofile)
   283 {
   336 {
   284     //check for insert conformance
   337     //check for insert conformance
   285     if(EInsertSuccess != mMmsInsertCheckOp->checkModeForInsert(videofile))
   338     if(EInsertSuccess != mMmsConformanceCheck->checkModeForInsert(videofile))
   286         return;
   339         return;
   287 
   340 
   288     // update the media file-list
   341     // update the media file-list
   289     mVideoFile = videofile;
   342     mVideoFile = videofile;
   290 
   343 
   305     //TODO: create video item instance
   358     //TODO: create video item instance
   306 
   359 
   307     // repolish the body widget
   360     // repolish the body widget
   308     this->repolish();
   361     this->repolish();
   309 
   362 
   310     // emit signal to indicate addition of mms content
   363     // emit signal to indicate addition of video
   311     emit mmContentAdded(true);
   364     emit contentChanged();
   312 
       
   313     // emit signal to indicate new body size
       
   314     emit sizeChanged(bodySize());
       
   315 }
   365 }
   316 
   366 
   317 void MsgUnifiedEditorBody::setText(QString& text)
   367 void MsgUnifiedEditorBody::setText(QString& text)
   318 {
   368 {
   319 	mTextEdit->setPlainText(text);
   369 	mTextEdit->setPlainText(text);
   443 }
   493 }
   444 
   494 
   445 void MsgUnifiedEditorBody::longPressed(QPointF position)
   495 void MsgUnifiedEditorBody::longPressed(QPointF position)
   446 {
   496 {
   447     HbMenu* menu = new HbMenu;
   497     HbMenu* menu = new HbMenu;
   448     menu->addAction(LOC_COMMON_OPEN, this, SLOT(openMedia()));
   498     menu->addAction(LOC_OPEN, this, SLOT(openMedia()));
   449     menu->addAction(LOC_REMOVE_ATTACHMENT, this, SLOT(removeMedia()));
   499     menu->addAction(LOC_REMOVE, this, SLOT(removeMedia()));
   450     menu->addAction(LOC_COMMON_DETAILS, this, SLOT(viewDetails()));
   500     menu->addAction(LOC_DETAILS, this, SLOT(viewDetails()));
   451 
   501 
   452     menu->setDismissPolicy(HbPopup::TapAnywhere);
   502     menu->setDismissPolicy(HbPopup::TapAnywhere);
   453     menu->setAttribute(Qt::WA_DeleteOnClose, true);
   503     menu->setAttribute(Qt::WA_DeleteOnClose, true);
   454     menu->setPreferredPos(position);
   504     menu->setPreferredPos(position);
   455 
   505 
   493         // return without doing anything
   543         // return without doing anything
   494         return;
   544         return;
   495     }
   545     }
   496 
   546 
   497     this->repolish();
   547     this->repolish();
   498 	emit mmContentAdded(false);
   548 
   499 
   549 	emit contentChanged();
   500     // emit signal to indicate new body size
   550 }
   501     emit sizeChanged(bodySize());
   551 
   502 }
   552 //---------------------------------------------------------------
   503 
   553 // MsgUnifiedEditorBody :: openMedia
       
   554 // @see header file
       
   555 //---------------------------------------------------------------
   504 void MsgUnifiedEditorBody::openMedia()
   556 void MsgUnifiedEditorBody::openMedia()
   505 {
   557 {
   506     //open corresponding viewer app.
   558     HbAction* action = qobject_cast<HbAction*>(sender());
   507 }
   559     QString objName = action->parent()->objectName();
       
   560     
       
   561     QString fileName;
       
   562     if ( objName == IMAGE_REGION )
       
   563     {
       
   564         fileName = mImageFile;
       
   565     }
       
   566     else if ( objName == AUDIO_REGION )
       
   567     {
       
   568         fileName = mAudioFile;
       
   569     }
       
   570     else
       
   571     {
       
   572         return;
       
   573     }
       
   574     
       
   575     XQSharableFile sf;
       
   576     XQAiwRequest* request = 0;
       
   577 
       
   578     if ( !sf.open(fileName) ) 
       
   579         {
       
   580         return;
       
   581         }
       
   582 
       
   583     // Get handlers
       
   584     XQApplicationManager appManager;
       
   585     QList<XQAiwInterfaceDescriptor> fileHandlers = appManager.list(sf);
       
   586     if (fileHandlers.count() > 0)
       
   587         {
       
   588         XQAiwInterfaceDescriptor d = fileHandlers.first();
       
   589         request = appManager.create(sf, d);
       
   590     
       
   591         if ( !request )
       
   592             {
       
   593             sf.close();
       
   594             return ;
       
   595             }
       
   596         }
       
   597     else
       
   598         {
       
   599         sf.close();
       
   600         return;
       
   601         }
       
   602 
       
   603     // Result handlers
       
   604     connect (request, SIGNAL(requestOk(const QVariant&)), 
       
   605             this, SLOT(handleOk(const QVariant&)));
       
   606     connect (request, SIGNAL(requestError(const QVariant&)), 
       
   607             this, SLOT(handleError(const QVariant&)));
       
   608 
       
   609     request->setEmbedded(true);
       
   610     request->setSynchronous(true);
       
   611 
       
   612     // Fill args
       
   613     QList<QVariant> args;
       
   614     args << qVariantFromValue(sf);
       
   615     request->setArguments(args);
       
   616 
       
   617     // Fill headers
       
   618     QString key("WindowTitle");
       
   619     QVariant value(QString(LOC_TITLE));
       
   620     XQRequestInfo info;
       
   621     info.setInfo(key, value);
       
   622     request->setInfo(info);
       
   623     
       
   624     request->send();
       
   625     
       
   626     // Cleanup
       
   627     sf.close();
       
   628     delete request;
       
   629 }
       
   630 
   508 void MsgUnifiedEditorBody::viewDetails()
   631 void MsgUnifiedEditorBody::viewDetails()
   509 {
   632 {
   510     //open details view.
   633     //open details view.
   511 }
   634 }
   512 
   635 
   582 
   705 
   583     return INVALID_REGION;
   706     return INVALID_REGION;
   584 }
   707 }
   585 
   708 
   586 void MsgUnifiedEditorBody::onTextChanged()
   709 void MsgUnifiedEditorBody::onTextChanged()
   587 {
   710 {   
   588     // emit signal to indicate new body size
   711     QString string = text();
   589     emit sizeChanged(bodySize());
   712     
       
   713     if(  !mPrevBuffer.isEmpty() &&
       
   714          string.size() > mPrevBuffer.size() &&
       
   715          MsgMonitor::messageType() == ConvergedMessage::Mms )
       
   716     {
       
   717         //Save the previous buffer
       
   718         mPrevBuffer = string;
       
   719         // emit signal to indicate change in content
       
   720         emit contentChanged();
       
   721                 
       
   722         return;
       
   723     }
       
   724 
       
   725     //Check done for optimization
       
   726     //Only if content is deleted we need to call encodingsettings again
       
   727     if (mPrevBuffer.isEmpty() || string.size() <= mPrevBuffer.size())
       
   728     {
       
   729         mPluginInterface->setEncodingSettings(EFalse, ESmsEncodingNone,
       
   730             mCharSupportType);
       
   731     }
       
   732 
       
   733     TInt numOfRemainingChars;
       
   734     TInt numOfPDUs;
       
   735     TBool unicodeMode;
       
   736     TSmsEncoding alternativeEncodingType;
       
   737     mPluginInterface->getNumPDUs(string, numOfRemainingChars, numOfPDUs,
       
   738         unicodeMode, alternativeEncodingType);
       
   739 
       
   740     //Save the unicode value returned
       
   741     mUnicode = unicodeMode;
       
   742     //Save the old buffer
       
   743     mPrevBuffer = string;
       
   744     
       
   745     // emit signal to indicate change in content
       
   746     emit contentChanged();
       
   747     
       
   748     if(MsgMonitor::messageType() == ConvergedMessage::Sms)
       
   749     {
       
   750         //Set char counter value
       
   751         QString display = QString("%1(%2)").arg(numOfRemainingChars).arg(
       
   752             numOfPDUs);
       
   753         mCharCounter->setText(display);
       
   754         
       
   755         if (numOfPDUs > 1 || numOfRemainingChars <= KShowCounterLimit)
       
   756         {
       
   757             mCharCounter->setVisible(true);
       
   758             mBackgroundItem->setVisible(true);
       
   759         }
       
   760         else
       
   761         {
       
   762             mCharCounter->setVisible(false);
       
   763             mBackgroundItem->setVisible(false);
       
   764         }
       
   765     }
   590 }
   766 }
   591 
   767 
   592 void MsgUnifiedEditorBody::EditorOperationEvent(
   768 void MsgUnifiedEditorBody::EditorOperationEvent(
   593     TUniEditorProcessImageOperationEvent aEvent, TFileName aFileName)
   769     TUniEditorProcessImageOperationEvent aEvent, TFileName aFileName)
   594 {
   770 {
   623     mIconItem->hide();
   799     mIconItem->hide();
   624     HbStyle::setItemName(mIconItem,"pixmap");
   800     HbStyle::setItemName(mIconItem,"pixmap");
   625     mIconItem->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
   801     mIconItem->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
   626     mIconItem->setIcon(animIcon);
   802     mIconItem->setIcon(animIcon);
   627 
   803 
   628     mImageFile = ":/qtg_anim_longtap_2.svg";
   804     mImageFile = ANIMATION_ICON;
   629     HbIconAnimator animator;
   805     HbIconAnimator animator;
   630     animator.setIcon(animIcon);
   806     animator.setIcon(animIcon);
   631 
   807 
   632     animator.startAnimation();
   808     animator.startAnimation();
   633     this->repolish();
   809     this->repolish();
   640         delete mIconItem;
   816         delete mIconItem;
   641         mIconItem = NULL;     
   817         mIconItem = NULL;     
   642     }   
   818     }   
   643 }
   819 }
   644 
   820 
       
   821 // ---------------------------------------------------------
       
   822 // MsgUnifiedEditorBody::isUnicode
       
   823 // ---------------------------------------------------------
       
   824 //
       
   825 bool MsgUnifiedEditorBody::isUnicode()
       
   826 {
       
   827     return mUnicode;
       
   828 }
       
   829 
       
   830 // ---------------------------------------------------------
       
   831 // MsgUnifiedEditorBody::disableCharCounter
       
   832 // ---------------------------------------------------------
       
   833 //
       
   834 void MsgUnifiedEditorBody::disableCharCounter()
       
   835 {
       
   836     mCharCounter->setVisible(false);
       
   837     mBackgroundItem->setVisible(false);
       
   838 }
       
   839 
       
   840 //---------------------------------------------------------------
       
   841 // MsgUnifiedEditorBody :: handleOk
       
   842 // @see header file
       
   843 //---------------------------------------------------------------
       
   844 void MsgUnifiedEditorBody::handleOk(const QVariant& result)
       
   845 {
       
   846     Q_UNUSED(result)
       
   847 }
       
   848 
       
   849 //---------------------------------------------------------------
       
   850 // MsgUnifiedEditorBody :: handleError
       
   851 // @see header file
       
   852 //---------------------------------------------------------------
       
   853 void MsgUnifiedEditorBody::handleError(int errorCode, 
       
   854     const QString& errorMessage)
       
   855 {
       
   856     Q_UNUSED(errorMessage)
       
   857     Q_UNUSED(errorCode)
       
   858 }
       
   859 
   645 // EOF
   860 // EOF