messagingapp/msgui/conversationview/src/msgconversationview.cpp
changeset 56 f42d9a78f435
parent 51 3507212d340e
child 62 fdbe8253b596
--- a/messagingapp/msgui/conversationview/src/msgconversationview.cpp	Wed Aug 18 00:46:12 2010 +0530
+++ b/messagingapp/msgui/conversationview/src/msgconversationview.cpp	Tue Aug 31 18:53:38 2010 +0530
@@ -18,6 +18,7 @@
 #include "msgconversationview.h"
 
 // SYSTEM INCLUDES
+#include <hbapplication.h>
 #include <HbMenu>
 #include <HbAction>
 #include <HbListView>
@@ -31,6 +32,7 @@
 #include <xqappmgr.h>
 #include <HbMainWindow>
 
+#include <QInputContext>
 #include <QDir>
 #include <QDateTime>
 #include <QGraphicsLinearLayout>
@@ -57,9 +59,9 @@
 #include "ringbc.h"
 #include "mmsconformancecheck.h"
 #include "msgsettingsview.h"
-#include "msgaudiofetcherview.h"
 #include "unieditorpluginloader.h"
 #include "unieditorplugininterface.h"
+#include "msgaudiofetcherdialog.h"
 
 //Item specific menu.
 
@@ -106,6 +108,7 @@
     mContactCardWidget(contactCardWidget),
     mSendUtil(NULL),
     mVkbHost(NULL),
+    mDialog(NULL),
     mVisibleIndex(),
     mModelPopulated(false),
     mViewReady(false)
@@ -133,7 +136,8 @@
 //---------------------------------------------------------------
 MsgConversationView::~MsgConversationView()
 {
-    
+    //delete the popup dialog
+    delete mDialog;
 }
 //---------------------------------------------------------------
 // MsgConversationView::setupView
@@ -485,6 +489,15 @@
         }
     }
     deactivateInputBlocker();
+
+    // make sure virtual keyboard is closed
+    QInputContext *ic = qApp->inputContext();
+    if (ic) {
+    QEvent *closeEvent = new QEvent(QEvent::CloseSoftwareInputPanel);
+    ic->filterEvent(closeEvent);
+    delete closeEvent;
+    }
+
     if( sendResult == KErrNotFound)
     {
     HbMessageBox::question(LOC_DIALOG_SMS_SETTINGS_INCOMPLETE, this,
@@ -595,25 +608,18 @@
 //---------------------------------------------------------------
 void MsgConversationView::fetchAudio()
 {
-    // Launch Audio fetcher view
-    QVariantList params;
-    QByteArray dataArray;
-    QDataStream messageStream
-    (&dataArray, QIODevice::WriteOnly | QIODevice::Append);
+    // Launch Audio fetcher dialog
+    if (!mDialog)
+    {
+        mDialog = new MsgAudioFetcherDialog();
+        bool b = connect(mDialog,
+                SIGNAL(audioSelected(QString&)),
+                this,
+                SLOT(onAudioSelected(QString&)));
+    }
 
-    ConvergedMessage message;
-    message.setBodyText(mEditorWidget->content());
-    // add address from contact-card to to-field
-    ConvergedMessageAddress address;
-    address.setAlias(mContactCardWidget->address().at(0)->alias());
-    address.setAddress(mContactCardWidget->address().at(0)->address());
-    message.addToRecipient(address);
-    message.serialize(messageStream);
-
-    params << MsgBaseView::AUDIOFETCHER; // target view
-    params << MsgBaseView::CV; // source view
-    params << dataArray;
-    emit switchView(params);
+    //show the dialog
+    mDialog->show();    
 }
 
 //---------------------------------------------------------------
@@ -841,7 +847,7 @@
 
     args << QVariant(messageId);
     request->setSynchronous(true);
-    
+    request->setEmbedded(true);
     request->setArguments(args);
     request->send();
     delete request;    
@@ -1488,4 +1494,34 @@
     return shared;
 }
 
+void MsgConversationView::onAudioSelected(QString& filePath)
+{
+    QVariantList params;
+    QByteArray dataArray;
+    QDataStream messageStream
+    (&dataArray, QIODevice::WriteOnly | QIODevice::Append);
+
+    ConvergedMessage message;
+    message.setBodyText(mEditorWidget->content());
+    // add address from contact-card to to-field
+    ConvergedMessageAddress address;
+    address.setAlias(mContactCardWidget->address().at(0)->alias());
+    address.setAddress(mContactCardWidget->address().at(0)->address());
+    message.addToRecipient(address);
+    
+    //add the attachment as selected from audio picker
+    ConvergedMessageAttachment* attachment =
+                new ConvergedMessageAttachment(filePath);
+    ConvergedMessageAttachmentList attachmentList;
+    attachmentList.append(attachment);
+    message.addAttachments(attachmentList);
+    message.serialize(messageStream);
+
+    params << MsgBaseView::UNIEDITOR; // target view
+    params << MsgBaseView::CV; // source view
+    params << dataArray;
+    params << MsgBaseView::ADD_AUDIO;
+    emit switchView(params);
+}
+
 // EOF