--- a/messagingapp/msgui/conversationview/src/msgconversationview.cpp Thu Sep 02 20:23:03 2010 +0300
+++ b/messagingapp/msgui/conversationview/src/msgconversationview.cpp Fri Sep 17 08:28:39 2010 +0300
@@ -18,19 +18,20 @@
#include "msgconversationview.h"
// SYSTEM INCLUDES
+#include <hbapplication.h>
#include <HbMenu>
#include <HbAction>
#include <HbListView>
#include <HbMessageBox>
#include <HbNotificationDialog>
#include <HbFrameBackground>
-#include <xqservicerequest.h>
#include <HbStaticVkbHost>
#include <HbStyleLoader>
#include <xqaiwrequest.h>
#include <xqappmgr.h>
#include <HbMainWindow>
+#include <QInputContext>
#include <QDir>
#include <QDateTime>
#include <QGraphicsLinearLayout>
@@ -57,9 +58,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 +107,7 @@
mContactCardWidget(contactCardWidget),
mSendUtil(NULL),
mVkbHost(NULL),
+ mDialog(NULL),
mVisibleIndex(),
mModelPopulated(false),
mViewReady(false)
@@ -133,7 +135,8 @@
//---------------------------------------------------------------
MsgConversationView::~MsgConversationView()
{
-
+ //delete the popup dialog
+ delete mDialog;
}
//---------------------------------------------------------------
// MsgConversationView::setupView
@@ -485,6 +488,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,
@@ -523,12 +535,12 @@
if(!action)
return;
- QList<QVariant> args;
- QString serviceName("com.nokia.services.phonebookservices");
- QString operation("fetch(QString,QString,QString)");
+ QString service("phonebookservices");
+ QString interface("com.nokia.symbian.IContactsFetch");
+ QString operation("multiFetch(QString,QString)");
XQAiwRequest* request;
XQApplicationManager appManager;
- request = appManager.create(serviceName, "Fetch", operation, true); //embedded
+ request = appManager.create(service, interface, operation, true); //embedded
if ( request == NULL )
{
return;
@@ -549,6 +561,7 @@
connect (request, SIGNAL(requestError(int,const QString&)),
this, SLOT(serviceRequestError(int,const QString&)));
+ QList<QVariant> args;
args << QString(tr("Phonebook"));
args << KCntActionAll;
args << KCntFilterDisplayAll;
@@ -569,13 +582,15 @@
XQAiwRequest* request = NULL;
XQApplicationManager appManager;
request = appManager.create(service,interface, operation, true); // embedded
- request->setSynchronous(true); // synchronous
+
if(!request)
{
QDEBUG_WRITE("AIW-ERROR: NULL request");
return;
}
+ request->setSynchronous(true); // synchronous
+
connect(request, SIGNAL(requestOk(const QVariant&)),
this, SLOT(imagesFetched(const QVariant&)));
connect(request, SIGNAL(requestError(int,const QString&)),
@@ -595,25 +610,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 +849,7 @@
args << QVariant(messageId);
request->setSynchronous(true);
-
+ request->setEmbedded(true);
request->setArguments(args);
request->send();
delete request;
@@ -976,7 +984,7 @@
// For suspended message both short tap and long tap needs to show the same
// context menu.....
if(direction == ConvergedMessage::Outgoing
- &&sendingState == ConvergedMessage::Suspended )
+ && ((sendingState == ConvergedMessage::Suspended) || (sendingState == ConvergedMessage::Failed)))
{
handleShortTap();
return;
@@ -1105,7 +1113,6 @@
if(!data2.isNull())
params << data2;
- clearEditors();
emit switchView(params);
}
@@ -1488,4 +1495,79 @@
return shared;
}
+//---------------------------------------------------------------
+// MsgConversationView::onAudioSelected
+// @see header file
+//---------------------------------------------------------------
+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);
+}
+
+//---------------------------------------------------------------
+// MsgConversationView::handleKeyEvent
+// @see header file
+//---------------------------------------------------------------
+bool MsgConversationView::handleKeyEvent(int key)
+{
+ bool eventHandled = false;
+ if (Qt::Key_Yes == key) {
+ //getting address of last sent/received msg.
+ const int rowCount = mMessageModel->rowCount();
+ QModelIndex index = mMessageModel->index(rowCount - 1, 0);
+ QString address = index.data(ConversationAddress).toString();
+
+ if (!address.isEmpty()) {
+ call(address);
+ eventHandled = true;
+ }
+ }
+ return eventHandled;
+}
+
+//---------------------------------------------------------------
+// MsgConversationView::call
+// @see header
+//---------------------------------------------------------------
+void MsgConversationView::call(const QString& address)
+{
+ QString service("phoneui");
+ QString interface("com.nokia.symbian.ICallDial");
+ QString operation("dial(QString)");
+
+ XQApplicationManager appManager;
+ QScopedPointer<XQAiwRequest> request(appManager.create(service, interface, operation, false));
+ if (request) {
+ QList<QVariant> args;
+ args << address;
+ request->setArguments(args);
+ request->send();
+ }
+}
+
// EOF