messagingapp/msgui/conversationview/src/msgconversationview.cpp
changeset 73 ecf6a73a9186
parent 67 fc91263aee62
equal deleted inserted replaced
68:e8a69c93c830 73:ecf6a73a9186
    58 #include "mmsconformancecheck.h"
    58 #include "mmsconformancecheck.h"
    59 #include "msgsettingsview.h"
    59 #include "msgsettingsview.h"
    60 #include "unieditorpluginloader.h"
    60 #include "unieditorpluginloader.h"
    61 #include "unieditorplugininterface.h"
    61 #include "unieditorplugininterface.h"
    62 #include "msgaudiofetcherdialog.h"
    62 #include "msgaudiofetcherdialog.h"
       
    63 #include "msgservicelaunchutil.h"
       
    64 
       
    65 // LOCALIZATION
       
    66 #define LOC_TITLE hbTrId("txt_messaging_title_messaging")
    63 
    67 
    64 //Item specific menu.
    68 //Item specific menu.
    65 
       
    66 #define LOC_COMMON_OPEN hbTrId("txt_common_menu_open")
    69 #define LOC_COMMON_OPEN hbTrId("txt_common_menu_open")
    67 #define LOC_COMMON_DELETE hbTrId("txt_common_menu_delete")
    70 #define LOC_COMMON_DELETE hbTrId("txt_common_menu_delete")
    68 #define LOC_COMMON_FORWARD hbTrId("txt_common_menu_forward")
    71 #define LOC_COMMON_FORWARD hbTrId("txt_common_menu_forward")
    69 #define LOC_COMMON_DOWNLOAD hbTrId("txt_messaging_menu_download")
    72 #define LOC_COMMON_DOWNLOAD hbTrId("txt_messaging_menu_download")
    70 #define LOC_COMMON_SEND  hbTrId("txt_common_button_send") 
    73 #define LOC_COMMON_SEND  hbTrId("txt_common_button_send") 
   244     // Hide editor in case of BT conversations.
   247     // Hide editor in case of BT conversations.
   245     qint64 convId = ConversationsEngine::instance()->getCurrentConversationId();
   248     qint64 convId = ConversationsEngine::instance()->getCurrentConversationId();
   246     if (INVALID_CONVID != convId) {
   249     if (INVALID_CONVID != convId) {
   247         mContactCardWidget->updateContents();
   250         mContactCardWidget->updateContents();
   248         if (KBluetoothMsgsConversationId == convId || !(mContactCardWidget->isValidAddress())) {
   251         if (KBluetoothMsgsConversationId == convId || !(mContactCardWidget->isValidAddress())) {
       
   252             this->menu()->clearActions();
   249             mMainLayout->removeItem(mEditorWidget);
   253             mMainLayout->removeItem(mEditorWidget);
   250             mEditorWidget->hide();
   254             mEditorWidget->hide();
   251             mEditorWidget->setParent(this);
   255             mEditorWidget->setParent(this);
   252         }
   256         }
   253         else {
   257         else {
       
   258             HbMenu *mainMenu = this->menu();
       
   259             if(mainMenu->isEmpty()) {
       
   260                mainMenu->addAction(QString());
       
   261             }
   254             mMainLayout->addItem(mEditorWidget);
   262             mMainLayout->addItem(mEditorWidget);
   255             mEditorWidget->show();
   263             mEditorWidget->show();
   256         }
   264         }
   257         TRAP_IGNORE(mEditorWidget->setEncodingSettingsL());
   265         TRAP_IGNORE(mEditorWidget->setEncodingSettingsL());
   258     }
   266     }
   534     HbAction* action = qobject_cast<HbAction*>(sender());
   542     HbAction* action = qobject_cast<HbAction*>(sender());
   535 
   543 
   536     if(!action)
   544     if(!action)
   537         return;
   545         return;
   538 
   546 
       
   547     QList<QVariant> args;
       
   548     args << LOC_TITLE;
       
   549 
   539     QString service("phonebookservices");
   550     QString service("phonebookservices");
   540     QString interface("com.nokia.symbian.IContactsFetch");
   551     QString interface("com.nokia.symbian.IContactsFetch");
   541     QString operation("multiFetch(QString,QString)");
   552     QString operation("multiFetch(QString,QString)");
   542     XQAiwRequest* request;
   553     XQAiwRequest* request;
   543     XQApplicationManager appManager;
   554     XQApplicationManager appManager;
   549 
   560 
   550     int mode = action->data().toInt();
   561     int mode = action->data().toInt();
   551     
   562     
   552     if( VCARD_INSERTION_MODE == mode) //vcard-insert mode
   563     if( VCARD_INSERTION_MODE == mode) //vcard-insert mode
   553     {
   564     {
       
   565         args << KCntActionAll;
   554         connect(request, SIGNAL(requestOk(const QVariant&)),
   566         connect(request, SIGNAL(requestOk(const QVariant&)),
   555             this, SLOT(contactsFetchedForVCards(const QVariant&)));      
   567             this, SLOT(contactsFetchedForVCards(const QVariant&)));      
   556     }
   568     }
   557     else  //contact-insert mode
   569     else  //contact-insert mode
   558     {
   570     {
       
   571         args << KCntActionSms;
   559         connect(request, SIGNAL(requestOk(const QVariant&)),
   572         connect(request, SIGNAL(requestOk(const QVariant&)),
   560             this, SLOT(contactsFetched(const QVariant&)));
   573             this, SLOT(contactsFetched(const QVariant&)));
   561     }
   574     }
   562     connect (request, SIGNAL(requestError(int,const QString&)), 
   575     connect (request, SIGNAL(requestError(int,const QString&)), 
   563         this, SLOT(serviceRequestError(int,const QString&)));
   576         this, SLOT(serviceRequestError(int,const QString&)));
   564 
   577 
   565     QList<QVariant> args;
       
   566     args << QString(tr("Phonebook")); 
       
   567     args << KCntActionAll;
       
   568     args << KCntFilterDisplayAll;
   578     args << KCntFilterDisplayAll;
   569 
       
   570     request->setArguments(args);
   579     request->setArguments(args);
   571     request->send();
   580     request->send();
   572     delete request;
   581     delete request;
   573 }
   582 }
   574 //---------------------------------------------------------------
   583 //---------------------------------------------------------------
   834 //---------------------------------------------------------------
   843 //---------------------------------------------------------------
   835 void MsgConversationView::launchBtDisplayService(const QModelIndex & index)
   844 void MsgConversationView::launchBtDisplayService(const QModelIndex & index)
   836 {
   845 {
   837     qint32 messageId = index.data(ConvergedMsgId).toLongLong();
   846     qint32 messageId = index.data(ConvergedMsgId).toLongLong();
   838 
   847 
   839     QList<QVariant> args;
   848     // launch using msgservicelaunchutils
   840     QString serviceName("com.nokia.services.btmsgdispservices");
   849     
   841     QString operation("displaymsg(int)");
   850     MsgServiceLaunchUtil serviceLaunchUtil;
   842     XQAiwRequest* request;
   851     
   843     XQApplicationManager appManager;
   852     serviceLaunchUtil.launchContentViewer(messageId);
   844     request = appManager.create(serviceName, "displaymsg", operation, false); // embedded
   853    
   845     
       
   846     if ( request == NULL )
       
   847         {
       
   848         return;
       
   849         }
       
   850 
       
   851     args << QVariant(messageId);
       
   852     request->setSynchronous(true);
       
   853     request->setEmbedded(true);
       
   854     request->setArguments(args);
       
   855     request->send();
       
   856     delete request;    
       
   857 }
   854 }
   858 
   855 
   859 //---------------------------------------------------------------
   856 //---------------------------------------------------------------
   860 // MsgConversationView::menuAboutToShow()
   857 // MsgConversationView::menuAboutToShow()
   861 // @See header
   858 // @See header
   864 {
   861 {
   865     // Clear all the previously added actions.
   862     // Clear all the previously added actions.
   866     HbMenu *mainMenu = this->menu();
   863     HbMenu *mainMenu = this->menu();
   867     mainMenu->clearActions();
   864     mainMenu->clearActions();
   868 
   865 
   869     // Message type specific menu items
   866     // Attach sub-menu
   870     QModelIndex index = ConversationsEngine::instance()->getConversationsModel()->index(0, 0);
   867     HbMenu *attachSubMenu = mainMenu->addMenu(LOC_ATTACH);
   871     if (ConvergedMessage::BT != index.data(MessageType).toInt())
   868     
   872     {
   869     attachSubMenu->addAction(LOC_PHOTO,this, SLOT(fetchImages()));
   873         // Attach sub-menu
   870     attachSubMenu->addAction(LOC_SOUND,this, SLOT(fetchAudio()));
   874         HbMenu *attachSubMenu = mainMenu->addMenu(LOC_ATTACH);
   871     
   875         
   872     HbAction* addVCard = attachSubMenu->addAction(LOC_VCARD);
   876         attachSubMenu->addAction(LOC_PHOTO,this, SLOT(fetchImages()));
   873     addVCard->setData(VCARD_INSERTION_MODE);        
   877         attachSubMenu->addAction(LOC_SOUND,this, SLOT(fetchAudio()));
   874     connect(addVCard, SIGNAL(triggered()),this,SLOT(fetchContacts()));
   878 		
   875 
   879         HbAction* addVCard = attachSubMenu->addAction(LOC_VCARD);
   876     HbAction *addRecipients = mainMenu->addAction(LOC_ADD_RECIPIENTS);
   880         addVCard->setData(VCARD_INSERTION_MODE);        
   877     addRecipients->setData(CONTACT_INSERTION_MODE);        
   881         connect(addVCard, SIGNAL(triggered()),this,SLOT(fetchContacts()));
   878     connect(addRecipients, SIGNAL(triggered()), this, SLOT(fetchContacts()));
   882 
   879 
   883         HbAction *addRecipients = mainMenu->addAction(LOC_ADD_RECIPIENTS);
   880     mainMenu->addAction(LOC_ADD_SUBJECT,this, SLOT(addSubject()));
   884         addRecipients->setData(CONTACT_INSERTION_MODE);        
   881 
   885         connect(addRecipients, SIGNAL(triggered()), this, SLOT(fetchContacts()));
       
   886 
       
   887         mainMenu->addAction(LOC_ADD_SUBJECT,this, SLOT(addSubject()));
       
   888     }
       
   889 }
   882 }
   890 
   883 
   891 //---------------------------------------------------------------
   884 //---------------------------------------------------------------
   892 //MsgConversationView::openItem
   885 //MsgConversationView::openItem
   893 //@see header
   886 //@see header
  1044     if( editorOperation != MsgBaseView::FORWARD_MSG )
  1037     if( editorOperation != MsgBaseView::FORWARD_MSG )
  1045     {
  1038     {
  1046         message.setBodyText(mEditorWidget->content());
  1039         message.setBodyText(mEditorWidget->content());
  1047 
  1040 
  1048         // add address from contact-card to to-field
  1041         // add address from contact-card to to-field
       
  1042         ConvergedMessageAddressList addresses;
       
  1043         addresses = mContactCardWidget->address();
       
  1044         
  1049         ConvergedMessageAddress address;
  1045         ConvergedMessageAddress address;
  1050         address.setAlias(mContactCardWidget->address().at(0)->alias());
  1046         address.setAlias(addresses.at(0)->alias());
  1051         address.setAddress(mContactCardWidget->address().at(0)->address());
  1047         address.setAddress(addresses.at(0)->address());
  1052         message.addToRecipient(address);
  1048         message.addToRecipient(address);
  1053 
  1049 
  1054         if(editorOperation == MsgBaseView::ADD_PHOTO ||
  1050         if(editorOperation == MsgBaseView::ADD_PHOTO ||
  1055            editorOperation == MsgBaseView::ADD_AUDIO ||
  1051            editorOperation == MsgBaseView::ADD_AUDIO ||
  1056            editorOperation == MsgBaseView::ADD_VIDEO )
  1052            editorOperation == MsgBaseView::ADD_VIDEO )
  1506     QDataStream messageStream
  1502     QDataStream messageStream
  1507     (&dataArray, QIODevice::WriteOnly | QIODevice::Append);
  1503     (&dataArray, QIODevice::WriteOnly | QIODevice::Append);
  1508 
  1504 
  1509     ConvergedMessage message;
  1505     ConvergedMessage message;
  1510     message.setBodyText(mEditorWidget->content());
  1506     message.setBodyText(mEditorWidget->content());
  1511     // add address from contact-card to to-field
  1507    
       
  1508     // add address from contact-card to to-field    
       
  1509     ConvergedMessageAddressList addresses;
       
  1510     addresses = mContactCardWidget->address();
       
  1511     
  1512     ConvergedMessageAddress address;
  1512     ConvergedMessageAddress address;
  1513     address.setAlias(mContactCardWidget->address().at(0)->alias());
  1513     address.setAlias(addresses.at(0)->alias());
  1514     address.setAddress(mContactCardWidget->address().at(0)->address());
  1514     address.setAddress(addresses.at(0)->address());
  1515     message.addToRecipient(address);
  1515     message.addToRecipient(address);
  1516     
  1516     
  1517     //add the attachment as selected from audio picker
  1517     //add the attachment as selected from audio picker
  1518     ConvergedMessageAttachment* attachment =
  1518     ConvergedMessageAttachment* attachment =
  1519                 new ConvergedMessageAttachment(filePath);
  1519                 new ConvergedMessageAttachment(filePath);