--- a/inc/unieditorplugininterface.h Tue Jul 06 22:50:16 2010 +0530
+++ b/inc/unieditorplugininterface.h Fri Jul 09 14:46:10 2010 +0530
@@ -34,7 +34,8 @@
*/
enum EditorOperation
{
- Forward = 0,
+ Forward = 0,
+ Reply,
ReplyAll,
Default
};
--- a/messagingapp/msgappfw/plugins/msgplugin/src/ccsmsghandler.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgappfw/plugins/msgplugin/src/ccsmsghandler.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -737,6 +737,18 @@
break;
case KSenduiMtmBioUidValue:
{
+ if (aEntry.iMtmData1 == KSenduiMtmBtUidValue)
+ {
+ if (aEntry.iBioType == KMsgBioUidVCard.iUid)
+ {
+ type = ECsBlueTooth_VCard;
+ }
+ else if (aEntry.iBioType == KMsgBioUidVCalendar.iUid)
+ {
+ type = ECsBlueTooth_VCal;
+ }
+ break;
+ }
type = ECsBioMsg;
// based on the biotype uid set message type
--- a/messagingapp/msgappfw/plugins/previewplugin/tsrc/group/test_pluginpreview.mmp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgappfw/plugins/previewplugin/tsrc/group/test_pluginpreview.mmp Fri Jul 09 14:46:10 2010 +0530
@@ -65,6 +65,7 @@
USERINCLUDE ..\..\inc
USERINCLUDE ..\..\..\..\..\msgutils\unidatautils\unidatamodel\inc
USERINCLUDE ..\..\..\..\..\..\messagingappbase\obexmtms\TObexMTM\INC
+USERINCLUDE ..\..\..\..\utils\inc
APP_LAYER_SYSTEMINCLUDE
MW_LAYER_SYSTEMINCLUDE
--- a/messagingapp/msgappfw/server/src/ccsconversationcachehelper.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgappfw/server/src/ccsconversationcachehelper.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -249,7 +249,7 @@
CCsConversationEntry* conEntry =
iConversationEvent->ClientConversation()->GetConversationEntry();
- if (ECsBlueTooth == conEntry->GetType())
+ if (ECsBlueTooth == conEntry->GetType()|| ECsBlueTooth_VCard == conEntry->GetType()|| ECsBlueTooth_VCal == conEntry->GetType())
{
AddConversationEntryL(conEntry, KBluetoothMsgsConversationId);
}
@@ -290,7 +290,7 @@
TUint8 CCsConversationCacheHelper::NeedsSpecialProcessing(
CCsConversationEntry* aConversationEntry)
{
- if (ECsBlueTooth == aConversationEntry->GetType())
+ if (ECsBlueTooth == aConversationEntry->GetType() || ECsBlueTooth_VCard == aConversationEntry->GetType() || ECsBlueTooth_VCal == aConversationEntry->GetType())
{
return 1;
}
--- a/messagingapp/msgservices/msgserviceapp/src/msgstorehandler.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgservices/msgserviceapp/src/msgstorehandler.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -120,6 +120,21 @@
break;
case KSenduiMtmBioUidValue:
{
+ if (entry.iMtmData1 == KSenduiMtmBtUidValue)
+ {
+ msgType = ConvergedMessage::BT;
+
+ if (entry.iBioType == KMsgBioUidVCard.iUid)
+ {
+ msgSubType = ConvergedMessage::VCard;
+ }
+ else if (entry.iBioType == KMsgBioUidVCalendar.iUid)
+ {
+ msgSubType = ConvergedMessage::VCal;
+ }
+
+ break;
+ }
msgType = ConvergedMessage::BioMsg;
// based on the biotype uid set message type
--- a/messagingapp/msgsettings/settingsview/inc/msgsettingsform.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgsettings/settingsview/inc/msgsettingsform.h Fri Jul 09 14:46:10 2010 +0530
@@ -34,7 +34,6 @@
QGraphicsItem *parent = 0);
~MsgSettingsForm();
void refreshViewForm();
- void expandSMSSettings();
signals:
void newSMSCCenterClicked(int);
@@ -44,6 +43,7 @@
void addMMSGroupItem(HbDataFormModelItem* parent);
void addSmsMCGroupItem(HbDataFormModelItem* parent);
void updateSmsMCGroupItem(HbDataFormModelItem* parent);
+ void expandGroup(HbDataFormModelItem* group,bool expand);
private slots:
void onPressedServiceMessages();
--- a/messagingapp/msgsettings/settingsview/inc/msgsettingsview.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgsettings/settingsview/inc/msgsettingsview.h Fri Jul 09 14:46:10 2010 +0530
@@ -60,6 +60,10 @@
//Settings Form
MsgSettingsForm* mSettingsForm;
+ //main window.
HbMainWindow* mMainWindow;
+
+ //current settings view.
+ SettingsView mCurrentView;
};
#endif // MSGSETTINGSVIEW_H
--- a/messagingapp/msgsettings/settingsview/src/msgsettingsform.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgsettings/settingsview/src/msgsettingsform.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -157,15 +157,10 @@
if (settingsView == MsgSettingsView::MMSView)
{
//set MMS Settings as expanded
- QModelIndex index_mms = settingsModel->indexFromItem(mmsGroup);
//TODO: dataform issue on expanding one group item
- //this->setExpanded(index_mms, true);
+// expandGroup(mmsGroup,true);
}
- else if(settingsView == MsgSettingsView::SMSView)
- {
- //expandSMSSettings();
- }
-
+
}
void MsgSettingsForm::refreshViewForm()
@@ -227,6 +222,7 @@
this,
SLOT(onPressedCustomButton()));
}
+
}
void MsgSettingsForm::addMMSGroupItem(HbDataFormModelItem* parent)
@@ -489,10 +485,13 @@
mSettingEngine->setSMSMessageCenter(index);
}
-void MsgSettingsForm::expandSMSSettings()
+void MsgSettingsForm::expandGroup(HbDataFormModelItem* group,bool expand)
{
- QModelIndex index_sms = settingsModel->indexFromItem(mSmsMCGroup);
+ QModelIndex index = settingsModel->indexFromItem(group);
- this->setExpanded(index_sms, true);
+ if(index.isValid())
+ {
+ this->setExpanded(index, expand);
+ }
}
//EOF
--- a/messagingapp/msgsettings/settingsview/src/msgsettingsview.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgsettings/settingsview/src/msgsettingsview.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -17,6 +17,7 @@
#include <hbmainwindow.h>
#include <hbgroupbox.h>
#include <QGraphicsLinearLayout>
+#include <HbAction>
#include "msgsettingsview.h"
#include "msgsettingsform.h"
@@ -26,9 +27,11 @@
//LOCALAIZED CONSTANTS
#define LOC_MESSAGE_SETTINGS_HEADING hbTrId("txt_messaging_title_messaging_settings")
-MsgSettingsView::MsgSettingsView(SettingsView settingsView,
- QGraphicsItem *parent) :
- MsgBaseView(parent), mSMSCenterView(0), mSettingsForm(0)
+MsgSettingsView::MsgSettingsView(SettingsView settingsView,QGraphicsItem *parent):
+MsgBaseView(parent),
+mSMSCenterView(0),
+mSettingsForm(0),
+mCurrentView(settingsView)
{
mMainWindow = this->mainWindow();
@@ -47,11 +50,18 @@
SIGNAL(newSMSCCenterClicked(int)),
this,
SLOT(onNewSMSCCenterClicked(int)));
+
mainLayout->addItem(viewHeading);
mainLayout->addItem(mSettingsForm);
this->setLayout(mainLayout);
+
+ //sms settings need to be created so launch MsgSMSCenterView in edit mode.
+ if(settingsView == SMSView)
+ {
+ onNewSMSCCenterClicked(-1);
+ }
}
MsgSettingsView::~MsgSettingsView()
@@ -81,9 +91,16 @@
void MsgSettingsView::onSmsCenterEditViewClosed()
{
+
+ //sms center view was directly launched, no need to go back to settings view.
+ if(mCurrentView == SMSView)
+ {
+ this->navigationAction()->trigger();
+ return;
+ }
//remove the view
mMainWindow->removeView(mSMSCenterView);
-
+
//refresh the form
mSettingsForm->refreshViewForm();
--- a/messagingapp/msgsettings/settingsview/src/msgsmscentersettingsform.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgsettings/settingsview/src/msgsmscentersettingsform.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -32,8 +32,9 @@
//Localized constants
#define LOC_SMS_CENTRE_NAME hbTrId("txt_messaging_setlabel_message_centre_name")
#define LOC_SMS_CENTRE_NUMBER hbTrId("txt_messaging_setlabel_message_centre_number")
-#define LOC_SMS_CENTRE_DELETE hbTrId("txt_messaging_button_delete_message_centre")
-#define LOC_MESSAGE_CENTER_SAVED hbTrId("txt_messaging_setlabel_message_centre_saved")
+#define LOC_DELETE hbTrId("txt_messaging_button_delete_message_centre")
+#define LOC_SMS_CENTRE_DELETE hbTrId("txt_messaging_dialog_delete_message_centre")
+#define LOC_MESSAGE_CENTER_SAVED hbTrId("txt_messaging_dpopinfo_message_centre_saved")
MsgSMSCenterSettingsForm::MsgSMSCenterSettingsForm(int view,
QGraphicsItem *parent) :
@@ -114,12 +115,9 @@
QString(""),
settingsmodel->invisibleRootItem());
- deleteMessageCentre->setContentWidgetData("text",
- LOC_SMS_CENTRE_DELETE);
- this->addConnection(deleteMessageCentre,
- SIGNAL(clicked()),
- this,
- SLOT(onPressedCustomButton()));
+ deleteMessageCentre->setContentWidgetData("text",LOC_DELETE);
+ this->addConnection(deleteMessageCentre,SIGNAL(clicked()),
+ this,SLOT(onPressedCustomButton()));
}
this->setModel(settingsmodel);
@@ -153,12 +151,11 @@
}
else
{
- mSettingEngine->editSmsMessageCenter(centerName,
- centerNumber,
- mView);
-
- HbNotificationDialog::launchDialog(LOC_MESSAGE_CENTER_SAVED);
+ mSettingEngine->editSmsMessageCenter(centerName, centerNumber, mView);
}
+
+ HbNotificationDialog::launchDialog(LOC_MESSAGE_CENTER_SAVED);
+
QDEBUG_WRITE("ex MsgSMSCenterSettingsForm::commitChanges");
}
--- a/messagingapp/msgui/appengine/inc/conversationmsgstorehandler.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/appengine/inc/conversationmsgstorehandler.h Fri Jul 09 14:46:10 2010 +0530
@@ -147,9 +147,9 @@
/**
* Seeker method for getting mms notification estimated msg size
- * @return Formatted string of msg size
+ * @return formatted string for msg size in KB
*/
- QString NotificationMsgSizeL();
+ QString NotificationMsgSize();
/**
* Seeker method for getting mms notification class type
@@ -168,13 +168,9 @@
/**
* Seeker method getting expiry info of a notification msg
- * @param [OUT] expiryTime, notification's expiry time
- * @param [OUT] expiryTimeQString, formatted string of
- * notification's expiry time
+ * @return formatted string of notification's expiry time
*/
- void NotificationExpiryDate(
- TTime& expiryTime,
- QString& expiryTimeStr);
+ QString NotificationExpiryDate();
/**
* Download a specified message
@@ -223,6 +219,11 @@
* Checks if the MTM type supported
*/
TBool IsMtmSupported(long uid);
+
+ /**
+ * Get max receive size limit (for MMS) from settings
+ */
+ TInt MaxReceiveSizeLimitL();
private:
/**
--- a/messagingapp/msgui/appengine/src/conversationmsgstorehandler.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/appengine/src/conversationmsgstorehandler.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -15,6 +15,7 @@
*
*/
+#include <hbglobal.h>
#include <textresolver.h> // from CommonEngine
#include <mtclreg.h>
#include <mmsnotificationclient.h>
@@ -46,6 +47,17 @@
_LIT(KUnixEpoch, "19700000:000000.000000");
#define BYTES_TO_KBYTES_FACTOR 1024
+// LOCALIZATION
+#define LOC_MESSAGE_SIZE hbTrId("txt_messaging_list_size")
+#define LOC_CLASS_ADVERTISEMENT hbTrId("txt_messaging_list_advertisement")
+#define LOC_CLASS_INFORMATIONAL hbTrId("txt_messaging_list_informational")
+#define LOC_CLASS_PERSONAL hbTrId("txt_messaging_list_personal")
+#define LOC_MMS_RETRIEVAL_FAILED hbTrId("txt_messaging_dialog_mms_retrieval_failed")
+#define LOC_MMS_NOTIF_EXPIRED hbTrId("Message Expired !") //TODO: localization
+#define LOC_MMS_WAITING hbTrId("txt_wireframe_list_multimedia_message_waiting")
+#define LOC_MMS_RETRIEVING hbTrId("Retrieving message...") //TODO: localization
+#define LOC_MMS_EXPIRY_DATE hbTrId("txt_messaging_list_expiry_date")
+
// TODO: read global setting of formats on the phone
const QString DATE_FORMAT("dd/MM");
const QString TIME_FORMAT("hh:mm");
@@ -674,18 +686,14 @@
// ConversationMsgStoreHandler::NotificationMsgSizeL
// @see header
//---------------------------------------------------------------
-QString ConversationMsgStoreHandler::NotificationMsgSizeL()
+QString ConversationMsgStoreHandler::NotificationMsgSize()
{
// Size of message.
TInt size = iNotificationClient->MessageTransferSize( );
-
+
// read max receive size limit from settings
- CMmsSettings* settings = CMmsSettings::NewL();
- CleanupStack::PushL( settings );
- iNotificationClient->RestoreSettingsL();
- settings->CopyL( iNotificationClient->MmsSettings() );
- TInt maxSize = static_cast<TInt>(settings->MaximumReceiveSize() );
- CleanupStack::PopAndDestroy( settings );
+ TInt maxSize = 0;
+ TRAP_IGNORE(maxSize = MaxReceiveSizeLimitL());
// apply max size limit rule
if( maxSize > 0 )
@@ -696,16 +704,13 @@
}
}
- // Finally make the UI string
- int fileSize = size / BYTES_TO_KBYTES_FACTOR;
+ TInt fileSize = size / BYTES_TO_KBYTES_FACTOR;
if ( size % BYTES_TO_KBYTES_FACTOR )
{
fileSize++;
}
- // TODO: use localized string constants here
- QString sizeString = QString("%1").arg(fileSize);
- sizeString.append(" Kb");
- return sizeString;
+
+ return LOC_MESSAGE_SIZE.arg(fileSize);
}
//---------------------------------------------------------------
@@ -714,24 +719,23 @@
//---------------------------------------------------------------
QString ConversationMsgStoreHandler::NotificationClass()
{
- //TODO: use localized string
QString notificationClass;
TInt msgClass = iNotificationClient->MessageClass( );
switch( msgClass )
{
case EMmsClassPersonal:
{
- notificationClass = "Personal";
+ notificationClass = LOC_CLASS_PERSONAL;
break;
}
case EMmsClassAdvertisement:
{
- notificationClass = "Advertisement";
+ notificationClass = LOC_CLASS_ADVERTISEMENT;
break;
}
case EMmsClassInformational:
{
- notificationClass = "Informative";
+ notificationClass = LOC_CLASS_INFORMATIONAL;
break;
}
default:
@@ -750,7 +754,6 @@
int& status,
QString& statusStr)
{
- // TODO : use standard strings provided by Arul
// fetch mms notification status from store handler
// and map as per our UI requirements
TMsvEntry entry = iNotificationClient->Entry().Entry();
@@ -759,23 +762,23 @@
{
case ConvergedMessage::NotifFailed:
{
- statusStr = "Message retrieval failed !";
+ statusStr = LOC_MMS_RETRIEVAL_FAILED;
break;
}
case ConvergedMessage::NotifExpired:
{
- statusStr = "Message Expired !";
+ statusStr = LOC_MMS_NOTIF_EXPIRED;
break;
}
case ConvergedMessage::NotifReadyForFetching:
{
- statusStr = "Multimedia Message waiting...";
+ statusStr = LOC_MMS_WAITING;
break;
}
case ConvergedMessage::NotifWaiting:
case ConvergedMessage::NotifRetrieving:
{
- statusStr = "Retrieving message...";
+ statusStr = LOC_MMS_RETRIEVING;
break;
}
default:
@@ -790,10 +793,11 @@
// ConversationMsgStoreHandler::NotificationExpiryDate
// @see header
//---------------------------------------------------------------
-void ConversationMsgStoreHandler::NotificationExpiryDate(
- TTime& expiryTime,
- QString& expiryTimeStr)
+QString ConversationMsgStoreHandler::NotificationExpiryDate()
{
+ TTime expiryTime = 0;
+ QString expiryTimeStr;
+
// get expiry time from entry
expiryTime = iNotificationClient->ExpiryDate( );
TLocale locale;
@@ -808,14 +812,7 @@
TTime unixEpoch(KUnixEpoch);
TTimeIntervalSeconds seconds;
expiryTime.SecondsFrom(unixEpoch, seconds);
- QDateTime dateTime;
- dateTime.setTime_t(seconds.Int());
- if (dateTime.date() == QDateTime::currentDateTime().date()) {
- expiryTimeStr = dateTime.toString(TIME_FORMAT);
- }
- else {
- expiryTimeStr = dateTime.toString(DATE_FORMAT);
- }
+ return LOC_MMS_EXPIRY_DATE.arg(seconds.Int());
}
//-----------------------------------------------------------------------------
@@ -967,6 +964,22 @@
break;
case KSenduiMtmBioUidValue:
{
+ if (entry.iMtmData1 == KSenduiMtmBtUidValue)
+ {
+ msgType = ConvergedMessage::BT;
+
+ if (entry.iBioType == KMsgBioUidVCard.iUid)
+ {
+ msgSubType = ConvergedMessage::VCard;
+ }
+ else if (entry.iBioType == KMsgBioUidVCalendar.iUid)
+ {
+
+ msgSubType = ConvergedMessage::VCal;
+ }
+
+ break;
+ }
msgType = ConvergedMessage::BioMsg;
// based on the biotype uid set message type
@@ -997,6 +1010,10 @@
}
}
+//----------------------------------------------------------------------------
+// ConversationMsgStoreHandler::getMsgSubType
+// @see header
+//----------------------------------------------------------------------------
int ConversationMsgStoreHandler::getMsgSubType(int msgId)
{
int msgType = ConvergedMessage::None;
@@ -1010,4 +1027,19 @@
return msgSubType;
}
+//----------------------------------------------------------------------------
+// ConversationMsgStoreHandler::MaxReceiveSizeLimitL
+// @see header
+//----------------------------------------------------------------------------
+TInt ConversationMsgStoreHandler::MaxReceiveSizeLimitL()
+{
+ CMmsSettings* settings = CMmsSettings::NewL();
+ CleanupStack::PushL( settings );
+ iNotificationClient->RestoreSettingsL();
+ settings->CopyL( iNotificationClient->MmsSettings() );
+ TInt maxSize = static_cast<TInt>(settings->MaximumReceiveSize() );
+ CleanupStack::PopAndDestroy( settings );
+ return maxSize;
+}
+
// End of file
--- a/messagingapp/msgui/appengine/src/conversationsengineutility.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/appengine/src/conversationsengineutility.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -51,6 +51,8 @@
mMessageType = ConvergedMessage::BioMsg;
break;
case ECsBlueTooth:
+ case ECsBlueTooth_VCard:
+ case ECsBlueTooth_VCal:
mMessageType = ConvergedMessage::BT;
break;
case ECsMmsNotification:
@@ -110,6 +112,12 @@
case ECsBioMsg_VCal:
messageSubType = ConvergedMessage::VCal;
break;
+ case ECsBlueTooth_VCard:
+ messageSubType = ConvergedMessage::VCard;
+ break;
+ case ECsBlueTooth_VCal:
+ messageSubType = ConvergedMessage::VCal;
+ break;
case ECsAudio:
messageSubType = ConvergedMessage::Audio;
break;
--- a/messagingapp/msgui/appengine/src/conversationsmodel.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/appengine/src/conversationsmodel.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -663,21 +663,6 @@
}
// fetch relevent info to show in CV
- // msg size
- QString estimatedMsgSizeStr = QString("%1").arg(0);
- estimatedMsgSizeStr.append(" Kb");
- TRAP_IGNORE(estimatedMsgSizeStr =
- mMsgStoreHandler->NotificationMsgSizeL());
-
- // msg class type
- QString classInfoStr = mMsgStoreHandler->NotificationClass();
-
- // notification expiry date
- //TODO: Need to do localization of digits used to show expiry time
- TTime expiryTime;
- QString expiryTimeStr;
- mMsgStoreHandler->NotificationExpiryDate(expiryTime, expiryTimeStr);
-
// notification state e.g. waiting, retrieving etc
QString statusStr;
int status;
@@ -685,19 +670,15 @@
// create data for bodytext role
QString dataText;
- dataText.append("Size: "); // TODO: use logical str name
- dataText.append(estimatedMsgSizeStr);
+ dataText.append(mMsgStoreHandler->NotificationMsgSize());
dataText.append(QChar::LineSeparator);
- dataText.append("Class: "); // TODO: use logical str name
- dataText.append(classInfoStr);
+ dataText.append(mMsgStoreHandler->NotificationClass());
dataText.append(QChar::LineSeparator);
- dataText.append("Expiry date: "); //TODO: use logical str name
- dataText.append(expiryTimeStr);
+ dataText.append(mMsgStoreHandler->NotificationExpiryDate());
if(!statusStr.isEmpty())
{
dataText.append(QChar::LineSeparator);
dataText.append(statusStr);
- dataText.append(QChar::LineSeparator); //Temp fix to be removed
}
// set fetched data to roles
@@ -719,38 +700,49 @@
void ConversationsModel::handleBlueToothMessages(QStandardItem& item,
const CCsConversationEntry& entry)
{
- //TODO, needs to be revisited again, once BT team provides the solution for
- //BT received as Biomsg issue.
- QString description = XQConversions::s60DescToQString(*(entry.Description()));
+ int msgSubType = ConversationsEngineUtility::messageSubType(entry.GetType());
+ if (msgSubType == ConvergedMessage::VCard)
+ {
+ iBioMsgPlugin->setMessageId(entry.EntryId());
+
+ if (iBioMsgPlugin->attachmentCount() > 0)
+ {
+ UniMessageInfoList attList = iBioMsgPlugin->attachmentList();
+ QString attachmentPath = attList[0]->path();
- if (description.contains(".vcf") || description.contains(".ics")) // "vCard"
- {
- //message sub-type
- item.setData(ConvergedMessage::VCard, MessageSubType);
+ //get display-name and set as bodytext
+ QString displayName = MsgContactHandler::getVCardDisplayName(attachmentPath);
+ item.setData(displayName, BodyText);
+ // clear attachement list : its allocated at data model
+ while (!attList.isEmpty())
+ {
+ delete attList.takeFirst();
+ }
+
+ }
+ }
- //parse vcf file to get the details
- QString displayName = MsgContactHandler::getVCardDisplayName(
- description);
- item.setData(displayName, BodyText);
- }
- else
- {
- if (description.contains(".vcs")) // "vCalendar"
- {
- //message sub-type
- item.setData(ConvergedMessage::VCal, MessageSubType);
- }
- else
- {
- //message sub-type
- item.setData(ConvergedMessage::None, MessageSubType);
- }
- //for BT messages we show filenames for all other (except vcard) messages
- //get filename and set as body
- QFileInfo fileinfo(description);
- QString filename = fileinfo.fileName();
- item.setData(filename, BodyText);
- }
+ else
+ {
+ QString description = XQConversions::s60DescToQString(*(entry.Description()));
+
+ if (msgSubType == ConvergedMessage::VCal) // "vCalendar"
+ {
+ //message sub-type
+ item.setData(ConvergedMessage::VCal, MessageSubType);
+ }
+ else
+ {
+ //message sub-type
+ item.setData(ConvergedMessage::None, MessageSubType);
+ }
+ //for BT messages we show filenames for all other (except vcard) messages
+ //get filename and set as body
+ QFileInfo fileinfo(description);
+ QString filename = fileinfo.fileName();
+ item.setData(filename, BodyText);
+ }
+
}
//---------------------------------------------------------------
--- a/messagingapp/msgui/appengine/src/conversationssummarymodel.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/appengine/src/conversationssummarymodel.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -305,29 +305,44 @@
void ConversationsSummaryModel::handleBlueToothMessages(QStandardItem& item,
const CCsConversationEntry& entry)
{
- //TODO, needs to be revisited again, once BT team provides the solution for
- //BT received as Biomsg issue.
- QString description = XQConversions::s60DescToQString(*(entry.Description()));
-
- if (description.contains(".vcf") || description.contains(".ics")) // "vCard"
+ int msgSubType = ConversationsEngineUtility::messageSubType(entry.GetType());
+ if (msgSubType == ConvergedMessage::VCard)
{
- //message sub-type
- item.setData(ConvergedMessage::VCard, MessageSubType);
+ UniDataModelLoader* pluginLoader = new UniDataModelLoader;
+ UniDataModelPluginInterface* bioMsgPlugin = pluginLoader->getDataModelPlugin(
+ ConvergedMessage::BioMsg);
+ bioMsgPlugin->setMessageId(entry.EntryId());
+
+ if (bioMsgPlugin->attachmentCount() > 0)
+ {
+ UniMessageInfoList attList = bioMsgPlugin->attachmentList();
+ QString attachmentPath = attList[0]->path();
- //parse vcf file to get the details
- QString displayName = MsgContactHandler::getVCardDisplayName(
- description);
- item.setData(displayName, BodyText);
+ //get display-name and set as bodytext
+ QString displayName = MsgContactHandler::getVCardDisplayName(attachmentPath);
+ item.setData(displayName, BodyText);
+
+ // clear attachement list : its allocated at data model
+ while (!attList.isEmpty())
+ {
+ delete attList.takeFirst();
+ }
+
+ }
+ delete pluginLoader;
}
+
else
{
- if (description.contains(".vcs")) // "vCalendar"
+ QString description = XQConversions::s60DescToQString(*(entry.Description()));
+
+ if (msgSubType == ConvergedMessage::VCal) // "vCalendar"
{
//message sub-type
item.setData(ConvergedMessage::VCal, MessageSubType);
}
- else
- {
+ else
+ {
//message sub-type
item.setData(ConvergedMessage::None, MessageSubType);
}
--- a/messagingapp/msgui/appengine/tsrc/testconversationengine/testconversationengine.pro Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/appengine/tsrc/testconversationengine/testconversationengine.pro Fri Jul 09 14:46:10 2010 +0530
@@ -32,6 +32,7 @@
INCLUDEPATH += ../../../../msgappfw/client/inc
INCLUDEPATH += ../../../../smartmessaging/ringbc/inc
INCLUDEPATH += ../../../../msgutils/unieditorutils/editorgenutils/inc
+INCLUDEPATH += ../../../msguiutils/inc
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
@@ -100,4 +101,6 @@
-lestor \
-lFeatMgr \
-lfbscli \
- -lringbc
+ -lringbc \
+ -lmsguiutils \
+ -lcsserverclientapi
--- a/messagingapp/msgui/bwins/appengineu.def Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/bwins/appengineu.def Fri Jul 09 14:46:10 2010 +0530
@@ -1,45 +1,47 @@
EXPORTS
?fetchMoreConversations@ConversationsEngine@@QAEXXZ @ 1 NONAME ; void ConversationsEngine::fetchMoreConversations(void)
- ?disableRegisterationForCVEvents@ConversationsEngine@@QAEXXZ @ 2 NONAME ; void ConversationsEngine::disableRegisterationForCVEvents(void)
- ?getConversationIdFromAddress@ConversationsEngine@@QAE_JVQString@@@Z @ 3 NONAME ; long long ConversationsEngine::getConversationIdFromAddress(class QString)
- ?deleteAllDraftMessages@ConversationsEngine@@QAEXXZ @ 4 NONAME ; void ConversationsEngine::deleteAllDraftMessages(void)
- ?metaObject@ConversationsEngine@@UBEPBUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const * ConversationsEngine::metaObject(void) const
- ??1ConversationsEngine@@UAE@XZ @ 6 NONAME ; ConversationsEngine::~ConversationsEngine(void)
- ?markAsReadAndGetType@ConversationsEngine@@QAEXHAAH0@Z @ 7 NONAME ; void ConversationsEngine::markAsReadAndGetType(int, int &, int &)
- ?deleteConversations@ConversationsEngine@@QAE_N_J@Z @ 8 NONAME ; bool ConversationsEngine::deleteConversations(long long)
- ?trUtf8@ConversationsEngine@@SA?AVQString@@PBD0@Z @ 9 NONAME ; class QString ConversationsEngine::trUtf8(char const *, char const *)
- ?qt_metacast@ConversationsEngine@@UAEPAXPBD@Z @ 10 NONAME ; void * ConversationsEngine::qt_metacast(char const *)
- ?emitConversationListModelPopulated@ConversationsEngine@@QAEXXZ @ 11 NONAME ; void ConversationsEngine::emitConversationListModelPopulated(void)
- ?getDraftsModel@ConversationsEngine@@QAEPAVQStandardItemModel@@XZ @ 12 NONAME ; class QStandardItemModel * ConversationsEngine::getDraftsModel(void)
- ?emitOpenConversationViewIdUpdate@ConversationsEngine@@QAEXH@Z @ 13 NONAME ; void ConversationsEngine::emitOpenConversationViewIdUpdate(int)
- ?trUtf8@ConversationsEngine@@SA?AVQString@@PBD0H@Z @ 14 NONAME ; class QString ConversationsEngine::trUtf8(char const *, char const *, int)
- ?tr@ConversationsEngine@@SA?AVQString@@PBD0H@Z @ 15 NONAME ; class QString ConversationsEngine::tr(char const *, char const *, int)
- ?conversationModelUpdated@ConversationsEngine@@IAEXXZ @ 16 NONAME ; void ConversationsEngine::conversationModelUpdated(void)
- ?getStaticMetaObject@ConversationsEngine@@SAABUQMetaObject@@XZ @ 17 NONAME ; struct QMetaObject const & ConversationsEngine::getStaticMetaObject(void)
- ?downloadOperationSupported@ConversationsEngine@@QAE_NH@Z @ 18 NONAME ; bool ConversationsEngine::downloadOperationSupported(int)
- ?markMessagesRead@ConversationsEngine@@QAE_NAAV?$QList@H@@@Z @ 19 NONAME ; bool ConversationsEngine::markMessagesRead(class QList<int> &)
- ?conversationModelPopulated@ConversationsEngine@@IAEXXZ @ 20 NONAME ; void ConversationsEngine::conversationModelPopulated(void)
- ?downloadMessage@ConversationsEngine@@QAEHH@Z @ 21 NONAME ; int ConversationsEngine::downloadMessage(int)
- ?getConversationsModel@ConversationsEngine@@QAEPAVQStandardItemModel@@XZ @ 22 NONAME ; class QStandardItemModel * ConversationsEngine::getConversationsModel(void)
- ?markConversationRead@ConversationsEngine@@QAE_N_J@Z @ 23 NONAME ; bool ConversationsEngine::markConversationRead(long long)
- ?getCurrentConversationId@ConversationsEngine@@QAE_JXZ @ 24 NONAME ; long long ConversationsEngine::getCurrentConversationId(void)
- ??_EConversationsEngine@@UAE@I@Z @ 25 NONAME ; ConversationsEngine::~ConversationsEngine(unsigned int)
- ?getConversationsSummaryModel@ConversationsEngine@@QAEPAVQStandardItemModel@@XZ @ 26 NONAME ; class QStandardItemModel * ConversationsEngine::getConversationsSummaryModel(void)
- ?conversationListModelPopulated@ConversationsEngine@@IAEXXZ @ 27 NONAME ; void ConversationsEngine::conversationListModelPopulated(void)
- ??0ConversationsEngine@@AAE@PAVQObject@@@Z @ 28 NONAME ; ConversationsEngine::ConversationsEngine(class QObject *)
- ?getContactDetails@ConversationsEngine@@QAEX_JAAVQString@@1@Z @ 29 NONAME ; void ConversationsEngine::getContactDetails(long long, class QString &, class QString &)
- ?instance@ConversationsEngine@@SAPAV1@XZ @ 30 NONAME ; class ConversationsEngine * ConversationsEngine::instance(void)
- ?tr@ConversationsEngine@@SA?AVQString@@PBD0@Z @ 31 NONAME ; class QString ConversationsEngine::tr(char const *, char const *)
- ?resendMessage@ConversationsEngine@@QAE_NH@Z @ 32 NONAME ; bool ConversationsEngine::resendMessage(int)
- ?emitConversationModelUpdated@ConversationsEngine@@QAEXXZ @ 33 NONAME ; void ConversationsEngine::emitConversationModelUpdated(void)
- ?getConversations@ConversationsEngine@@QAE_N_J@Z @ 34 NONAME ; bool ConversationsEngine::getConversations(long long)
- ?clearConversations@ConversationsEngine@@QAE_NXZ @ 35 NONAME ; bool ConversationsEngine::clearConversations(void)
- ?getDBHandle@ConversationsEngine@@QAEAAVRSqlDatabase@@AAH@Z @ 36 NONAME ; class RSqlDatabase & ConversationsEngine::getDBHandle(int &)
- ?getMsgSubType@ConversationsEngine@@QAEHH@Z @ 37 NONAME ; int ConversationsEngine::getMsgSubType(int)
- ?getConversationIdFromContactId@ConversationsEngine@@QAE_JH@Z @ 38 NONAME ; long long ConversationsEngine::getConversationIdFromContactId(int)
- ?staticMetaObject@ConversationsEngine@@2UQMetaObject@@B @ 39 NONAME ; struct QMetaObject const ConversationsEngine::staticMetaObject
- ?deleteMessages@ConversationsEngine@@QAEXAAV?$QList@H@@@Z @ 40 NONAME ; void ConversationsEngine::deleteMessages(class QList<int> &)
- ?emitConversationModelPopulated@ConversationsEngine@@QAEXXZ @ 41 NONAME ; void ConversationsEngine::emitConversationModelPopulated(void)
- ?conversationViewEmpty@ConversationsEngine@@IAEXXZ @ 42 NONAME ; void ConversationsEngine::conversationViewEmpty(void)
- ?qt_metacall@ConversationsEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 43 NONAME ; int ConversationsEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?emitConversationListModelEntryDeleted@ConversationsEngine@@QAEXH@Z @ 2 NONAME ; void ConversationsEngine::emitConversationListModelEntryDeleted(int)
+ ?disableRegisterationForCVEvents@ConversationsEngine@@QAEXXZ @ 3 NONAME ; void ConversationsEngine::disableRegisterationForCVEvents(void)
+ ?getConversationIdFromAddress@ConversationsEngine@@QAE_JVQString@@@Z @ 4 NONAME ; long long ConversationsEngine::getConversationIdFromAddress(class QString)
+ ?deleteAllDraftMessages@ConversationsEngine@@QAEXXZ @ 5 NONAME ; void ConversationsEngine::deleteAllDraftMessages(void)
+ ?metaObject@ConversationsEngine@@UBEPBUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const * ConversationsEngine::metaObject(void) const
+ ??1ConversationsEngine@@UAE@XZ @ 7 NONAME ; ConversationsEngine::~ConversationsEngine(void)
+ ?markAsReadAndGetType@ConversationsEngine@@QAEXHAAH0@Z @ 8 NONAME ; void ConversationsEngine::markAsReadAndGetType(int, int &, int &)
+ ?deleteConversations@ConversationsEngine@@QAE_N_J@Z @ 9 NONAME ; bool ConversationsEngine::deleteConversations(long long)
+ ?trUtf8@ConversationsEngine@@SA?AVQString@@PBD0@Z @ 10 NONAME ; class QString ConversationsEngine::trUtf8(char const *, char const *)
+ ?qt_metacast@ConversationsEngine@@UAEPAXPBD@Z @ 11 NONAME ; void * ConversationsEngine::qt_metacast(char const *)
+ ?emitConversationListModelPopulated@ConversationsEngine@@QAEXXZ @ 12 NONAME ; void ConversationsEngine::emitConversationListModelPopulated(void)
+ ?getDraftsModel@ConversationsEngine@@QAEPAVQStandardItemModel@@XZ @ 13 NONAME ; class QStandardItemModel * ConversationsEngine::getDraftsModel(void)
+ ?emitOpenConversationViewIdUpdate@ConversationsEngine@@QAEXH@Z @ 14 NONAME ; void ConversationsEngine::emitOpenConversationViewIdUpdate(int)
+ ?trUtf8@ConversationsEngine@@SA?AVQString@@PBD0H@Z @ 15 NONAME ; class QString ConversationsEngine::trUtf8(char const *, char const *, int)
+ ?tr@ConversationsEngine@@SA?AVQString@@PBD0H@Z @ 16 NONAME ; class QString ConversationsEngine::tr(char const *, char const *, int)
+ ?conversationModelUpdated@ConversationsEngine@@IAEXXZ @ 17 NONAME ; void ConversationsEngine::conversationModelUpdated(void)
+ ?getStaticMetaObject@ConversationsEngine@@SAABUQMetaObject@@XZ @ 18 NONAME ; struct QMetaObject const & ConversationsEngine::getStaticMetaObject(void)
+ ?downloadOperationSupported@ConversationsEngine@@QAE_NH@Z @ 19 NONAME ; bool ConversationsEngine::downloadOperationSupported(int)
+ ?markMessagesRead@ConversationsEngine@@QAE_NAAV?$QList@H@@@Z @ 20 NONAME ; bool ConversationsEngine::markMessagesRead(class QList<int> &)
+ ?conversationModelPopulated@ConversationsEngine@@IAEXXZ @ 21 NONAME ; void ConversationsEngine::conversationModelPopulated(void)
+ ?downloadMessage@ConversationsEngine@@QAEHH@Z @ 22 NONAME ; int ConversationsEngine::downloadMessage(int)
+ ?getConversationsModel@ConversationsEngine@@QAEPAVQStandardItemModel@@XZ @ 23 NONAME ; class QStandardItemModel * ConversationsEngine::getConversationsModel(void)
+ ?markConversationRead@ConversationsEngine@@QAE_N_J@Z @ 24 NONAME ; bool ConversationsEngine::markConversationRead(long long)
+ ?getCurrentConversationId@ConversationsEngine@@QAE_JXZ @ 25 NONAME ; long long ConversationsEngine::getCurrentConversationId(void)
+ ??_EConversationsEngine@@UAE@I@Z @ 26 NONAME ; ConversationsEngine::~ConversationsEngine(unsigned int)
+ ?conversationListEntryDeleted@ConversationsEngine@@IAEXH@Z @ 27 NONAME ; void ConversationsEngine::conversationListEntryDeleted(int)
+ ?getConversationsSummaryModel@ConversationsEngine@@QAEPAVQStandardItemModel@@XZ @ 28 NONAME ; class QStandardItemModel * ConversationsEngine::getConversationsSummaryModel(void)
+ ?conversationListModelPopulated@ConversationsEngine@@IAEXXZ @ 29 NONAME ; void ConversationsEngine::conversationListModelPopulated(void)
+ ??0ConversationsEngine@@AAE@PAVQObject@@@Z @ 30 NONAME ; ConversationsEngine::ConversationsEngine(class QObject *)
+ ?instance@ConversationsEngine@@SAPAV1@XZ @ 31 NONAME ; class ConversationsEngine * ConversationsEngine::instance(void)
+ ?getContactDetails@ConversationsEngine@@QAEX_JAAVQString@@1@Z @ 32 NONAME ; void ConversationsEngine::getContactDetails(long long, class QString &, class QString &)
+ ?tr@ConversationsEngine@@SA?AVQString@@PBD0@Z @ 33 NONAME ; class QString ConversationsEngine::tr(char const *, char const *)
+ ?resendMessage@ConversationsEngine@@QAE_NH@Z @ 34 NONAME ; bool ConversationsEngine::resendMessage(int)
+ ?emitConversationModelUpdated@ConversationsEngine@@QAEXXZ @ 35 NONAME ; void ConversationsEngine::emitConversationModelUpdated(void)
+ ?getConversations@ConversationsEngine@@QAE_N_J@Z @ 36 NONAME ; bool ConversationsEngine::getConversations(long long)
+ ?clearConversations@ConversationsEngine@@QAE_NXZ @ 37 NONAME ; bool ConversationsEngine::clearConversations(void)
+ ?getDBHandle@ConversationsEngine@@QAEAAVRSqlDatabase@@AAH@Z @ 38 NONAME ; class RSqlDatabase & ConversationsEngine::getDBHandle(int &)
+ ?getMsgSubType@ConversationsEngine@@QAEHH@Z @ 39 NONAME ; int ConversationsEngine::getMsgSubType(int)
+ ?getConversationIdFromContactId@ConversationsEngine@@QAE_JH@Z @ 40 NONAME ; long long ConversationsEngine::getConversationIdFromContactId(int)
+ ?staticMetaObject@ConversationsEngine@@2UQMetaObject@@B @ 41 NONAME ; struct QMetaObject const ConversationsEngine::staticMetaObject
+ ?deleteMessages@ConversationsEngine@@QAEXAAV?$QList@H@@@Z @ 42 NONAME ; void ConversationsEngine::deleteMessages(class QList<int> &)
+ ?emitConversationModelPopulated@ConversationsEngine@@QAEXXZ @ 43 NONAME ; void ConversationsEngine::emitConversationModelPopulated(void)
+ ?conversationViewEmpty@ConversationsEngine@@IAEXXZ @ 44 NONAME ; void ConversationsEngine::conversationViewEmpty(void)
+ ?qt_metacall@ConversationsEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 45 NONAME ; int ConversationsEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
--- a/messagingapp/msgui/bwins/unifiededitoru.def Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/bwins/unifiededitoru.def Fri Jul 09 14:46:10 2010 +0530
@@ -2,14 +2,14 @@
?fetchAudio@MsgUnifiedEditorView@@AAEXXZ @ 1 NONAME ; void MsgUnifiedEditorView::fetchAudio(void)
??0CUniImageProcessor@@QAE@PAVMUniImageProcessorCallback@@@Z @ 2 NONAME ; CUniImageProcessor::CUniImageProcessor(class MUniImageProcessorCallback *)
?changePriority@MsgUnifiedEditorView@@AAEXXZ @ 3 NONAME ; void MsgUnifiedEditorView::changePriority(void)
- ?forwardMessage@MsgUnifiedEditorView@@AAEXAAVConvergedMessageId@@W4MessageType@ConvergedMessage@@@Z @ 4 NONAME ; void MsgUnifiedEditorView::forwardMessage(class ConvergedMessageId &, enum ConvergedMessage::MessageType)
- ?updateOtherRecipientCount@MsgUnifiedEditorView@@AAEX_N@Z @ 5 NONAME ; void MsgUnifiedEditorView::updateOtherRecipientCount(bool)
- ?qt_metacall@MsgUnifiedEditorView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 6 NONAME ; int MsgUnifiedEditorView::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?fetchImages@MsgUnifiedEditorView@@AAEXXZ @ 7 NONAME ; void MsgUnifiedEditorView::fetchImages(void)
- ?packMessage@MsgUnifiedEditorView@@AAEXAAVConvergedMessage@@_N@Z @ 8 NONAME ; void MsgUnifiedEditorView::packMessage(class ConvergedMessage &, bool)
- ?handleViewExtnActivated@MsgUnifiedEditorView@@AAEXPAVHbListWidgetItem@@@Z @ 9 NONAME ; void MsgUnifiedEditorView::handleViewExtnActivated(class HbListWidgetItem *)
- ?addAttachment@MsgUnifiedEditorView@@AAEHABVQString@@@Z @ 10 NONAME ; int MsgUnifiedEditorView::addAttachment(class QString const &)
- ?doDelayedConstruction@MsgUnifiedEditorView@@AAEXXZ @ 11 NONAME ; void MsgUnifiedEditorView::doDelayedConstruction(void)
+ ?updateOtherRecipientCount@MsgUnifiedEditorView@@AAEX_N@Z @ 4 NONAME ; void MsgUnifiedEditorView::updateOtherRecipientCount(bool)
+ ?qt_metacall@MsgUnifiedEditorView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 5 NONAME ; int MsgUnifiedEditorView::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?fetchImages@MsgUnifiedEditorView@@AAEXXZ @ 6 NONAME ; void MsgUnifiedEditorView::fetchImages(void)
+ ?packMessage@MsgUnifiedEditorView@@AAEXAAVConvergedMessage@@_N@Z @ 7 NONAME ; void MsgUnifiedEditorView::packMessage(class ConvergedMessage &, bool)
+ ?handleViewExtnActivated@MsgUnifiedEditorView@@AAEXPAVHbListWidgetItem@@@Z @ 8 NONAME ; void MsgUnifiedEditorView::handleViewExtnActivated(class HbListWidgetItem *)
+ ?addAttachment@MsgUnifiedEditorView@@AAEHABVQString@@@Z @ 9 NONAME ; int MsgUnifiedEditorView::addAttachment(class QString const &)
+ ?doDelayedConstruction@MsgUnifiedEditorView@@AAEXXZ @ 10 NONAME ; void MsgUnifiedEditorView::doDelayedConstruction(void)
+ ?fetchMessageFromStore@MsgUnifiedEditorView@@AAEXAAVConvergedMessageId@@W4MessageType@ConvergedMessage@@H@Z @ 11 NONAME ; void MsgUnifiedEditorView::fetchMessageFromStore(class ConvergedMessageId &, enum ConvergedMessage::MessageType, int)
?onContentChanged@MsgUnifiedEditorView@@AAEXXZ @ 12 NONAME ; void MsgUnifiedEditorView::onContentChanged(void)
?staticMetaObject@MsgUnifiedEditorView@@2UQMetaObject@@B @ 13 NONAME ; struct QMetaObject const MsgUnifiedEditorView::staticMetaObject
?activateInputBlocker@MsgUnifiedEditorView@@AAEXXZ @ 14 NONAME ; void MsgUnifiedEditorView::activateInputBlocker(void)
--- a/messagingapp/msgui/bwins/unifiedvieweru.def Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/bwins/unifiedvieweru.def Fri Jul 09 14:46:10 2010 +0530
@@ -1,22 +1,25 @@
EXPORTS
?trUtf8@UnifiedViewer@@SA?AVQString@@PBD0@Z @ 1 NONAME ; class QString UnifiedViewer::trUtf8(char const *, char const *)
?populateContent@UnifiedViewer@@QAEXH_NH@Z @ 2 NONAME ; void UnifiedViewer::populateContent(int, bool, int)
- ?handleDeleteAction@UnifiedViewer@@QAEXXZ @ 3 NONAME ; void UnifiedViewer::handleDeleteAction(void)
- ?metaObject@UnifiedViewer@@UBEPBUQMetaObject@@XZ @ 4 NONAME ; struct QMetaObject const * UnifiedViewer::metaObject(void) const
- ?sendMessage@UnifiedViewer@@AAEXABVQString@@0@Z @ 5 NONAME ; void UnifiedViewer::sendMessage(class QString const &, class QString const &)
- ?resizeEvent@UnifiedViewer@@MAEXPAVQGraphicsSceneResizeEvent@@@Z @ 6 NONAME ; void UnifiedViewer::resizeEvent(class QGraphicsSceneResizeEvent *)
- ?handleFwdAction@UnifiedViewer@@QAEXXZ @ 7 NONAME ; void UnifiedViewer::handleFwdAction(void)
- ?qt_metacast@UnifiedViewer@@UAEPAXPBD@Z @ 8 NONAME ; void * UnifiedViewer::qt_metacast(char const *)
- ?createToolBar@UnifiedViewer@@AAEXXZ @ 9 NONAME ; void UnifiedViewer::createToolBar(void)
- ??1UnifiedViewer@@UAE@XZ @ 10 NONAME ; UnifiedViewer::~UnifiedViewer(void)
- ?onDialogDeleteMsg@UnifiedViewer@@AAEXPAVHbAction@@@Z @ 11 NONAME ; void UnifiedViewer::onDialogDeleteMsg(class HbAction *)
- ??_EUnifiedViewer@@UAE@I@Z @ 12 NONAME ; UnifiedViewer::~UnifiedViewer(unsigned int)
- ?qt_metacall@UnifiedViewer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 13 NONAME ; int UnifiedViewer::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?tr@UnifiedViewer@@SA?AVQString@@PBD0@Z @ 14 NONAME ; class QString UnifiedViewer::tr(char const *, char const *)
- ?getStaticMetaObject@UnifiedViewer@@SAABUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const & UnifiedViewer::getStaticMetaObject(void)
- ??0UnifiedViewer@@QAE@HHPAVQGraphicsItem@@@Z @ 16 NONAME ; UnifiedViewer::UnifiedViewer(int, int, class QGraphicsItem *)
+ ?handleReplyAction@UnifiedViewer@@AAEXXZ @ 3 NONAME ; void UnifiedViewer::handleReplyAction(void)
+ ?handleDeleteAction@UnifiedViewer@@QAEXXZ @ 4 NONAME ; void UnifiedViewer::handleDeleteAction(void)
+ ?metaObject@UnifiedViewer@@UBEPBUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const * UnifiedViewer::metaObject(void) const
+ ?sendMessage@UnifiedViewer@@AAEXABVQString@@0@Z @ 6 NONAME ; void UnifiedViewer::sendMessage(class QString const &, class QString const &)
+ ?resizeEvent@UnifiedViewer@@MAEXPAVQGraphicsSceneResizeEvent@@@Z @ 7 NONAME ; void UnifiedViewer::resizeEvent(class QGraphicsSceneResizeEvent *)
+ ?handleFwdAction@UnifiedViewer@@QAEXXZ @ 8 NONAME ; void UnifiedViewer::handleFwdAction(void)
+ ?qt_metacast@UnifiedViewer@@UAEPAXPBD@Z @ 9 NONAME ; void * UnifiedViewer::qt_metacast(char const *)
+ ?createToolBar@UnifiedViewer@@AAEXXZ @ 10 NONAME ; void UnifiedViewer::createToolBar(void)
+ ??1UnifiedViewer@@UAE@XZ @ 11 NONAME ; UnifiedViewer::~UnifiedViewer(void)
+ ?onDialogDeleteMsg@UnifiedViewer@@AAEXPAVHbAction@@@Z @ 12 NONAME ; void UnifiedViewer::onDialogDeleteMsg(class HbAction *)
+ ??_EUnifiedViewer@@UAE@I@Z @ 13 NONAME ; UnifiedViewer::~UnifiedViewer(unsigned int)
+ ?qt_metacall@UnifiedViewer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 14 NONAME ; int UnifiedViewer::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?tr@UnifiedViewer@@SA?AVQString@@PBD0@Z @ 15 NONAME ; class QString UnifiedViewer::tr(char const *, char const *)
+ ?getStaticMetaObject@UnifiedViewer@@SAABUQMetaObject@@XZ @ 16 NONAME ; struct QMetaObject const & UnifiedViewer::getStaticMetaObject(void)
?staticMetaObject@UnifiedViewer@@2UQMetaObject@@B @ 17 NONAME ; struct QMetaObject const UnifiedViewer::staticMetaObject
- ?trUtf8@UnifiedViewer@@SA?AVQString@@PBD0H@Z @ 18 NONAME ; class QString UnifiedViewer::trUtf8(char const *, char const *, int)
- ?clearContent@UnifiedViewer@@QAEXXZ @ 19 NONAME ; void UnifiedViewer::clearContent(void)
- ?tr@UnifiedViewer@@SA?AVQString@@PBD0H@Z @ 20 NONAME ; class QString UnifiedViewer::tr(char const *, char const *, int)
+ ??0UnifiedViewer@@QAE@HHPAVQGraphicsItem@@@Z @ 18 NONAME ; UnifiedViewer::UnifiedViewer(int, int, class QGraphicsItem *)
+ ?handleReplyAllAction@UnifiedViewer@@AAEXXZ @ 19 NONAME ; void UnifiedViewer::handleReplyAllAction(void)
+ ?trUtf8@UnifiedViewer@@SA?AVQString@@PBD0H@Z @ 20 NONAME ; class QString UnifiedViewer::trUtf8(char const *, char const *, int)
+ ?clearContent@UnifiedViewer@@QAEXXZ @ 21 NONAME ; void UnifiedViewer::clearContent(void)
+ ?launchEditor@UnifiedViewer@@AAEXW4UniEditorOperation@MsgBaseView@@@Z @ 22 NONAME ; void UnifiedViewer::launchEditor(enum MsgBaseView::UniEditorOperation)
+ ?tr@UnifiedViewer@@SA?AVQString@@PBD0H@Z @ 23 NONAME ; class QString UnifiedViewer::tr(char const *, char const *, int)
--- a/messagingapp/msgui/conversationview/inc/msgconversationview.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/conversationview/inc/msgconversationview.h Fri Jul 09 14:46:10 2010 +0530
@@ -325,6 +325,11 @@
*/
void handleSmsCharLimitReached();
+ /**
+ * Hanldes saving of vcard.
+ */
+ void saveVCard();
+
signals:
/**
* Signal emitted to inform close the conversation view.
@@ -386,6 +391,16 @@
* @param msgId message id
*/
void handleProvisoningMsg(int msgId);
+
+ /**
+ * Handles short tap for vcard.
+ */
+ void handleShortTap();
+
+ /**
+ * helper method to show long/short tap context menu.
+ */
+ void showContextMenu(HbAbstractViewItem* viewItem,const QPointF& point, int placement);
private:
--- a/messagingapp/msgui/conversationview/inc/msgeditorwidget.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/conversationview/inc/msgeditorwidget.h Fri Jul 09 14:46:10 2010 +0530
@@ -165,10 +165,10 @@
*/
void init();
- /**
- * To update back ground.
- */
- void updateButtonBackground(const QString& bg);
+ /**
+ * To update back ground.
+ */
+ void updateButtonBackgroundAndColor(const QString& bg,const QString& iconColor);
private:
--- a/messagingapp/msgui/conversationview/resources/layouts/msgeditorwidget.css Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/conversationview/resources/layouts/msgeditorwidget.css Fri Jul 09 14:46:10 2010 +0530
@@ -23,8 +23,15 @@
MsgEditorWidget::charCounter
{
- size-policy:fixed fixed;
- pref-height:-1;
- pref-width:-1;
- text-height:var(hb-param-text-height-tiny);
+ text-height:var(hb-param-text-height-tiny);
+ text-align:centre;
+ text-line-count-min: 1;
+ text-line-count-max: 1;
}
+
+MsgEditorWidget::charCounterFrame
+{
+ size-policy: fixed, fixed ;
+ pref-height: expr(var(hb-param-text-height-tiny)+2*var(hb-param-margin-gene-middle-vertical));
+ pref-width: expr(var(hb-param-text-height-tiny)*3 + 2*var(hb-param-margin-gene-middle-horizontal));
+}
--- a/messagingapp/msgui/conversationview/resources/layouts/msgeditorwidget.widgetml Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/conversationview/resources/layouts/msgeditorwidget.widgetml Fri Jul 09 14:46:10 2010 +0530
@@ -9,13 +9,11 @@
<meshitem src="sendButton" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
<meshitem src="sendButton" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
- <meshitem src="charCounter" srcEdge="TOP" dst="msgEditor" dstEdge="TOP" />
- <meshitem src="charCounter" srcEdge="RIGHT" dst="msgEditor" dstEdge="RIGHT" />
+ <meshitem src="charCounter" srcEdge="CENTERH" dst="charCounterFrame" dstEdge="CENTERH" />
+ <meshitem src="charCounter" srcEdge="CENTERV" dst="charCounterFrame" dstEdge="CENTERV" />
- <meshitem src="charCounterFrame" srcEdge="LEFT" dst="charCounter" dstEdge="LEFT" />
- <meshitem src="charCounterFrame" srcEdge="TOP" dst="charCounter" dstEdge="TOP" />
- <meshitem src="charCounterFrame" srcEdge="RIGHT" dst="charCounter" dstEdge="RIGHT" />
- <meshitem src="charCounterFrame" srcEdge="BOTTOM" dst="charCounter" dstEdge="BOTTOM" />
+ <meshitem src="charCounterFrame" srcEdge="TOP" dst="msgEditor" dstEdge="TOP" />
+ <meshitem src="charCounterFrame" srcEdge="RIGHT" dst="msgEditor" dstEdge="RIGHT" />
</layout>
</hbwidget>
\ No newline at end of file
--- a/messagingapp/msgui/conversationview/src/msgcontactcardwidget.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/conversationview/src/msgcontactcardwidget.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -144,15 +144,17 @@
QStandardItemModel* msgModel = ConversationsEngine::instance()->getConversationsModel();
const int rowCnt = msgModel->rowCount();
QModelIndex index = msgModel->index(rowCnt-1, 0);
- ConvergedMessageAddress* address = new ConvergedMessageAddress(
- index.data(ConversationAddress).toString());
+ QString addr = index.data(ConversationAddress).toString();
+ ConvergedMessageAddress* address = new ConvergedMessageAddress(addr);
+ // resolve contact
QString displayname;
- QString addr;
- ConversationsEngine::instance()->getContactDetails(
- ConversationsEngine::instance()->getCurrentConversationId(),
- displayname,
- addr);
- address->setAlias(displayname);
+ int count;
+ int retval = MsgContactHandler::resolveContactDisplayName(
+ addr, displayname, count);
+ if(retval != -1)
+ {
+ address->setAlias(displayname);
+ }
addresses.append(address);
return addresses;
}
--- a/messagingapp/msgui/conversationview/src/msgconversationview.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/conversationview/src/msgconversationview.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -80,8 +80,9 @@
#define LOC_ADD_SUBJECT hbTrId("txt_messaging_opt_add_subject")
#define LOC_MSG_SEND_FAILED hbTrId("txt_messaging_dialog_message_sending_failed")
-#define LOC_DIALOG_SMS_SETTINGS_INCOMPLETE hbTrId("txt_messaging_dialog_sms_settings_incomplete")
+#define LOC_DIALOG_SMS_SETTINGS_INCOMPLETE hbTrId("txt_messaging_dialog_sms_message_centre_does_not_e")
#define LOC_DIALOG_SAVE_RINGTONE hbTrId("txt_conversations_dialog_save_ringing_tone")
+#define LOC_MMS_RETRIEVAL_FAILED hbTrId("txt_messaging_dialog_mms_retrieval_failed")
const int INVALID_MSGID = -1;
@@ -274,40 +275,15 @@
// MsgConversationView::longPressed
// @see header file
//---------------------------------------------------------------
-void MsgConversationView::longPressed(HbAbstractViewItem* viewItem,
- const QPointF& point)
-{
- MsgConversationViewItem* item = qgraphicsitem_cast<
- MsgConversationViewItem *> (viewItem);
-
- // Show the item-specific menu
- if (this->isVisible())
- {
- //If message is in Sending state or is Scheduled to be sent later,
- //do not allow any operations on the message
- int sendingState = item->modelIndex().data(SendingState).toInt();
- if(sendingState == ConvergedMessage::Scheduled ||
- sendingState == ConvergedMessage::Sending ||
- sendingState == ConvergedMessage::Waiting)
- {
- return;
- }
- // Create new menu
- HbMenu* contextMenu = new HbMenu();
- contextMenu->setAttribute(Qt::WA_DeleteOnClose);
- contextMenu->setPreferredPos(point);
- setContextMenu(item, contextMenu, sendingState);
- contextMenu->show();
-
- }
-
+void MsgConversationView::longPressed(HbAbstractViewItem* viewItem, const QPointF& point)
+{
+ showContextMenu(viewItem,point,HbPopup::TopLeftCorner);
}
//---------------------------------------------------------------
// MsgConversationView::setContextMenu
// @see header
//---------------------------------------------------------------
-
void MsgConversationView::setContextMenu(MsgConversationViewItem* item, HbMenu* contextMenu, int sendingState)
{
addOpenItemToContextMenu(item , contextMenu,sendingState);
@@ -358,10 +334,11 @@
(direction == ConvergedMessage::Incoming))
{
HbAction *contextItem = contextMenu->addAction(LOC_SAVE_TO_CONTACTS);
- connect(contextItem, SIGNAL(triggered()),this, SLOT(openItem()));
+ connect(contextItem, SIGNAL(triggered()),this, SLOT(saveVCard()));
return;
}
- if( (sendingState == ConvergedMessage::SentState ) ||
+ if( (sendingState == ConvergedMessage::SentState &&
+ messageSubType != ConvergedMessage::VCard) ||
(direction == ConvergedMessage::Incoming))
{
HbAction *contextItem = contextMenu->addAction(LOC_COMMON_OPEN);
@@ -379,8 +356,11 @@
{
Q_UNUSED(item)
int direction = item->modelIndex().data(Direction).toInt();
+ int messageSubType = item->modelIndex().data(MessageSubType).toInt();
- if( (direction == ConvergedMessage::Outgoing)&&
+
+ if( ((direction == ConvergedMessage::Outgoing) &&
+ (messageSubType != ConvergedMessage::VCard))&&
((sendingState == ConvergedMessage::Resend ) ||
(sendingState == ConvergedMessage::Suspended )||
(sendingState == ConvergedMessage::Failed )))
@@ -722,7 +702,7 @@
qint32 messageId = index.data(ConvergedMsgId).toLongLong();
if(!(ConversationsEngine::instance()->resendMessage(messageId)))
{
- HbMessageBox::warning(LOC_MSG_SEND_FAILED);
+ HbMessageBox::warning(LOC_MSG_SEND_FAILED, 0, 0, HbMessageBox::Ok);
}
}
@@ -737,10 +717,10 @@
QModelIndex index = mConversationList->currentIndex();
if(index.isValid())
{
- qint32 messageId = index.data(ConvergedMsgId).toLongLong();
+ qint32 messageId = index.data(ConvergedMsgId).toLongLong();
if(ConversationsEngine::instance()->downloadMessage(messageId)!=KErrNone)
{
- HbMessageBox::warning("Message Retrieval Failed!"); //TODO: use logical str name
+ HbMessageBox::warning(LOC_MMS_RETRIEVAL_FAILED, 0, 0, HbMessageBox::Ok);
}
}
@@ -920,20 +900,7 @@
}
else if(ConvergedMessage::VCard == messageSubType)
{
- QString filepath = index.data(Attachments).toStringList().at(0);
- bool result = MsgContactsUtil::launchVCardViewer(filepath);
- if(result)
- {
-
- int messageId = index.data(ConvergedMsgId).toInt();
- QList<int> msgIdList;
- if(index.data(UnReadStatus).toInt())
- {
- msgIdList.clear();
- msgIdList << messageId;
- ConversationsEngine::instance()->markMessagesRead(msgIdList);
- }
- }
+ handleShortTap();
return;
}
else if(ConvergedMessage::VCal == messageSubType)
@@ -955,7 +922,7 @@
}
else if(ConvergedMessage::MmsNotification == messageType)
{
- qint32 messageId = index.data(ConvergedMsgId).toLongLong();
+ qint32 messageId = index.data(ConvergedMsgId).toLongLong();
if(!ConversationsEngine::instance()->downloadOperationSupported(messageId))
{
int notificationState = index.data(NotificationStatus).toInt();
@@ -1346,6 +1313,17 @@
if (action == dlg->actions().at(0)) {
downloadMessage();
}
+
+ //if message unread, mark as read now
+ QModelIndex index = mConversationList->currentIndex();
+ qint32 messageId = index.data(ConvergedMsgId).toLongLong();
+ QList<int> msgIdList;
+ if(index.data(UnReadStatus).toInt())
+ {
+ msgIdList.clear();
+ msgIdList << messageId;
+ ConversationsEngine::instance()->markMessagesRead(msgIdList);
+ }
}
//---------------------------------------------------------------
@@ -1402,4 +1380,70 @@
fetchMoreConversations();
}
+
+//---------------------------------------------------------------
+// MsgConversationView::handleShortTap
+// @see header file
+//---------------------------------------------------------------
+void MsgConversationView::handleShortTap()
+{
+ HbAbstractViewItem* item = mConversationList->currentViewItem();
+ QRectF rc = item->rect();
+ QPointF p = item->mapToScene(rc.center());
+
+ showContextMenu(item,p,HbPopup::TopEdgeCenter);
+}
+
+//---------------------------------------------------------------
+// MsgConversationView::handleShortTap
+// @see header file
+//---------------------------------------------------------------
+void MsgConversationView::showContextMenu(HbAbstractViewItem* viewItem,const QPointF& point, int placement)
+{
+ MsgConversationViewItem* item = qgraphicsitem_cast<MsgConversationViewItem *>(viewItem);
+
+ // Show the item-specific menu
+ if (this->isVisible())
+ {
+ //If message is in Sending state or is Scheduled to be sent later,
+ //do not allow any operations on the message
+ int sendingState = item->modelIndex().data(SendingState).toInt();
+
+ if(sendingState == ConvergedMessage::Scheduled ||
+ sendingState == ConvergedMessage::Sending ||
+ sendingState == ConvergedMessage::Waiting)
+ {
+ return;
+ }
+ // Create new menu
+ HbMenu* contextMenu = new HbMenu();
+ contextMenu->setAttribute(Qt::WA_DeleteOnClose);
+ contextMenu->setPreferredPos(point,HbPopup::Placement(placement));
+ setContextMenu(item, contextMenu, sendingState);
+ contextMenu->show();
+ }
+}
+
+//---------------------------------------------------------------
+// MsgConversationView::saveVCard
+// @see header file
+//---------------------------------------------------------------
+void MsgConversationView::saveVCard()
+{
+ QModelIndex index = mConversationList->currentIndex();
+
+ QString filepath = index.data(Attachments).toStringList().at(0);
+ bool result = MsgContactsUtil::launchVCardViewer(filepath);
+ if(result)
+ {
+ int messageId = index.data(ConvergedMsgId).toInt();
+ QList<int> msgIdList;
+ if(index.data(UnReadStatus).toInt())
+ {
+ msgIdList.clear();
+ msgIdList << messageId;
+ ConversationsEngine::instance()->markMessagesRead(msgIdList);
+ }
+ }
+}
// EOF
--- a/messagingapp/msgui/conversationview/src/msgeditorwidget.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/conversationview/src/msgeditorwidget.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -28,6 +28,8 @@
#include <csmsaccount.h>
#include <smutset.h>
#include <hbmessagebox.h>
+#include <hbcolorscheme.h>
+#include <QColor>
#include <QTimer>
#include "unieditorpluginloader.h"
#include "unieditorplugininterface.h"
@@ -39,11 +41,16 @@
const QString SEND_ICON("qtg_mono_send");
const QString BACKGROUND("qtg_fr_input_v_bg");
-const QString BACKGROUND_FRAME("qtg_fr_btn_normal");
+const QString BACKGROUND_FRAME("qtg_fr_messaging_char_count");
+const QString CHAR_COUNTER_COLOR("qtc_messaging_char_count");
-const QString SEND_BUTTON_NORMAL("qtg_fr_input_btn_function_normal");
-const QString SEND_BUTTON_PRESSED("qtg_fr_input_btn_function_pressed");
-const QString SEND_BUTTON_DISABLED("qtg_fr_input_btn_function_disabled");
+const QString SEND_BUTTON_NORMAL("qtg_fr_btn_green_normal");
+const QString SEND_BUTTON_PRESSED("qtg_fr_btn_green_pressed");
+const QString SEND_BUTTON_DISABLED("qtg_fr_btn_disabled");
+
+const QString SEND_BUTTON_NORMAL_COLOR("qtc_callhandling_answer_normal");
+const QString SEND_BUTTON_PRESSED_COLOR("qtc_callhandling_answer_pressed");
+const QString SEND_BUTTON_DISABLED_COLOR("qtc_button_disabled");
#define LOC_SMS_CHAR_LIMIT_REACHED hbTrId("txt_messaging_dialog_sms_character_count_exceeded")
#define LOC_HINT_TEXT hbTrId("txt_messaging_formlabel_enter_message_here")
@@ -90,17 +97,20 @@
HbFrameItem* backGround = new HbFrameItem(this);
backGround->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
mSendButton->setBackgroundItem(backGround);
- updateButtonBackground(SEND_BUTTON_DISABLED);
+ updateButtonBackgroundAndColor(SEND_BUTTON_DISABLED,SEND_BUTTON_DISABLED_COLOR);
mSendButton->setIcon(HbIcon(SEND_ICON));
mCharCounter = new HbTextItem(this);
HbStyle::setItemName(mCharCounter, "charCounter");
mCharCounter->setZValue(1.5);
+ QColor color = HbColorScheme::color(CHAR_COUNTER_COLOR);
+ mCharCounter->setTextColor(color);
+
mBackgroundItem = new HbFrameItem(this);
HbStyle::setItemName(mBackgroundItem, "charCounterFrame");
- mBackgroundItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
+ mBackgroundItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal);
mBackgroundItem->frameDrawer().setFillWholeRect(true);
mBackgroundItem->frameDrawer().setFrameGraphicsName(
@@ -175,7 +185,7 @@
{
mSendButton->setFocusProxy(mMsgEditor);
mSendButton->setEnabled(true);
- updateButtonBackground(SEND_BUTTON_NORMAL);
+ updateButtonBackgroundAndColor(SEND_BUTTON_NORMAL,SEND_BUTTON_NORMAL_COLOR);
}
}
else
@@ -184,7 +194,7 @@
{
mSendButton->setFocusProxy(0);
mSendButton->setEnabled(false);
- updateButtonBackground(SEND_BUTTON_DISABLED);
+ updateButtonBackgroundAndColor(SEND_BUTTON_DISABLED,SEND_BUTTON_DISABLED_COLOR);
}
}
@@ -279,16 +289,22 @@
}
//---------------------------------------------------------------
-// MsgEditor::updateButtonBackground
+// MsgEditor::updateButtonBackgroundAndColor
// @see header
//---------------------------------------------------------------
-void MsgEditorWidget::updateButtonBackground(const QString& bg)
+void MsgEditorWidget::updateButtonBackgroundAndColor(const QString& bg,const QString& iconColor)
{
HbFrameItem* drawer = static_cast<HbFrameItem*>(mSendButton->backgroundItem());
if(drawer)
{
drawer->frameDrawer().setFrameGraphicsName(bg);
}
+ QColor color = HbColorScheme::color(iconColor);
+
+ if(color.isValid())
+ {
+ mSendButton->icon().setColor(color);
+ }
}
@@ -298,7 +314,7 @@
//---------------------------------------------------------------
void MsgEditorWidget::onPressed()
{
- updateButtonBackground(SEND_BUTTON_PRESSED);
+ updateButtonBackgroundAndColor(SEND_BUTTON_PRESSED,SEND_BUTTON_PRESSED_COLOR);
}
//---------------------------------------------------------------
@@ -307,7 +323,7 @@
//---------------------------------------------------------------
void MsgEditorWidget::onReleased()
{
- updateButtonBackground(SEND_BUTTON_NORMAL);
+ updateButtonBackgroundAndColor(SEND_BUTTON_NORMAL,SEND_BUTTON_NORMAL_COLOR);
}
//---------------------------------------------------------------
--- a/messagingapp/msgui/eabi/appengineu.def Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/eabi/appengineu.def Fri Jul 09 14:46:10 2010 +0530
@@ -16,32 +16,32 @@
_ZN19ConversationsEngine19getStaticMetaObjectEv @ 15 NONAME
_ZN19ConversationsEngine20markAsReadAndGetTypeEiRiS0_ @ 16 NONAME
_ZN19ConversationsEngine20markConversationReadEx @ 17 NONAME
- _ZN19ConversationsEngine21getConversationsModelEv @ 18 NONAME
- _ZN19ConversationsEngine22deleteAllDraftMessagesEv @ 19 NONAME
- _ZN19ConversationsEngine22fetchMoreConversationsEv @ 20 NONAME
- _ZN19ConversationsEngine24conversationModelUpdatedEv @ 21 NONAME
- _ZN19ConversationsEngine24getCurrentConversationIdEv @ 22 NONAME
- _ZN19ConversationsEngine26conversationModelPopulatedEv @ 23 NONAME
- _ZN19ConversationsEngine26downloadOperationSupportedEi @ 24 NONAME
- _ZN19ConversationsEngine28emitConversationModelUpdatedEv @ 25 NONAME
- _ZN19ConversationsEngine28getConversationIdFromAddressE7QString @ 26 NONAME
- _ZN19ConversationsEngine28getConversationsSummaryModelEv @ 27 NONAME
- _ZN19ConversationsEngine30conversationListModelPopulatedEv @ 28 NONAME
- _ZN19ConversationsEngine30emitConversationModelPopulatedEv @ 29 NONAME
- _ZN19ConversationsEngine30getConversationIdFromContactIdEi @ 30 NONAME
- _ZN19ConversationsEngine34emitConversationListModelPopulatedEv @ 31 NONAME
- _ZN19ConversationsEngine8instanceEv @ 32 NONAME
- _ZN19ConversationsEngineC1EP7QObject @ 33 NONAME
- _ZN19ConversationsEngineC2EP7QObject @ 34 NONAME
- _ZN19ConversationsEngineD0Ev @ 35 NONAME
- _ZN19ConversationsEngineD1Ev @ 36 NONAME
- _ZN19ConversationsEngineD2Ev @ 37 NONAME
- _ZNK19ConversationsEngine10metaObjectEv @ 38 NONAME
- _ZTI19ConversationsEngine @ 39 NONAME
- _ZTV19ConversationsEngine @ 40 NONAME
- _ZN19ConversationsEngine28conversationListEntryDeletedEi @ 41 NONAME
- _ZN19ConversationsEngine37emitConversationListModelEntryDeletedEi @ 42 NONAME
- _ZN19ConversationsEngine21conversationViewEmptyEv @ 43 NONAME
- _ZN19ConversationsEngine31disableRegisterationForCVEventsEv @ 44 NONAME
- _ZN19ConversationsEngine32emitOpenConversationViewIdUpdateEi @ 45 NONAME
+ _ZN19ConversationsEngine21conversationViewEmptyEv @ 18 NONAME
+ _ZN19ConversationsEngine21getConversationsModelEv @ 19 NONAME
+ _ZN19ConversationsEngine22deleteAllDraftMessagesEv @ 20 NONAME
+ _ZN19ConversationsEngine22fetchMoreConversationsEv @ 21 NONAME
+ _ZN19ConversationsEngine24conversationModelUpdatedEv @ 22 NONAME
+ _ZN19ConversationsEngine24getCurrentConversationIdEv @ 23 NONAME
+ _ZN19ConversationsEngine26conversationModelPopulatedEv @ 24 NONAME
+ _ZN19ConversationsEngine26downloadOperationSupportedEi @ 25 NONAME
+ _ZN19ConversationsEngine28conversationListEntryDeletedEi @ 26 NONAME
+ _ZN19ConversationsEngine28emitConversationModelUpdatedEv @ 27 NONAME
+ _ZN19ConversationsEngine28getConversationIdFromAddressE7QString @ 28 NONAME
+ _ZN19ConversationsEngine28getConversationsSummaryModelEv @ 29 NONAME
+ _ZN19ConversationsEngine30conversationListModelPopulatedEv @ 30 NONAME
+ _ZN19ConversationsEngine30emitConversationModelPopulatedEv @ 31 NONAME
+ _ZN19ConversationsEngine30getConversationIdFromContactIdEi @ 32 NONAME
+ _ZN19ConversationsEngine31disableRegisterationForCVEventsEv @ 33 NONAME
+ _ZN19ConversationsEngine32emitOpenConversationViewIdUpdateEi @ 34 NONAME
+ _ZN19ConversationsEngine34emitConversationListModelPopulatedEv @ 35 NONAME
+ _ZN19ConversationsEngine37emitConversationListModelEntryDeletedEi @ 36 NONAME
+ _ZN19ConversationsEngine8instanceEv @ 37 NONAME
+ _ZN19ConversationsEngineC1EP7QObject @ 38 NONAME
+ _ZN19ConversationsEngineC2EP7QObject @ 39 NONAME
+ _ZN19ConversationsEngineD0Ev @ 40 NONAME
+ _ZN19ConversationsEngineD1Ev @ 41 NONAME
+ _ZN19ConversationsEngineD2Ev @ 42 NONAME
+ _ZNK19ConversationsEngine10metaObjectEv @ 43 NONAME
+ _ZTI19ConversationsEngine @ 44 NONAME
+ _ZTV19ConversationsEngine @ 45 NONAME
--- a/messagingapp/msgui/eabi/unifiededitoru.def Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/eabi/unifiededitoru.def Fri Jul 09 14:46:10 2010 +0530
@@ -22,25 +22,25 @@
_ZN20MsgUnifiedEditorView13imagesFetchedERK8QVariant @ 21 NONAME
_ZN20MsgUnifiedEditorView14addAttachmentsE11QStringList @ 22 NONAME
_ZN20MsgUnifiedEditorView14changePriorityEv @ 23 NONAME
- _ZN20MsgUnifiedEditorView14forwardMessageER18ConvergedMessageIdN16ConvergedMessage11MessageTypeE @ 24 NONAME
- _ZN20MsgUnifiedEditorView15contactsFetchedERK8QVariant @ 25 NONAME
- _ZN20MsgUnifiedEditorView15formatAddressesER5QListIP23ConvergedMessageAddressE @ 26 NONAME
- _ZN20MsgUnifiedEditorView15populateContentERK5QListI8QVariantE @ 27 NONAME
- _ZN20MsgUnifiedEditorView16createTempFolderEv @ 28 NONAME
- _ZN20MsgUnifiedEditorView16enableSendButtonEb @ 29 NONAME
- _ZN20MsgUnifiedEditorView16generateFileNameER7QString @ 30 NONAME
- _ZN20MsgUnifiedEditorView16onContentChangedEv @ 31 NONAME
- _ZN20MsgUnifiedEditorView16removeTempFolderEv @ 32 NONAME
- _ZN20MsgUnifiedEditorView16staticMetaObjectE @ 33 NONAME DATA 16
- _ZN20MsgUnifiedEditorView17onDialogDeleteMsgEP8HbAction @ 34 NONAME
- _ZN20MsgUnifiedEditorView17openDraftsMessageERK5QListI8QVariantE @ 35 NONAME
- _ZN20MsgUnifiedEditorView19getStaticMetaObjectEv @ 36 NONAME
- _ZN20MsgUnifiedEditorView19onDialogMmsSettingsEP8HbAction @ 37 NONAME
- _ZN20MsgUnifiedEditorView19onDialogSmsSettingsEP8HbAction @ 38 NONAME
- _ZN20MsgUnifiedEditorView19saveContentToDraftsEv @ 39 NONAME
- _ZN20MsgUnifiedEditorView19serviceRequestErrorEiRK7QString @ 40 NONAME
- _ZN20MsgUnifiedEditorView20activateInputBlockerEv @ 41 NONAME
- _ZN20MsgUnifiedEditorView21doDelayedConstructionEv @ 42 NONAME
+ _ZN20MsgUnifiedEditorView15contactsFetchedERK8QVariant @ 24 NONAME
+ _ZN20MsgUnifiedEditorView15formatAddressesER5QListIP23ConvergedMessageAddressE @ 25 NONAME
+ _ZN20MsgUnifiedEditorView15populateContentERK5QListI8QVariantE @ 26 NONAME
+ _ZN20MsgUnifiedEditorView16createTempFolderEv @ 27 NONAME
+ _ZN20MsgUnifiedEditorView16enableSendButtonEb @ 28 NONAME
+ _ZN20MsgUnifiedEditorView16generateFileNameER7QString @ 29 NONAME
+ _ZN20MsgUnifiedEditorView16onContentChangedEv @ 30 NONAME
+ _ZN20MsgUnifiedEditorView16removeTempFolderEv @ 31 NONAME
+ _ZN20MsgUnifiedEditorView16staticMetaObjectE @ 32 NONAME DATA 16
+ _ZN20MsgUnifiedEditorView17onDialogDeleteMsgEP8HbAction @ 33 NONAME
+ _ZN20MsgUnifiedEditorView17openDraftsMessageERK5QListI8QVariantE @ 34 NONAME
+ _ZN20MsgUnifiedEditorView19getStaticMetaObjectEv @ 35 NONAME
+ _ZN20MsgUnifiedEditorView19onDialogMmsSettingsEP8HbAction @ 36 NONAME
+ _ZN20MsgUnifiedEditorView19onDialogSmsSettingsEP8HbAction @ 37 NONAME
+ _ZN20MsgUnifiedEditorView19saveContentToDraftsEv @ 38 NONAME
+ _ZN20MsgUnifiedEditorView19serviceRequestErrorEiRK7QString @ 39 NONAME
+ _ZN20MsgUnifiedEditorView20activateInputBlockerEv @ 40 NONAME
+ _ZN20MsgUnifiedEditorView21doDelayedConstructionEv @ 41 NONAME
+ _ZN20MsgUnifiedEditorView21fetchMessageFromStoreER18ConvergedMessageIdN16ConvergedMessage11MessageTypeEi @ 42 NONAME
_ZN20MsgUnifiedEditorView22deactivateInputBlockerEv @ 43 NONAME
_ZN20MsgUnifiedEditorView22setAttachOptionEnabledENS_16TBE_AttachOptionEb @ 44 NONAME
_ZN20MsgUnifiedEditorView23handleViewExtnActivatedEP16HbListWidgetItem @ 45 NONAME
--- a/messagingapp/msgui/eabi/unifiedvieweru.def Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/eabi/unifiedvieweru.def Fri Jul 09 14:46:10 2010 +0530
@@ -4,23 +4,26 @@
_ZN13UnifiedViewer11resizeEventEP25QGraphicsSceneResizeEvent @ 3 NONAME
_ZN13UnifiedViewer11sendMessageERK7QStringS2_ @ 4 NONAME
_ZN13UnifiedViewer12clearContentEv @ 5 NONAME
- _ZN13UnifiedViewer13createToolBarEv @ 6 NONAME
- _ZN13UnifiedViewer15handleFwdActionEv @ 7 NONAME
- _ZN13UnifiedViewer15populateContentEibi @ 8 NONAME
- _ZN13UnifiedViewer16staticMetaObjectE @ 9 NONAME DATA 16
- _ZN13UnifiedViewer17onDialogDeleteMsgEP8HbAction @ 10 NONAME
- _ZN13UnifiedViewer18handleDeleteActionEv @ 11 NONAME
- _ZN13UnifiedViewer19getStaticMetaObjectEv @ 12 NONAME
- _ZN13UnifiedViewerC1EiiP13QGraphicsItem @ 13 NONAME
- _ZN13UnifiedViewerC2EiiP13QGraphicsItem @ 14 NONAME
- _ZN13UnifiedViewerD0Ev @ 15 NONAME
- _ZN13UnifiedViewerD1Ev @ 16 NONAME
- _ZN13UnifiedViewerD2Ev @ 17 NONAME
- _ZNK13UnifiedViewer10metaObjectEv @ 18 NONAME
- _ZTI13UnifiedViewer @ 19 NONAME
- _ZTV13UnifiedViewer @ 20 NONAME
- _ZThn16_N13UnifiedViewerD0Ev @ 21 NONAME
- _ZThn16_N13UnifiedViewerD1Ev @ 22 NONAME
- _ZThn8_N13UnifiedViewerD0Ev @ 23 NONAME
- _ZThn8_N13UnifiedViewerD1Ev @ 24 NONAME
+ _ZN13UnifiedViewer12launchEditorEN11MsgBaseView18UniEditorOperationE @ 6 NONAME
+ _ZN13UnifiedViewer13createToolBarEv @ 7 NONAME
+ _ZN13UnifiedViewer15handleFwdActionEv @ 8 NONAME
+ _ZN13UnifiedViewer15populateContentEibi @ 9 NONAME
+ _ZN13UnifiedViewer16staticMetaObjectE @ 10 NONAME DATA 16
+ _ZN13UnifiedViewer17handleReplyActionEv @ 11 NONAME
+ _ZN13UnifiedViewer17onDialogDeleteMsgEP8HbAction @ 12 NONAME
+ _ZN13UnifiedViewer18handleDeleteActionEv @ 13 NONAME
+ _ZN13UnifiedViewer19getStaticMetaObjectEv @ 14 NONAME
+ _ZN13UnifiedViewer20handleReplyAllActionEv @ 15 NONAME
+ _ZN13UnifiedViewerC1EiiP13QGraphicsItem @ 16 NONAME
+ _ZN13UnifiedViewerC2EiiP13QGraphicsItem @ 17 NONAME
+ _ZN13UnifiedViewerD0Ev @ 18 NONAME
+ _ZN13UnifiedViewerD1Ev @ 19 NONAME
+ _ZN13UnifiedViewerD2Ev @ 20 NONAME
+ _ZNK13UnifiedViewer10metaObjectEv @ 21 NONAME
+ _ZTI13UnifiedViewer @ 22 NONAME
+ _ZTV13UnifiedViewer @ 23 NONAME
+ _ZThn16_N13UnifiedViewerD0Ev @ 24 NONAME
+ _ZThn16_N13UnifiedViewerD1Ev @ 25 NONAME
+ _ZThn8_N13UnifiedViewerD0Ev @ 26 NONAME
+ _ZThn8_N13UnifiedViewerD1Ev @ 27 NONAME
--- a/messagingapp/msgui/inc/msgbaseview.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/inc/msgbaseview.h Fri Jul 09 14:46:10 2010 +0530
@@ -54,14 +54,16 @@
*/
enum UniEditorOperation
{
- ADD_PHOTO = 0x01,
- ADD_AUDIO = 0x02,
- ADD_VIDEO = 0x04,
- ADD_VCARD = 0x08,
- ADD_OTHERS = 0x10,
- ADD_RECIPIENTS = 0x20,
- ADD_SUBJECT = 0x40,
- FORWARD_MSG = 0x80
+ ADD_PHOTO = 0x001,
+ ADD_AUDIO = 0x002,
+ ADD_VIDEO = 0x004,
+ ADD_VCARD = 0x008,
+ ADD_OTHERS = 0x010,
+ ADD_RECIPIENTS = 0x020,
+ ADD_SUBJECT = 0x040,
+ FORWARD_MSG = 0x080,
+ REPLY_MSG = 0x100,
+ REPLY_ALL_MSG = 0x200
};
signals:
--- a/messagingapp/msgui/msgapp/src/msgviewmanager.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/msgapp/src/msgviewmanager.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -779,7 +779,11 @@
mSettingsView = new MsgSettingsView(view);
mSettingsView->setNavigationAction(mBackAction);
mMainWindow->addView(mSettingsView);
- mMainWindow->setCurrentView(mSettingsView);
+
+ if(view != MsgSettingsView::SMSView)
+ {
+ mMainWindow->setCurrentView(mSettingsView);
+ }
}
if(mPreviousView==MsgBaseView::CV && mConversationView){
mConversationView->setPSCVId(false);
--- a/messagingapp/msgui/msguiutils/src/mmsconformancecheck.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/msguiutils/src/mmsconformancecheck.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -113,6 +113,11 @@
CleanupStack::PopAndDestroy(4);
+ // TODO: Remove this check once Video support is provided in UniEditor.
+ if (info->MediaType() == EMsgMediaVideo)
+ {
+ return EInsertNotSupported;
+ }
// In "free" mode user can insert images that are larger by dimensions than allowed by conformance
if (iCreationMode != EMmsCreationModeRestricted)
@@ -267,10 +272,6 @@
//
void MmsConformanceCheck::showPopup(const QString& text)
{
- HbNotificationDialog* dlg = new HbNotificationDialog();
- dlg->setFocusPolicy(Qt::NoFocus);
- dlg->setAttribute(Qt::WA_DeleteOnClose, true);
- dlg->setText(text);
- dlg->show();
+ HbMessageBox::information(text, 0, 0, HbMessageBox::Ok);
}
--- a/messagingapp/msgui/unifiededitor/inc/msgunieditorbody.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiededitor/inc/msgunieditorbody.h Fri Jul 09 14:46:10 2010 +0530
@@ -79,6 +79,11 @@
* Disables char counter
*/
void disableCharCounter();
+
+ /*
+ * Enables char counter
+ */
+ void enableCharCounter();
/**
* To set focus on editable field.
--- a/messagingapp/msgui/unifiededitor/inc/msgunieditorview.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiededitor/inc/msgunieditorview.h Fri Jul 09 14:46:10 2010 +0530
@@ -112,10 +112,15 @@
const ConvergedMessage& messageDetails, bool draftMessage = false);
/**
- * Populate the editor with the forwarded message's content
+ * Populate the editor with the message's content
+ * for various cases like forward, reply, replyAll
+ * @param messageId, unique id of message in store
+ * @param messageType, sms or mms
+ * @param editorOperation, forward or reply or replyAll etc
*/
- void forwardMessage(ConvergedMessageId& messageId,
- ConvergedMessage::MessageType messageType );
+ void fetchMessageFromStore(ConvergedMessageId& messageId,
+ ConvergedMessage::MessageType messageType,
+ int editorOperation);
/**
* Create VCards for all the contacts available in the list
--- a/messagingapp/msgui/unifiededitor/resources/layouts/msgunifiededitorbody.css Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiededitor/resources/layouts/msgunifiededitorbody.css Fri Jul 09 14:46:10 2010 +0530
@@ -87,10 +87,18 @@
}
/*************************** Character Counter ******************************/
+
MsgUnifiedEditorBody::charCounter
{
- size-policy:fixed fixed;
- pref-height:-1;
- pref-width:-1;
- text-height:var(hb-param-text-height-tiny);
+ text-height:var(hb-param-text-height-tiny);
+ text-align:centre;
+ text-line-count-min: 1;
+ text-line-count-max: 1;
}
+
+MsgUnifiedEditorBody::charCounterFrame
+{
+ size-policy: fixed, fixed ;
+ pref-height: expr(var(hb-param-text-height-tiny)+2*var(hb-param-margin-gene-middle-vertical));
+ pref-width: expr(var(hb-param-text-height-tiny)*3 + 2*var(hb-param-margin-gene-middle-horizontal));
+}
--- a/messagingapp/msgui/unifiededitor/resources/layouts/msgunifiededitorbody.widgetml Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiededitor/resources/layouts/msgunifiededitorbody.widgetml Fri Jul 09 14:46:10 2010 +0530
@@ -14,14 +14,12 @@
<meshitem src="textEdit" srcEdge="LEFT" dst="" dstEdge="LEFT" />
<meshitem src="textEdit" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
<meshitem src="textEdit" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
-
- <meshitem src="charCounter" srcEdge="TOP" dst="textEdit" dstEdge="TOP" />
- <meshitem src="charCounter" srcEdge="RIGHT" dst="textEdit" dstEdge="RIGHT" />
+
+ <meshitem src="charCounter" srcEdge="CENTERH" dst="charCounterFrame" dstEdge="CENTERH" />
+ <meshitem src="charCounter" srcEdge="CENTERV" dst="charCounterFrame" dstEdge="CENTERV" />
- <meshitem src="charCounterFrame" srcEdge="LEFT" dst="charCounter" dstEdge="LEFT" />
- <meshitem src="charCounterFrame" srcEdge="TOP" dst="charCounter" dstEdge="TOP" />
- <meshitem src="charCounterFrame" srcEdge="RIGHT" dst="charCounter" dstEdge="RIGHT" />
- <meshitem src="charCounterFrame" srcEdge="BOTTOM" dst="charCounter" dstEdge="BOTTOM" />
+ <meshitem src="charCounterFrame" srcEdge="TOP" dst="textEdit" dstEdge="TOP" />
+ <meshitem src="charCounterFrame" srcEdge="RIGHT" dst="textEdit" dstEdge="RIGHT" />
</layout>
@@ -36,13 +34,11 @@
<meshitem src="textEdit" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
<meshitem src="textEdit" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
- <meshitem src="charCounter" srcEdge="TOP" dst="textEdit" dstEdge="TOP" />
- <meshitem src="charCounter" srcEdge="RIGHT" dst="textEdit" dstEdge="RIGHT" />
+ <meshitem src="charCounter" srcEdge="CENTERH" dst="charCounterFrame" dstEdge="CENTERH" />
+ <meshitem src="charCounter" srcEdge="CENTERV" dst="charCounterFrame" dstEdge="CENTERV" />
- <meshitem src="charCounterFrame" srcEdge="LEFT" dst="charCounter" dstEdge="LEFT" />
- <meshitem src="charCounterFrame" srcEdge="TOP" dst="charCounter" dstEdge="TOP" />
- <meshitem src="charCounterFrame" srcEdge="RIGHT" dst="charCounter" dstEdge="RIGHT" />
- <meshitem src="charCounterFrame" srcEdge="BOTTOM" dst="charCounter" dstEdge="BOTTOM" />
+ <meshitem src="charCounterFrame" srcEdge="TOP" dst="textEdit" dstEdge="TOP" />
+ <meshitem src="charCounterFrame" srcEdge="RIGHT" dst="textEdit" dstEdge="RIGHT" />
</layout>
@@ -61,13 +57,11 @@
<meshitem src="pixmap" srcEdge="LEFT" dst="" dstEdge="LEFT" />
<meshitem src="pixmap" srcEdge="RIGHT" dst="textEdit" dstEdge="LEFT" />
- <meshitem src="charCounter" srcEdge="TOP" dst="textEdit" dstEdge="TOP" />
- <meshitem src="charCounter" srcEdge="RIGHT" dst="textEdit" dstEdge="RIGHT" />
+ <meshitem src="charCounter" srcEdge="CENTERH" dst="charCounterFrame" dstEdge="CENTERH" />
+ <meshitem src="charCounter" srcEdge="CENTERV" dst="charCounterFrame" dstEdge="CENTERV" />
- <meshitem src="charCounterFrame" srcEdge="LEFT" dst="charCounter" dstEdge="LEFT" />
- <meshitem src="charCounterFrame" srcEdge="TOP" dst="charCounter" dstEdge="TOP" />
- <meshitem src="charCounterFrame" srcEdge="RIGHT" dst="charCounter" dstEdge="RIGHT" />
- <meshitem src="charCounterFrame" srcEdge="BOTTOM" dst="charCounter" dstEdge="BOTTOM" />
+ <meshitem src="charCounterFrame" srcEdge="TOP" dst="textEdit" dstEdge="TOP" />
+ <meshitem src="charCounterFrame" srcEdge="RIGHT" dst="textEdit" dstEdge="RIGHT" />
</layout>
--- a/messagingapp/msgui/unifiededitor/src/msgunieditoraddress.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiededitor/src/msgunieditoraddress.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -270,7 +270,7 @@
// append line seperator
invalidStr.append("<br>");
invalidStr.append(invalidContacts);
- HbMessageBox::information(invalidStr);
+ HbMessageBox::information(invalidStr, 0, 0, HbMessageBox::Ok);
}
// addition operation complete, reset flags
@@ -307,8 +307,7 @@
--mExceedsMaxMmsRecipientsBy;
if(!mExceedsMaxMmsRecipientsBy)
{
- HbNotificationDialog::launchDialog(
- LOC_MMS_RECIPIENT_LIMIT_REACHED);
+ HbMessageBox::information(LOC_MMS_RECIPIENT_LIMIT_REACHED, 0, 0, HbMessageBox::Ok);
}
resetToPrevious();
}
@@ -318,8 +317,7 @@
emit contentChanged();
if(MsgUnifiedEditorMonitor::msgAddressCount() > MsgUnifiedEditorMonitor::maxMmsRecipients())
{
- HbNotificationDialog::launchDialog(
- LOC_MMS_RECIPIENT_LIMIT_REACHED);
+ HbMessageBox::information(LOC_MMS_RECIPIENT_LIMIT_REACHED, 0, 0, HbMessageBox::Ok);
resetToPrevious();
// reset monitor data
emit contentChanged();
--- a/messagingapp/msgui/unifiededitor/src/msgunieditorbody.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiededitor/src/msgunieditorbody.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -41,6 +41,9 @@
#include <xqsharablefile.h>
#include <xqappmgr.h>
#include <xqconversions.h>
+#include <hbmessagebox.h>
+#include <hbcolorscheme.h>
+#include <QColor>
// USER INCLUDES
#include "msgunieditorbody.h"
#include "UniEditorGenUtils.h"
@@ -56,7 +59,8 @@
#include "msgunieditoraudiowidget.h"
// Constants
-const QString BACKGROUND_FRAME("qtg_fr_btn_normal");
+const QString BACKGROUND_FRAME("qtg_fr_messaging_char_count");
+const QString CHAR_COUNTER_COLOR("qtc_messaging_char_count");
const int KShowCounterLimit = 10;
const int BYTES_TO_KBYTES_FACTOR = 1024;
@@ -83,12 +87,8 @@
/BYTES_TO_KBYTES_FACTOR;
QString displayStr = QString(LOC_UNABLE_TO_ATTACH_ITEM)
.arg(availableSize);
- HbNotificationDialog* dlg = new HbNotificationDialog();
- dlg->setFocusPolicy(Qt::NoFocus);
- dlg->setDismissPolicy(HbPopup::TapAnywhere);
- dlg->setAttribute(Qt::WA_DeleteOnClose, true);
- dlg->setText(displayStr);
- dlg->show();
+
+ HbMessageBox::information(displayStr, 0, 0, HbMessageBox::Ok);
}
@@ -119,16 +119,17 @@
mCharCounter = new HbTextItem(this);
HbStyle::setItemName(mCharCounter, "charCounter");
mCharCounter->setZValue(1.5);
- mCharCounter->setText("160(1)");
-
+
+ QColor color = HbColorScheme::color(CHAR_COUNTER_COLOR);
+ mCharCounter->setTextColor(color);
+
mBackgroundItem = new HbFrameItem(this);
HbStyle::setItemName(mBackgroundItem, "charCounterFrame");
- mBackgroundItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
+ mBackgroundItem->frameDrawer().setFrameType(HbFrameDrawer::ThreePiecesHorizontal);
mBackgroundItem->frameDrawer().setFillWholeRect(true);
- mBackgroundItem->frameDrawer().setFrameGraphicsName(
- BACKGROUND_FRAME);
+ mBackgroundItem->frameDrawer().setFrameGraphicsName(BACKGROUND_FRAME);
mPluginLoader = new UniEditorPluginLoader(this);
@@ -578,7 +579,7 @@
if(futureSize > MsgUnifiedEditorMonitor::maxMmsSize())
{
mTextEdit->setPlainText(mPrevBuffer);
- HbNotificationDialog::launchDialog(LOC_UNABLE_TO_ADD_CONTENT);
+ HbMessageBox::information(LOC_UNABLE_TO_ADD_CONTENT, 0, 0, HbMessageBox::Ok);
mTextEdit->setCursorPosition(mPrevBuffer.length());
return;
}
@@ -719,6 +720,45 @@
mBackgroundItem->setVisible(false);
}
+// ---------------------------------------------------------
+// MsgUnifiedEditorBody::enableCharCounter
+// ---------------------------------------------------------
+//
+void MsgUnifiedEditorBody::enableCharCounter()
+ {
+ mPluginInterface->setEncodingSettings(EFalse, ESmsEncodingNone,
+ mCharSupportType);
+
+ TInt numOfRemainingChars;
+ TInt numOfPDUs;
+ TBool unicodeMode;
+ TSmsEncoding alternativeEncodingType;
+ QString string = mTextEdit->toPlainText();
+ mPluginInterface->getNumPDUs(string,
+ numOfRemainingChars, numOfPDUs, unicodeMode,
+ alternativeEncodingType);
+
+ //Save the unicode value returned
+ mUnicode = unicodeMode;
+
+ //Set char counter value
+ QString display = QString("%1(%2)").arg(numOfRemainingChars).arg(
+ numOfPDUs);
+ mCharCounter->setText(display);
+
+ if (numOfPDUs > 1 || numOfRemainingChars <= KShowCounterLimit)
+ {
+ mCharCounter->setVisible(true);
+ mBackgroundItem->setVisible(true);
+ }
+ else
+ {
+ mCharCounter->setVisible(false);
+ mBackgroundItem->setVisible(false);
+ }
+
+ }
+
//---------------------------------------------------------------
// MsgUnifiedEditorBody :: setFocus
// @see header file
--- a/messagingapp/msgui/unifiededitor/src/msgunieditormonitor.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiededitor/src/msgunieditormonitor.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -151,6 +151,11 @@
view()->mBody->disableCharCounter();
view()->addSubject();
}
+ else
+ {
+ //Enable char counter
+ view()->mBody->enableCharCounter();
+ }
// check if sent by body widget
MsgUnifiedEditorBody* body = NULL;
--- a/messagingapp/msgui/unifiededitor/src/msgunieditorsubject.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiededitor/src/msgunieditorsubject.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -19,6 +19,7 @@
#include "debugtraces.h"
#include <HbIconItem>
#include <HbNotificationDialog>
+#include <hbmessagebox.h>
// USER INCLUDES
#include "msgunieditorsubject.h"
@@ -125,7 +126,7 @@
mSubjectEdit->setText(mPrevBuffer);
connect(mSubjectEdit, SIGNAL(contentsChanged(const QString&)),
this, SLOT(onContentsChanged(const QString&)));
- HbNotificationDialog::launchDialog(LOC_UNABLE_TO_ADD_CONTENT);
+ HbMessageBox::information(LOC_UNABLE_TO_ADD_CONTENT, 0, 0, HbMessageBox::Ok);
return;
}
--- a/messagingapp/msgui/unifiededitor/src/msgunieditorview.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiededitor/src/msgunieditorview.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -302,13 +302,14 @@
mCanSaveToDrafts = false;
}
-void MsgUnifiedEditorView::forwardMessage(ConvergedMessageId& messageId,
- ConvergedMessage::MessageType messageType )
+void MsgUnifiedEditorView::fetchMessageFromStore(
+ ConvergedMessageId& messageId,
+ ConvergedMessage::MessageType messageType,
+ int editorOperation)
{
if(!mPluginLoader)
{
mPluginLoader = new UniEditorPluginLoader(this);
-
}
UniEditorPluginInterface* pluginInterface = NULL;
if( messageType == ConvergedMessage::Mms )
@@ -325,8 +326,7 @@
//Fetch the converged message from the msgId
ConvergedMessage* msg;
msg = pluginInterface->convertFrom(messageId.getId(),
- UniEditorPluginInterface::Forward);
-
+ (UniEditorPluginInterface::EditorOperation)editorOperation);
if( msg != NULL )
{
//Populate the content inside editor
@@ -367,7 +367,23 @@
break;
case MsgBaseView::FORWARD_MSG:
{
- forwardMessage(*messageDetails->id(), messageDetails->messageType());
+ fetchMessageFromStore(*messageDetails->id(),
+ messageDetails->messageType(),
+ UniEditorPluginInterface::Forward);
+ }
+ break;
+ case MsgBaseView::REPLY_MSG:
+ {
+ fetchMessageFromStore(*messageDetails->id(),
+ messageDetails->messageType(),
+ UniEditorPluginInterface::Reply);
+ }
+ break;
+ case MsgBaseView::REPLY_ALL_MSG:
+ {
+ fetchMessageFromStore(*messageDetails->id(),
+ messageDetails->messageType(),
+ UniEditorPluginInterface::ReplyAll);
}
break;
default:
--- a/messagingapp/msgui/unifiedviewer/inc/unifiedviewer.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/inc/unifiedviewer.h Fri Jul 09 14:46:10 2010 +0530
@@ -75,7 +75,12 @@
* @see HbView
*/
void createToolBar();
-
+
+ /**
+ * Launch Editor for forward, reply, replyall actions
+ * @param operation, Editor operation e.g. forward, reply etc
+ */
+ void launchEditor(MsgBaseView::UniEditorOperation operation);
public slots:
@@ -91,7 +96,7 @@
* Handle delete
*/
void handleDeleteAction();
-
+
private slots:
/**
* This slot is called when sendMessage signal is emitted for a highlighted
@@ -105,6 +110,16 @@
*/
void onDialogDeleteMsg(HbAction* action);
+ /**
+ * Handle reply
+ */
+ void handleReplyAction();
+
+ /**
+ * Handle reply-all
+ */
+ void handleReplyAllAction();
+
private:
/**
--- a/messagingapp/msgui/unifiedviewer/inc/univiewerbodywidget.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/inc/univiewerbodywidget.h Fri Jul 09 14:46:10 2010 +0530
@@ -26,6 +26,7 @@
class UniViewerPixmapWidget;
class UniViewerAudioWidget;
class HbTextItem;
+class HbIconItem;
/**
* @class UniViewerBodyWidget
@@ -118,6 +119,14 @@
*/
void clearContent();
+private slots:
+
+ /**
+ * Sets overlay icon on top of pixmap widget.
+ * @param iconName Overlay icon name to be set.
+ */
+ void setOverlayIcon(const QString &iconName);
+
protected:
/**
@@ -164,6 +173,11 @@
* Media widget for embedded audio content.
*/
UniViewerAudioWidget *mAudioItem;
+
+ /**
+ * Overlay icon on top of pixmap widget.
+ */
+ HbIconItem *mOverlayItem;
};
#endif //UNIVIEWER_BODY_WIDGET_H
--- a/messagingapp/msgui/unifiedviewer/inc/univiewerpixmapwidget.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/inc/univiewerpixmapwidget.h Fri Jul 09 14:46:10 2010 +0530
@@ -25,7 +25,6 @@
class UniMessageInfo;
class ThumbnailManager;
-
/**
* This widget displays the pixmap content in viewer.
*/
@@ -65,6 +64,13 @@
*/
void longTap(const QPointF &position);
+ /**
+ * Signal emitted when the thumbnail returned by Thumbnail manager is set
+ * to pixmap widget.
+ * @param iconName Overlay icon name to be set.
+ */
+ void setOverlayIcon(const QString& iconName);
+
protected:
/**
@@ -77,12 +83,12 @@
private slots:
/**
- *
+ * Handles opening of media.
*/
void handleOpen();
/**
- *
+ * Handles saving of media.
*/
void handleSave();
@@ -95,7 +101,7 @@
/**
* Slot hit when the thumbnail is ready.
*/
- void thumbnailReady(const QPixmap& pixmap, void *data, int id, int error);
+ void thumbnailReady(const QPixmap& pixmap, void *data, int id, int error);
private:
@@ -115,6 +121,12 @@
*/
void handleLongTap(const QPointF &position);
+ /**
+ * Calculates the thumbnail size.
+ * @return Thumbnail size
+ */
+ QSize getThumbnailSize();
+
private:
/**
@@ -127,7 +139,7 @@
* ThumbnailManager
* Own.
*/
- ThumbnailManager *mThumbnailManager;
+ ThumbnailManager *mThumbnailManager;
/**
* Mime Type of pixmap.
--- a/messagingapp/msgui/unifiedviewer/resources/layouts/univiewerbodywidget.css Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/resources/layouts/univiewerbodywidget.css Fri Jul 09 14:46:10 2010 +0530
@@ -63,6 +63,15 @@
right:1un;
}
+UniViewerBodyWidget::overlayItem
+{
+ zvalue:1;
+ size-policy-vertical:fixed;
+ size-policy-horizontal:fixed;
+ pref-width:var(hb-param-graphic-size-primary-large);
+ pref-height:var(hb-param-graphic-size-primary-large);
+}
+
UniViewerBodyWidget[hasText="false"]::pixmap:landscape
{
top:-var(hb-param-margin-gene-middle-vertical);
--- a/messagingapp/msgui/unifiedviewer/resources/layouts/univiewerbodywidget.widgetml Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/resources/layouts/univiewerbodywidget.widgetml Fri Jul 09 14:46:10 2010 +0530
@@ -12,6 +12,9 @@
<meshitem src="pixmap" srcEdge="LEFT" dst="" dstEdge="LEFT" spacer="leftSpacer" />
<meshitem src="pixmap" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacer="rightSpacer" />
+ <meshitem src="overlayItem" srcEdge="CENTERH" dst="pixmap" dstEdge="CENTERH" />
+ <meshitem src="overlayItem" srcEdge="CENTERV" dst="pixmap" dstEdge="CENTERV" />
+
<meshitem src="textItem" srcEdge="TOP" dst="pixmap" dstEdge="BOTTOM" />
<meshitem src="textItem" srcEdge="LEFT" dst="" dstEdge="LEFT" />
<meshitem src="textItem" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
@@ -31,6 +34,9 @@
<meshitem src="pixmap" srcEdge="LEFT" dst="" dstEdge="LEFT" spacer="leftSpacer" />
<meshitem src="pixmap" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacer="rightSpacer" />
<meshitem src="pixmap" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacer="bottomSpacer" />
+
+ <meshitem src="overlayItem" srcEdge="CENTERH" dst="pixmap" dstEdge="CENTERH" />
+ <meshitem src="overlayItem" srcEdge="CENTERV" dst="pixmap" dstEdge="CENTERV" />
</layout>
<layout name="layout-landscape" type="mesh">
@@ -46,6 +52,8 @@
<meshitem src="pixmap" srcEdge="LEFT" dst="" dstEdge="LEFT" spacer="leftSpacer" />
<meshitem src="pixmap" srcEdge="RIGHT" dst="" dstEdge="CENTERH" spacer="rightSpacer" />
+ <meshitem src="overlayItem" srcEdge="CENTERH" dst="pixmap" dstEdge="CENTERH" />
+ <meshitem src="overlayItem" srcEdge="CENTERV" dst="pixmap" dstEdge="CENTERV" />
<meshitem src="textItem" srcEdge="LEFT" dst="" dstEdge="CENTERH" />
<meshitem src="textItem" srcEdge="TOP" dst="audioItem" dstEdge="BOTTOM" />
@@ -81,5 +89,8 @@
<meshitem src="pixmap" srcEdge="LEFT" dst="" dstEdge="LEFT" spacer="leftSpacer" />
<meshitem src="pixmap" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacer="rightSpacer" />
<meshitem src="pixmap" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacer="bottomSpacer" />
+
+ <meshitem src="overlayItem" srcEdge="CENTERH" dst="pixmap" dstEdge="CENTERH" />
+ <meshitem src="overlayItem" srcEdge="CENTERV" dst="pixmap" dstEdge="CENTERV" />
</layout>
</hbwidget>
\ No newline at end of file
--- a/messagingapp/msgui/unifiedviewer/src/unifiedviewer.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/src/unifiedviewer.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -114,11 +114,15 @@
}
else
{
- toolbar->addAction(HbIcon(REPLY_ICON), "");
+ // do not show reply option for multi recipient outgoing message
+ if(!(!mViewFeeder->isIncoming() && mViewFeeder->recipientCount()>1))
+ {
+ toolbar->addAction(HbIcon(REPLY_ICON), "", this, SLOT(handleReplyAction()));
+ }
if (mViewFeeder->recipientCount() > 1)
{
- toolbar->addAction(HbIcon(REPLY_ALL_ICON), "");
+ toolbar->addAction(HbIcon(REPLY_ALL_ICON), "", this, SLOT(handleReplyAllAction()));
}
}
@@ -192,32 +196,26 @@
// @see header file
//---------------------------------------------------------------
void UnifiedViewer::handleFwdAction()
-{
- ConvergedMessage message;
- ConvergedMessageId id(mMessageId);
- message.setMessageId(id);
- if(mViewFeeder->msgType() == KSenduiMtmMmsUidValue)
- {
- message.setMessageType(ConvergedMessage::Mms);
- }
- else
- {
- message.setMessageType(ConvergedMessage::Sms);
- }
+{
+ launchEditor(MsgBaseView::FORWARD_MSG);
+}
- QByteArray dataArray;
- QDataStream messageStream
- (&dataArray, QIODevice::WriteOnly | QIODevice::Append);
- message.serialize(messageStream);
+//---------------------------------------------------------------
+// UnifiedViewer::handleReplyAction
+// @see header file
+//---------------------------------------------------------------
+void UnifiedViewer::handleReplyAction()
+{
+ launchEditor(MsgBaseView::REPLY_MSG);
+}
- QVariantList params;
- params << MsgBaseView::UNIEDITOR; // target view
- params << MsgBaseView::UNIVIEWER; // source view
-
- params << dataArray;
- params << MsgBaseView::FORWARD_MSG;
-
- emit switchView(params);
+//---------------------------------------------------------------
+// UnifiedViewer::handleReplyAllAction
+// @see header file
+//---------------------------------------------------------------
+void UnifiedViewer::handleReplyAllAction()
+{
+ launchEditor(MsgBaseView::REPLY_ALL_MSG);
}
//---------------------------------------------------------------
@@ -297,4 +295,38 @@
}
}
+//---------------------------------------------------------------
+// UnifiedViewer::launchEditor
+// @see header file
+//---------------------------------------------------------------
+void UnifiedViewer::launchEditor(
+ MsgBaseView::UniEditorOperation operation)
+{
+ ConvergedMessage message;
+ ConvergedMessageId id(mMessageId);
+ message.setMessageId(id);
+ if(mViewFeeder->msgType() == KSenduiMtmMmsUidValue)
+ {
+ message.setMessageType(ConvergedMessage::Mms);
+ }
+ else
+ {
+ message.setMessageType(ConvergedMessage::Sms);
+ }
+
+ QByteArray dataArray;
+ QDataStream messageStream
+ (&dataArray, QIODevice::WriteOnly | QIODevice::Append);
+ message.serialize(messageStream);
+
+ QVariantList params;
+ params << MsgBaseView::UNIEDITOR; // target view
+ params << MsgBaseView::UNIVIEWER; // source view
+
+ params << dataArray;
+ params << operation;
+
+ emit switchView(params);
+}
+
// EOF
--- a/messagingapp/msgui/unifiedviewer/src/univiewerbodywidget.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/src/univiewerbodywidget.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -21,6 +21,7 @@
#include <QFile>
#include <HbTextItem>
#include <HbMainWindow>
+#include <HbIconItem>
// USER INCLUDES
#include "univiewertextitem.h"
@@ -39,7 +40,7 @@
//---------------------------------------------------------------
UniViewerBodyWidget::UniViewerBodyWidget(QGraphicsItem *parent) :
HbWidget(parent), mHasText(false), mHasPixmap(false), mTextItem(0), mSlideCounter(0),
- mPixmapItem(0), mAudioItem(0)
+ mPixmapItem(0), mAudioItem(0), mOverlayItem(0)
{
this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
}
@@ -97,6 +98,7 @@
if (!mPixmapItem) {
mPixmapItem = new UniViewerPixmapWidget(this);
HbStyle::setItemName(mPixmapItem, "pixmap");
+ connect(mPixmapItem, SIGNAL(setOverlayIcon(QString)), this, SLOT(setOverlayIcon(QString)));
}
mPixmapItem->hide();
mPixmapItem->populate(info);
@@ -122,6 +124,7 @@
text.replace(QChar::ParagraphSeparator, QChar::LineSeparator);
text.replace('\r', QChar::LineSeparator);
mTextItem->setText(text);
+
this->repolish();
}
@@ -138,6 +141,7 @@
mSlideCounter->hide();
mSlideCounter->setText(slideCounter);
+
this->repolish();
}
@@ -214,7 +218,7 @@
}
//---------------------------------------------------------------
-//UniViewerBodyWidget :: clearContent
+// UniViewerBodyWidget :: clearContent
// @see header file
//---------------------------------------------------------------
void UniViewerBodyWidget::clearContent()
@@ -238,12 +242,35 @@
mTextItem = NULL;
}
+ if (mOverlayItem) {
+ mOverlayItem->setParent(NULL);
+ delete mOverlayItem;
+ mOverlayItem = NULL;
+ }
+
setHasText(false);
setHasPixmap(false);
repolish();
}
//---------------------------------------------------------------
+// UniViewerBodyWidget::setOverlayIcon
+// @see header file
+//---------------------------------------------------------------
+void UniViewerBodyWidget::setOverlayIcon(const QString &iconName)
+{
+ if (!mOverlayItem) {
+ mOverlayItem = new HbIconItem(this);
+ HbStyle::setItemName(mOverlayItem, "overlayItem");
+ }
+
+ mOverlayItem->hide();
+ mOverlayItem->setIconName(iconName);
+
+ this->repolish();
+}
+
+//---------------------------------------------------------------
//UniViewerBodyWidget::sizeHint
// @see header file
//---------------------------------------------------------------
@@ -360,6 +387,10 @@
mPixmapItem->show();
}
+ if (mOverlayItem) {
+ mOverlayItem->show();
+ }
+
// Calculate the size hint to be returned.
szHint.setHeight(0);
--- a/messagingapp/msgui/unifiedviewer/src/univiewerpixmapwidget.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/src/univiewerpixmapwidget.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -38,6 +38,10 @@
const QString CORRUPTED_PIXMAP_ICON("qtg_large_corrupted");
const QString VIDEO_MIMETYPE("video");
const QString MSG_VIDEO_ICON("qtg_small_video");
+const QString VIDEO_OVERLAY_ICON("qtg_large_video_player");
+
+const int WIDTH_RATIO = 4;
+const int HEIGHT_RATIO = 3;
//---------------------------------------------------------------
// UniViewerPixmapWidget::UniViewerPixmapWidget
@@ -51,22 +55,6 @@
}
//---------------------------------------------------------------
-// UniViewerPixmapWidget::init
-// @see header file
-//---------------------------------------------------------------
-void UniViewerPixmapWidget::init()
-{
- mThumbnailManager = new ThumbnailManager(this);
- mThumbnailManager->setMode(ThumbnailManager::Default);
- mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
- mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge);
-
- connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void*, int, int)), this,
- SLOT(thumbnailReady(QPixmap, void*, int, int)));
-
-}
-
-//---------------------------------------------------------------
// UniViewerPixmapWidget::~UniViewerPixmapWidget
// @see header file
//---------------------------------------------------------------
@@ -168,6 +156,46 @@
{
}
+//---------------------------------------------------------------
+// UniViewerPixmapWidget::regrabGesture
+// @see header file
+//---------------------------------------------------------------
+void UniViewerPixmapWidget::regrabGesture()
+{
+ this->grabGesture(Qt::TapGesture);
+}
+
+//---------------------------------------------------------------
+// UniViewerPixmapWidget::thumbnailReady
+// @see header
+//---------------------------------------------------------------
+void UniViewerPixmapWidget::thumbnailReady(const QPixmap& pixmap, void *data, int id, int error)
+{
+ Q_UNUSED(data)
+ Q_UNUSED(id)
+ this->grabGesture(Qt::TapGesture);
+ if (!error) {
+ this->setIcon(HbIcon(pixmap));
+ this->hide();
+ emit setOverlayIcon(VIDEO_OVERLAY_ICON);
+ }
+}
+
+//---------------------------------------------------------------
+// UniViewerPixmapWidget::init
+// @see header file
+//---------------------------------------------------------------
+void UniViewerPixmapWidget::init()
+{
+ mThumbnailManager = new ThumbnailManager(this);
+ mThumbnailManager->setMode(ThumbnailManager::CropToAspectRatio);
+ mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
+ mThumbnailManager->setThumbnailSize(getThumbnailSize());
+
+ connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void*, int, int)), this,
+ SLOT(thumbnailReady(QPixmap, void*, int, int)));
+}
+
//----------------------------------------------------------------------------
// UniViewerPixmapWidget::handleShortTap
// @see header file
@@ -197,27 +225,23 @@
}
//---------------------------------------------------------------
-// UniViewerPixmapWidget::regrabGesture
+// UniViewerPixmapWidget::getThumbnailSize
// @see header file
//---------------------------------------------------------------
-void UniViewerPixmapWidget::regrabGesture()
+QSize UniViewerPixmapWidget::getThumbnailSize()
{
- this->grabGesture(Qt::TapGesture);
+ QSize thumbnailSize(1, 1);
+ HbWidget *parent = qobject_cast<HbWidget *>(this->parentWidget());
+
+ if (parent) {
+ qreal thumbnailWidth = 0.0;
+ qreal thumbnailHeight = 0.0;
+ parent->style()->parameter("hb-param-screen-short-edge", thumbnailWidth);
+ thumbnailHeight = (thumbnailWidth * HEIGHT_RATIO) / WIDTH_RATIO;
+ thumbnailSize.setHeight(qRound(thumbnailHeight));
+ thumbnailSize.setWidth(qRound(thumbnailWidth));
+ }
+ return thumbnailSize;
}
-//---------------------------------------------------------------
-// UniViewerPixmapWidget::thumbnailReady
-// @see header
-//---------------------------------------------------------------
-void UniViewerPixmapWidget::thumbnailReady(const QPixmap& pixmap, void *data, int id, int error)
-{
- Q_UNUSED(data)
- Q_UNUSED(id)
- this->grabGesture(Qt::TapGesture);
- if (!error) {
- this->setIcon(HbIcon(pixmap));
- this->hide();
- this->updateGeometry();
- }
-}
// EOF
--- a/messagingapp/msgui/unifiedviewer/src/univiewertextitem.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgui/unifiedviewer/src/univiewertextitem.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -38,16 +38,17 @@
//consts
//regexp
-const QString NUMBER_PATTERN("(\\(?(\\+|\\d))((?:\\d)((?:[\\s-/.\\)\\(])*(?:(\\d+|\\))))*(?:\\d?|\\)))|((\\*#)(?:\\d+(\\*|#)(?:\\d+#)?))");
+const QString NUMBER_PATTERN("(\\(?(\\+|\\d))((?:\\d)((?:[\\s-/.\\)\\(])*(?:(\\d+|\\))))*(?:\\d?[^\\D]|\\)))|((\\*#)(?:\\d+(\\*|#)(?:\\d+#)?))");
const QString EMAIL_PATTERN("[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?");
const QString URL_PATTERN("(((ht|f|rt)(tp|sp)(s?)\\:\\/\\/)|(www|wap)(?:\\.))(([-\\w]*[0-9a-zA-Z])+(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\?\\,\'\\/\\\\+&%\\$#_=~]*)(\\.)([-\\w]*[0-9a-zA-Z])+(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\?\\,\'\\/\\\\+&%\\$#_=~]*))+[a-zA-Z0-9/]");
//rules
-const QString NUMBER_RULE("NUMBER_RULE");
-const QString EMAIL_RULE("EMAIL_RULE");
-const QString URL_RULE("URL_RULE");
+const QString URL_RULE("0_URL_RULE");
+const QString EMAIL_RULE("1_EMAIL_RULE");
+const QString NUMBER_RULE("2_NUMBER_RULE");
+
//localization
#define LOC_CONTACT_INFO hbTrId("txt_messaging_menu_contact_info")
@@ -123,26 +124,33 @@
while(cursor.hasSelection())
{
- // Insert anchor in the document
- QTextCharFormat f;
- f.setFontUnderline(true);
- f.setForeground(palette().link());
-
- //prepending rule name to identiy different fragment to which
- //catagory it belongs to.
- QString txt = cursor.selectedText().prepend(ruleName);
+ int p = cursor.position();
+ QString anchor = this->anchorAt(p-1);
+
+ //not identified yet.
+ if(anchor.isEmpty())
+ {
+ // Insert anchor in the document
+ QTextCharFormat f;
+ f.setFontUnderline(true);
+ f.setForeground(palette().link());
- if(ruleName == NUMBER_RULE)
- {
- //removing special char(s) from phone numbers.
- QRegExp numberCharExp("[\\s-/.\\(\\)]");
- txt = txt.remove(numberCharExp);
+ //prepending rule name to identiy different fragment to which
+ //catagory it belongs to.
+ QString txt = cursor.selectedText().prepend(ruleName);
+
+ if(ruleName == NUMBER_RULE)
+ {
+ //removing special char(s) from phone numbers.
+ QRegExp numberCharExp("[\\s-/.\\(\\)]");
+ txt = txt.remove(numberCharExp);
+ }
+
+ f.setAnchorHref(txt);
+ f.setAnchor(true);
+ cursor.mergeCharFormat(f);
}
- f.setAnchorHref(txt);
- f.setAnchor(true);
- cursor.mergeCharFormat(f);
-
// Find next
cursor = this->document()->find(ruleExp, cursor);
}
--- a/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/src/unibiomessagedataplugin_p.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/src/unibiomessagedataplugin_p.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -75,7 +75,7 @@
//---------------------------------------------------------------
UniBioMessageDataPluginPrivate::UniBioMessageDataPluginPrivate(UniBioMessageDataPlugin* plugin) :
q_ptr(plugin), iMSession(NULL), iMtmReg(NULL), iBioClientMtm(NULL),
- iMsvEntry(NULL)
+ iMsvEntry(NULL),iAttachmentCount(0)
{
iMSession = CMsvSession::OpenSyncL(*this);
done = EFalse;
@@ -247,7 +247,13 @@
CMsvStore* store1 = iMsvEntry->ReadStoreL();
CleanupStack::PushL(store1);
MMsvAttachmentManager& attachMan = store1->AttachmentManagerL();
- RFile file = attachMan.GetAttachmentFileL(0);
+ RFile file;
+
+ if (iAttachmentCount > 0)
+ {
+ file = attachMan.GetAttachmentFileL(0);
+ }
+
CleanupStack::PopAndDestroy(store1);
return file;
}
--- a/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/bwins/test_unidatamodel_vcal_pluginu.def Tue Jul 06 22:50:16 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-EXPORTS
- ?SetForMtmTypeL@TestUniDataModelVCalPlugin@@AAEXAAVTMsvEntry@@W4TBIOMessageType@@@Z @ 1 NONAME ; void TestUniDataModelVCalPlugin::SetForMtmTypeL(class TMsvEntry &, enum TBIOMessageType)
- ?SetSessionPath@TestUniDataModelVCalPlugin@@AAEXABVTDesC16@@@Z @ 2 NONAME ; void TestUniDataModelVCalPlugin::SetSessionPath(class TDesC16 const &)
- ?CreateBioEntryClientSideL@TestUniDataModelVCalPlugin@@AAEXAAVTMsvEntry@@AAVCRichText@@@Z @ 3 NONAME ; void TestUniDataModelVCalPlugin::CreateBioEntryClientSideL(class TMsvEntry &, class CRichText &)
- ?trUtf8@TestUniDataModelVCalPlugin@@SA?AVQString@@PBD0H@Z @ 4 NONAME ; class QString TestUniDataModelVCalPlugin::trUtf8(char const *, char const *, int)
- ?qt_metacall@TestUniDataModelVCalPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 5 NONAME ; int TestUniDataModelVCalPlugin::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?CreateBIOEntryL@TestUniDataModelVCalPlugin@@AAEJAAVTDesC16@@W4TBIOMessageType@@@Z @ 6 NONAME ; long TestUniDataModelVCalPlugin::CreateBIOEntryL(class TDesC16 &, enum TBIOMessageType)
- ?initTestCase@TestUniDataModelVCalPlugin@@AAEXXZ @ 7 NONAME ; void TestUniDataModelVCalPlugin::initTestCase(void)
- ?CreateBIOEntryFromFileL@TestUniDataModelVCalPlugin@@AAEJABVTDesC16@@W4TBIOMessageType@@@Z @ 8 NONAME ; long TestUniDataModelVCalPlugin::CreateBIOEntryFromFileL(class TDesC16 const &, enum TBIOMessageType)
- ?testPluginLoading@TestUniDataModelVCalPlugin@@AAEXXZ @ 9 NONAME ; void TestUniDataModelVCalPlugin::testPluginLoading(void)
- ?testGetPluginWithoutLoading@TestUniDataModelVCalPlugin@@AAEXXZ @ 10 NONAME ; void TestUniDataModelVCalPlugin::testGetPluginWithoutLoading(void)
- ?testDraftsVCalMessage@TestUniDataModelVCalPlugin@@AAEXXZ @ 11 NONAME ; void TestUniDataModelVCalPlugin::testDraftsVCalMessage(void)
- ?tr@TestUniDataModelVCalPlugin@@SA?AVQString@@PBD0@Z @ 12 NONAME ; class QString TestUniDataModelVCalPlugin::tr(char const *, char const *)
- ?getStaticMetaObject@TestUniDataModelVCalPlugin@@SAABUQMetaObject@@XZ @ 13 NONAME ; struct QMetaObject const & TestUniDataModelVCalPlugin::getStaticMetaObject(void)
- ?testInBoxVCalMessage@TestUniDataModelVCalPlugin@@AAEXXZ @ 14 NONAME ; void TestUniDataModelVCalPlugin::testInBoxVCalMessage(void)
- ?qt_metacast@TestUniDataModelVCalPlugin@@UAEPAXPBD@Z @ 15 NONAME ; void * TestUniDataModelVCalPlugin::qt_metacast(char const *)
- ?init@TestUniDataModelVCalPlugin@@AAEXXZ @ 16 NONAME ; void TestUniDataModelVCalPlugin::init(void)
- ?metaObject@TestUniDataModelVCalPlugin@@UBEPBUQMetaObject@@XZ @ 17 NONAME ; struct QMetaObject const * TestUniDataModelVCalPlugin::metaObject(void) const
- ?tr@TestUniDataModelVCalPlugin@@SA?AVQString@@PBD0H@Z @ 18 NONAME ; class QString TestUniDataModelVCalPlugin::tr(char const *, char const *, int)
- ?ReadFromFileL@TestUniDataModelVCalPlugin@@AAEPAVHBufC16@@ABVTDesC16@@@Z @ 19 NONAME ; class HBufC16 * TestUniDataModelVCalPlugin::ReadFromFileL(class TDesC16 const &)
- ?SetBIOServiceIdL@TestUniDataModelVCalPlugin@@AAEJXZ @ 20 NONAME ; long TestUniDataModelVCalPlugin::SetBIOServiceIdL(void)
- ?cleanupTestCase@TestUniDataModelVCalPlugin@@AAEXXZ @ 21 NONAME ; void TestUniDataModelVCalPlugin::cleanupTestCase(void)
- ?SetMessageType@TestUniDataModelVCalPlugin@@AAE?AW4TBIOMessageType@@ABVTDesC16@@@Z @ 22 NONAME ; enum TBIOMessageType TestUniDataModelVCalPlugin::SetMessageType(class TDesC16 const &)
- ?trUtf8@TestUniDataModelVCalPlugin@@SA?AVQString@@PBD0@Z @ 23 NONAME ; class QString TestUniDataModelVCalPlugin::trUtf8(char const *, char const *)
- ?testUnusedAPIs@TestUniDataModelVCalPlugin@@AAEXXZ @ 24 NONAME ; void TestUniDataModelVCalPlugin::testUnusedAPIs(void)
- ?staticMetaObject@TestUniDataModelVCalPlugin@@2UQMetaObject@@B @ 25 NONAME ; struct QMetaObject const TestUniDataModelVCalPlugin::staticMetaObject
- ?GenerateMessagesL@TestUniDataModelVCalPlugin@@AAEPAVCMsvEntrySelection@@XZ @ 26 NONAME ; class CMsvEntrySelection * TestUniDataModelVCalPlugin::GenerateMessagesL(void)
- ?testPluginLoadingMultipleTimes@TestUniDataModelVCalPlugin@@AAEXXZ @ 27 NONAME ; void TestUniDataModelVCalPlugin::testPluginLoadingMultipleTimes(void)
- ?cleanup@TestUniDataModelVCalPlugin@@AAEXXZ @ 28 NONAME ; void TestUniDataModelVCalPlugin::cleanup(void)
-
Binary file messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/group/BioMtm.rsc has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/group/TestUniDataModelVCalPlugin.cfg Fri Jul 09 14:46:10 2010 +0530
@@ -0,0 +1,1 @@
+TestUniDataModelVCalPlugin
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/group/TestUniDataModelVCalPlugin.pl Fri Jul 09 14:46:10 2010 +0530
@@ -0,0 +1,182 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+#!/usr/bin/perl -w
+use warnings;
+use strict;
+
+my $TOTALCASES = 0;
+my $TOTALPASSED = 0;
+my $TOTALRUN = 0;
+my $TOTALFAILED = 0;
+my $TOTALSKIPPED = 0;
+
+sub parse_line
+{
+ my $line = $_[0];
+ my @parts = split (" ", $line);
+ my $passed = $parts[1];
+ my $failed = $parts[3];
+ my $skipped = $parts[5];
+
+ my $total = $passed + $failed + $skipped;
+ my $passrate = $passed * 100 / $total;
+ my $passrateround = sprintf("%.0f",$passrate);
+ my $runrate = ($total - $skipped)*100/$total;
+ my $runrateround = sprintf("%.0f",$runrate);
+
+ $TOTALCASES += $total;
+ $TOTALPASSED += $passed;
+ $TOTALRUN += ($total - $skipped);
+ $TOTALFAILED += $failed;
+ $TOTALSKIPPED += $skipped;
+
+ printf MYFILE "<td>\n";
+ printf MYFILE "$passed\n";
+ printf MYFILE "</td>\n";
+
+ if($failed > 0)
+ {
+ printf MYFILE "<td style=\"font-weight:bold;color:red\">\n";
+ printf MYFILE "$failed\n";
+ printf MYFILE "</td>\n";
+ }
+ else
+ {
+ printf MYFILE "<td>\n";
+ printf MYFILE "$failed\n";
+ printf MYFILE "</td>\n";
+ }
+
+ printf MYFILE "<td>\n";
+ printf MYFILE "$skipped\n";
+ printf MYFILE "</td>\n";
+
+ printf MYFILE "<td>\n";
+ printf MYFILE "$total\n";
+ printf MYFILE "</td>\n";
+
+ printf MYFILE "<td>\n";
+ printf MYFILE ("$passrateround %%\n");
+ printf MYFILE "</td>\n";
+
+ printf MYFILE "<td>\n";
+ printf MYFILE "$runrateround %%\n";
+ printf MYFILE "</td>\n";
+
+
+}
+
+sub parse_file
+ {
+ my $pattern = "Totals";
+ my $file = $_[0];
+ open (FILE,$file);
+
+ while (my $line= <FILE>)
+ {
+ chomp ($line);
+ if ($line =~ m/$pattern/)
+ {
+ parse_line $line;
+ }
+ }
+ close(FILE);
+ }
+
+
+sub generate_report
+ {
+ open (MYFILE, '>/epoc32/winscw/c/logs/messagingtestsuite/report.html');
+ printf MYFILE "<html>\n";
+ printf MYFILE "<body>\n";
+ printf MYFILE "<head>\n";
+ printf MYFILE "<title>MsgApp Test Suite Reports</title>";
+ printf MYFILE "</head>\n";
+ printf MYFILE "<h2 align = center>Messaging101 Test Suite Report</h2>\n";
+ printf MYFILE "<table border = 2 cellpadding = 10 align = center>\n";
+ printf MYFILE "<tr style = \" background-color:lavender \">\n";
+ printf MYFILE "<th>Module</th>\n";
+ printf MYFILE "<th style = color:green>Passed</th>\n";
+ printf MYFILE "<th style = color:red>Failed</th>\n";
+ printf MYFILE "<th style = color:chocolate>Skipped</th>\n";
+ printf MYFILE "<th>Total Cases</th>\n";
+ printf MYFILE "<th>Pass Rate</th>\n";
+ printf MYFILE "<th>Run Rate</th>\n";
+ printf MYFILE "</tr>\n";
+
+
+ my @files = </epoc32/winscw/c/logs/messagingtestsuite/*.txt>;
+ foreach my $file (@files)
+ {
+ my @splitedpath = split("/",$file);
+ my $filename = $splitedpath[-1];
+ my $length = length($filename);
+ my $name = substr($filename,11,$length-15);
+ printf MYFILE "<tr>\n";
+ printf MYFILE "<td>\n";
+ printf MYFILE "<a HREF=$filename style = text-decoration:none><b>$name</b></a>\n";
+ printf MYFILE "</td>\n";
+
+ parse_file $file;
+
+ printf MYFILE "</tr>\n";
+ }
+
+ printf MYFILE "<tr style= \"font-weight:bold; color:white; background-color:gray\">\n";
+ printf MYFILE "<td>\n";
+ printf MYFILE "<b>Overall</b>\n";
+ printf MYFILE "</td>\n";
+
+
+ printf MYFILE "<td>\n";
+ printf MYFILE "$TOTALPASSED\n";
+ printf MYFILE "</td>\n";
+
+ printf MYFILE "<td>\n";
+ printf MYFILE "$TOTALFAILED\n";
+ printf MYFILE "</td>\n";
+
+ printf MYFILE "<td>\n";
+ printf MYFILE "$TOTALSKIPPED\n";
+ printf MYFILE "</td>\n";
+
+ printf MYFILE "<td>\n";
+ printf MYFILE "$TOTALCASES\n";
+ printf MYFILE "</td>\n";
+
+ my $passrate = $TOTALPASSED*100/$TOTALCASES;
+ my $passrateround = sprintf("%.0f",$passrate);
+ printf MYFILE "<td>\n";
+ printf MYFILE "$passrateround%%\n";
+ printf MYFILE "</td>\n";
+
+ my $runrate = ($TOTALCASES - $TOTALSKIPPED)*100/$TOTALCASES;
+ my $runrateround = sprintf("%.0f",$runrate);
+ printf MYFILE "<td>\n";
+ printf MYFILE "$runrateround%%\n";
+ printf MYFILE "</td>\n";
+
+ printf MYFILE "</tr>\n";
+
+ printf MYFILE "</table>\n";
+ printf MYFILE "</body>\n";
+ printf MYFILE "</html>\n";
+
+ close (MYFILE);
+ }
+
+
+generate_report;
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/group/testunidatamodelvcalplugin.pro Fri Jul 09 14:46:10 2010 +0530
@@ -0,0 +1,71 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+QT += testlib
+QT -= gui
+
+TEMPLATE = app
+TARGET = test-unidatamodel-vcal-plugin
+
+
+INCLUDEPATH += .
+INCLUDEPATH += ../../../../../../inc
+INCLUDEPATH += ../../../../../../../inc
+#INCLUDEPATH += ../../../../../s60qconversions/inc
+INCLUDEPATH += ../../../../../../../../../../epoc32/include/platform/mw
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+DEFINES += BUILD_TEST_DLL
+
+SOURCES += \
+ ../src/testunidatamodelvcalplugin.cpp
+
+
+# Input
+HEADERS += \
+ ../inc/testunidatamodelvcalplugin.h
+
+
+
+SYMBIAN_PLATFORMS = WINSCW ARMV5
+ symbian {
+ TARGET.CAPABILITY = CAP_GENERAL_DLL
+ TARGET.EPOCSTACKSIZE = 0x8000
+ TARGET.EPOCHEAPSIZE = 0x1000 0x1F00000
+ TARGET.EPOCALLOWDLLDATA = 1
+ BLD_INF_RULES.prj_exports += "vcal1.txt /epoc32/winscw/c/test/vcal1.txt"
+ BLD_INF_RULES.prj_exports += "BioMtm.rsc /epoc32/winscw/c/resource/messaging/mtm/BioMtm.rsc"
+ BLD_INF_RULES.prj_exports += "TestUniDataModelVCalPlugin.cfg c:/TestUniDataModelVCalPlugin.cfg"
+ BLD_INF_RULES.prj_exports += "TestUniDataModelVCalPlugin.pl c:/TestUniDataModelVCalPlugin.pl"
+
+ }
+
+ LIBS += -leuser \
+ -lconvergedmessageutils\
+ -lmsgs \
+ -lsmcm \
+ -lgsmu \
+ -letext \
+ -lmsgs \
+ -lunidatamodelloader\
+ -lQtCore \
+ -lbioc \
+ -lefsrv \
+ -lbiodb \
+ -lxqutils \
+ -lbifu
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/group/vcal1.txt Fri Jul 09 14:46:10 2010 +0530
@@ -0,0 +1,15 @@
+BEGIN:VCALENDAR
+PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
+VERSION:1.0
+BEGIN:VEVENT
+DTSTART:20000322T080000Z
+DTEND:20000322T083000Z
+LOCATION;ENCODING=QUOTED-PRINTABLE:Somewhere
+UID:040000008200E00074C5B7101A82E0080000000090BB8A23ED93BF010000000000000000100
+ 00000AB7E96B01EFFD31192E70060084F0B48
+DESCRIPTION;ENCODING=QUOTED-PRINTABLE:=09You will be busy doing something, =
+somewhere at some point.=0D=0A
+SUMMARY;ENCODING=QUOTED-PRINTABLE:My big appointment
+PRIORITY:3
+END:VEVENT
+END:VCALENDAR
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/inc/testunidatamodelvcalplugin.h Fri Jul 09 14:46:10 2010 +0530
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ */
+
+#ifndef TEST_UNI_DATA_MODEL_VCAL_PLUGIN_H
+#define TEST_UNI_DATA_MODEL_VCAL_PLUGIN_H
+
+#ifdef BUILD_TEST_DLL
+#define TEST_EXPORT Q_DECL_EXPORT
+#else
+#define TEST_EXPORT Q_DECL_IMPORT
+#endif
+
+#include <QObject>
+#include <txtetext.h>
+#include <txtrich.h>
+#include <mtclreg.h>
+#include <mtclbase.h>
+#include <msvids.h>
+#include <smsclnt.h>
+#include <smuthdr.h>
+#include <QDateTime>
+#include <e32math.h>
+
+
+#include <bsp.h>
+
+const TInt32 KUidBIOVCalenderMsg = {0x10005533}; // VCalender diary
+
+class UniDataModelPluginInterface;
+class UniDataModelLoader;
+class MsgObserver;
+class S60QConversions;
+class ConvergedMessage;
+class CBIODatabase;
+class ConvergedMessgageAddress;
+
+typedef enum
+ { // GENERATE A MESSAGE USING....
+ ENoMessage, // .. error cases
+ EBioIapSettingsMessage, // .. IAP grammar, includes Internet settings
+ // Email settings, and logon scripts,
+ EBioEnpMessage, // .. Email Notification grammar.
+ EBioRingTonesMessage, // .. Ringing Tones binary data
+ EBioOpLogoMessage, // .. Logo for Operator service
+ EBioCompBusCardMessage, // .. Compact Business Card data
+ EBiovCardMessage, // .. virtual business card data
+ EBiovCalenderMessage, // .. vCalender data
+ EBioWAPSettingsMessage, // .. wap settings
+ EBioWPRVSettingsMessage // .. wprv settings
+ } TBIOMessageType;
+
+
+class TEST_EXPORT TestUniDataModelVCalPlugin : public QObject
+{
+Q_OBJECT
+
+private slots:
+ //called by frame work.
+ void initTestCase();//called before the first testfunction is executed.
+ void init();//called before each testfunction is executed.
+
+ //test cases.
+ void testInBoxVCalMessage();
+ void testDraftsVCalMessage();
+ void testUnusedAPIs();
+ void cleanup();//called after every testfunction.
+ void cleanupTestCase();//called after the last testfunction was executed.
+
+private:
+
+ TMsvId CreateBIOEntryL(TDesC& aText, TBIOMessageType aMessageType);
+ void CreateBioEntryClientSideL(TMsvEntry& aEntry, CRichText& aBody);
+ HBufC* ReadFromFileL(const TDesC& aFile);
+ void SetSessionPath(const TDesC& aSessionPath);
+ TMsvId CreateBIOEntryFromFileL(const TDesC& aFilename,
+ TBIOMessageType aMessageType);
+ TBIOMessageType SetMessageType(const TDesC& aFileName);
+ CMsvEntrySelection* GenerateMessagesL();
+ TMsvId SetBIOServiceIdL();
+ void SetForMtmTypeL(TMsvEntry& aEntry, TBIOMessageType aType);
+
+private:
+
+ UniDataModelPluginInterface* pluginInterface;
+ MsgObserver* iObserver;
+ CMsvSession* iMSession;
+ CClientMtmRegistry* iMtmReg;
+ TMsvId messageId;
+ UniDataModelLoader* pluginLoader;
+ QDateTime retTimeStamp;
+ RFs iFs;
+ CDir* iDir;
+ TInt iFilesProcessed;
+ CMsvEntry* iMsvEntry;
+ CBIODatabase* iBioDb;
+ TMsvId newEntryId;
+ HBufC* tempNumber;
+ TBufC<KMaxFileName> currentFile;
+ TBool inbox;
+ TBool drafts;
+};
+
+class MsgObserver : public MMsvSessionObserver
+{
+public:
+ void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2,
+ TAny* aArg3);
+};
+
+#endif //TEST_UNI_DATA_MODEL_VCAL_PLUGIN_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/inc/testunidatamodelvcalplugin.ini Fri Jul 09 14:46:10 2010 +0530
@@ -0,0 +1,8 @@
+//this file is used to provide predefined set of input data.
+
+//eg.
+const char TEST_MSG_RECIEPIENT[] = "Shweta Singh<77>";
+const char TEST_MSG_FROM1[] = "88";
+const char TEST_MSG_ALIAS1[] = "Shweta Singh";
+const char TEST_MSG_FROM2[] = "999";
+const char TEST_MSG_SUBJECT[] = "Hi";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/src/testunidatamodelvcalplugin.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -0,0 +1,682 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ */
+#include <QtTest/QtTest>
+#include <QtDebug>
+#include <QTimer>
+#include <QSignalSpy>
+#include <xqconversions.h>
+#include <bsp.h>
+#include <biodb.h>
+#include <biouids.h>
+#include <biocmtm.h>
+#include "convergedmessageaddress.h"
+
+#include "testunidatamodelvcalplugin.h"
+#include <unidatamodelloader.h>
+#include "testunidatamodelvcalplugin.ini"
+#include "unidatamodelplugininterface.h"
+#include <convergedmessage.h>
+
+const TInt KTelephoneNumberMaxLength = 32;
+_LIT(KBIOTxtFilePath, "C:\\test\\");
+_LIT(KBIOvCalenderPrefix, "vcal*");
+// vCalender
+_LIT(KUnixEpoch, "19700000:000000.000000");
+#define KBioUidValue 0x10001262
+
+const TUid KBioUidValueUid =
+{KBioUidValue};
+
+
+
+
+//out put directory for test results.
+QString OUTPUTDIRECTORY = "c:/logs/TestUniDataModelVCalPlugin";
+//o/p directory for data to be written on temp file.
+QString TEMPDIR = "c:/logs/TestUniDataModelVCalPlugin/testdata";
+//test result O/P file name.
+QString RESULTFILE = "c:/logs/TestUniDataModelVCalPlugin/result_%1.txt";
+// folder named UID3 of TestUniDataModelVCalPlugin inside private folder.
+const QString PRIVATE_DIR("C:/private/Ed034a47");
+
+//factory method to create objects.
+QObject* getObject(QString className)
+{
+ if(className == "TestUniDataModelVCalPlugin" )
+ {
+ return new TestUniDataModelVCalPlugin;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+//creating o/p directory.
+void createOutPutDirectory()
+ {
+ QDir dir;
+ //o/p dir
+ dir.mkdir(OUTPUTDIRECTORY);
+ //tmp dir
+ dir.mkdir(TEMPDIR);
+ // dir inside private folder.
+ dir.mkdir(PRIVATE_DIR);
+ }
+
+//main entry point
+int main(int argc, char *argv[])
+ {
+ int ret = -1;
+ QCoreApplication app(argc, argv);
+
+ //creating output directory.
+ createOutPutDirectory();
+
+ //the configuration file.
+ QFile data("c:/TestUniDataModelVCalPlugin.cfg");
+
+ if (data.open(QFile::ReadOnly))
+ {
+ QTextStream in(&data);
+ while(!in.atEnd())
+ {
+ QStringList args;
+ QString appName = argv[0];
+ args << appName;
+
+ QString option = "-o";
+ args << option;
+
+ QString outFile = RESULTFILE;
+ QString name = in.readLine();
+ outFile = outFile.arg(name);
+ args << outFile;
+
+ QObject* tc = getObject(name);
+
+ if(tc)
+ {
+
+ ret = QTest::qExec(tc, args);
+ delete tc;
+ }
+ }
+ }
+ data.close();
+ return ret;
+ }
+
+
+
+
+
+//---------------------------------------------------------------
+// TestUniDataModelVCalPlugin::init
+//---------------------------------------------------------------
+
+
+void TestUniDataModelVCalPlugin::initTestCase()
+{
+ iObserver = new (ELeave) MsgObserver();
+
+ // Create a new messaging server session..
+ iMSession = CMsvSession::OpenSyncL(*iObserver);
+
+ iMsvEntry = iMSession->GetEntryL(KMsvRootIndexEntryId);
+ newEntryId = 0;
+ pluginLoader = new UniDataModelLoader();
+
+ retTimeStamp = QDateTime::currentDateTime();
+ int err = iFs.Connect();
+ QVERIFY(err == 0);
+ iBioDb = CBIODatabase::NewL(iFs);
+ iFs.SetSessionPath(_L("c:\\"));
+ inbox = EFalse;
+ drafts = EFalse;
+}
+void TestUniDataModelVCalPlugin::cleanupTestCase()
+{
+ delete iMsvEntry;
+ iMsvEntry = NULL;
+ delete iObserver;
+ iObserver = NULL;
+ delete iMSession;
+ iMSession = NULL;
+ delete pluginLoader;
+}
+
+void TestUniDataModelVCalPlugin::init()
+{
+
+}
+
+//---------------------------------------------------------------
+// TestUniDataModelVCalPlugin::cleanup
+//---------------------------------------------------------------
+void TestUniDataModelVCalPlugin::cleanup()
+{
+
+
+}
+
+void TestUniDataModelVCalPlugin::testInBoxVCalMessage()
+{
+ inbox = ETrue;
+ GenerateMessagesL();
+
+ pluginInterface = pluginLoader->getDataModelPlugin(ConvergedMessage::BioMsg);
+ pluginInterface->setMessageId(newEntryId);
+
+ int count = pluginInterface->attachmentCount();
+ QVERIFY(count == 1);
+
+ UniMessageInfoList attachmentlist = pluginInterface->attachmentList();
+ QVERIFY(!attachmentlist.isEmpty());
+
+ UniMessageInfo* att = attachmentlist.at(0);
+ QString path = att->path();
+
+ QString recepient(TEST_MSG_FROM1);
+ QString fromaddress;
+ pluginInterface->fromAddress(fromaddress);
+ QVERIFY(recepient == fromaddress);
+
+ QString body;
+ pluginInterface->body(body);
+ QVERIFY(!body.isEmpty());
+
+ // Compare input message , with the read message
+ RFile origFile;
+ int op = origFile.Open(iFs, currentFile, EFileRead);
+ QVERIFY(op == 0);
+
+ TBuf8<1000> readBuf;
+ HBufC* readBuf16 = HBufC::NewL(2000);
+
+ origFile.Read(readBuf);
+ readBuf16->Des().Copy(readBuf);
+
+ QString orig = XQConversions::s60DescToQString(*readBuf16);
+ origFile.Close();
+
+ HBufC* filepath = XQConversions::qStringToS60Desc(path);
+
+ int size = pluginInterface->messageSize();
+
+ MsgPriority priority = pluginInterface->messagePriority();
+ // Normal priority
+ qDebug() << "prority" << priority;
+ QVERIFY(priority == 1);
+
+ QVERIFY(pluginInterface->timeStamp() == retTimeStamp);
+
+ ConvergedMessageAddressList recipientList;
+ pluginInterface->toRecipientList(recipientList);
+ QVERIFY(recipientList.count() == 0);
+ qDebug() << "recipientList.count" << recipientList.count();
+
+ if (inbox)
+ {
+ iMsvEntry->SetEntryL(KMsvGlobalInBoxIndexEntryId);
+ qDebug() << "SetEntry" ;
+ }
+
+
+}
+
+void TestUniDataModelVCalPlugin::testDraftsVCalMessage()
+{
+ drafts = ETrue;
+ GenerateMessagesL();
+
+ pluginInterface = pluginLoader->getDataModelPlugin(ConvergedMessage::BioMsg);
+ pluginInterface->setMessageId(newEntryId);
+
+ int count = pluginInterface->attachmentCount();
+ QVERIFY(count == 1);
+
+ UniMessageInfoList attachmentlist = pluginInterface->attachmentList();
+ QVERIFY(!attachmentlist.isEmpty());
+
+ UniMessageInfo* att = attachmentlist.at(0);
+ QString path = att->path();
+
+ QString fromaddress;
+ pluginInterface->fromAddress(fromaddress);
+ QVERIFY(!fromaddress.isEmpty()); //added ! shweta
+
+ QString body;
+ pluginInterface->body(body);
+ QVERIFY(!body.isEmpty());
+
+ // Compare input message , with the read message
+ RFile origFile;
+ int op = origFile.Open(iFs, currentFile, EFileRead);
+ QVERIFY(op == 0);
+
+ TBuf8<1000> readBuf;
+ HBufC* readBuf16 = HBufC::NewL(2000);
+
+ origFile.Read(readBuf);
+ readBuf16->Des().Copy(readBuf);
+
+ QString orig = XQConversions::s60DescToQString(*readBuf16);
+ origFile.Close();
+
+ int size = pluginInterface->messageSize();
+
+ MsgPriority priority = pluginInterface->messagePriority();
+ // Normal priority
+ qDebug() << "prority" << priority;
+ QVERIFY(priority == 1);
+
+ QVERIFY(pluginInterface->timeStamp() == retTimeStamp);
+
+ QString recepient(TEST_MSG_FROM1);
+ ConvergedMessageAddressList recipientList;
+ ConvergedMessageAddress alias(recepient);
+
+ recipientList.append(&alias);
+ pluginInterface->toRecipientList(recipientList);
+
+ QVERIFY( recipientList.count() != 0 );
+ qDebug() << "recipientList.count()"<<recipientList.count() ;
+
+ const QString& copy = recipientList[0]->address();
+ qDebug() << "copy = "<<recipientList[0]->address();
+ QVERIFY(recepient == copy);
+ qDebug() << "Receipient Verified";
+
+ if (drafts)
+ {
+ iMsvEntry->SetEntryL(KMsvDraftEntryId);
+ qDebug() << "SetEntry" ;
+ }
+ }
+
+
+
+void TestUniDataModelVCalPlugin::testUnusedAPIs()
+{
+ pluginInterface = pluginLoader->getDataModelPlugin(ConvergedMessage::BioMsg);
+
+ QVERIFY(pluginInterface->objectCount() == 0);
+
+ UniMessageInfoList objectlist = pluginInterface->objectList();
+ QVERIFY(objectlist.isEmpty());
+
+ QVERIFY(pluginInterface->slideCount() == 0);
+
+ UniMessageInfoList slidelist = pluginInterface->slideContent(0);
+ QVERIFY(slidelist.isEmpty());
+
+ QVERIFY(pluginInterface->hasAttachment() == true );
+
+ ConvergedMessageAddressList recipientList;
+
+ pluginInterface->ccRecipientList(recipientList);
+ QVERIFY(recipientList.count() == 0);
+
+ pluginInterface->bccRecipientList(recipientList);
+ QVERIFY(recipientList.count() == 0);
+}
+
+CMsvEntrySelection* TestUniDataModelVCalPlugin::GenerateMessagesL()
+{
+ HBufC* aFileDirectory = KBIOTxtFilePath().AllocL();
+ TMsvId messageId;
+ TBIOMessageType currentMsgType;
+
+ CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection();
+ CleanupStack::PushL(selection);
+
+ TInt err = iFs.GetDir(aFileDirectory->Des(),
+ KEntryAttMatchMask,
+ ESortByName,
+ iDir);
+ if (err == KErrPathNotFound)
+ {
+ TInt makeDirErr = iFs.MkDirAll(aFileDirectory->Des());
+ makeDirErr == KErrNone ? User::Leave(KErrNotFound)
+ : User::Leave(makeDirErr);
+ }
+ else if (err != KErrNone)
+ {
+ User::Leave(err);
+ }
+
+ // Set the session path for the RFs
+ SetSessionPath(aFileDirectory->Des());
+ if (iDir)
+ {
+ delete iDir;
+ iDir = NULL;
+ }
+
+ User::LeaveIfError(iFs.GetDir(_L("*.txt"), KEntryAttNormal, ESortByName, iDir));
+ TInt count = iDir->Count();
+ if (count == 0)
+ {
+ User::Leave(KErrNotFound); // No files to process
+ }
+
+ TBuf<60> outputBuf;
+
+ for (TInt loop = 0; loop < count; loop++)
+ {
+ TEntry as = (*iDir)[0];
+ currentFile = (as.iName);
+ // Not processed all the messages - so keep the current state
+ iFilesProcessed++; // Here because need to update the counter promptly
+ currentMsgType = SetMessageType(currentFile);
+ if (currentMsgType != ENoMessage) // skip any dodgy filenames
+ {
+ messageId = CreateBIOEntryFromFileL(currentFile, currentMsgType);
+ selection->AppendL(messageId);
+ TPtrC tempPtr = (currentFile.Des());
+
+ }
+ }
+ CleanupStack::Pop(); // selection
+
+ return selection;
+}
+
+TBIOMessageType TestUniDataModelVCalPlugin::SetMessageType(
+ const TDesC& aFileName)
+{
+
+ if (aFileName.MatchF(KBIOvCalenderPrefix) == 0)
+ {
+ return EBiovCalenderMessage;
+ }
+
+ return ENoMessage;
+}
+
+TMsvId TestUniDataModelVCalPlugin::CreateBIOEntryFromFileL(
+ const TDesC& aFilename,
+ TBIOMessageType aMessageType)
+{
+ //First use the filename to get the message body,
+ // then convert '\n' to the paragraph delimiters used in proper SMS
+ HBufC* tempBuffer;
+
+ tempBuffer = ReadFromFileL(aFilename);
+ CleanupStack::PushL(tempBuffer);
+
+ newEntryId = CreateBIOEntryL(*tempBuffer, aMessageType);
+
+ // Finished with our local descriptors - free up some memory
+ CleanupStack::PopAndDestroy();
+
+ return newEntryId;
+}
+
+void TestUniDataModelVCalPlugin::SetSessionPath(const TDesC& aSessionPath)
+{
+ iFs.SetSessionPath(aSessionPath);
+}
+
+HBufC* TestUniDataModelVCalPlugin::ReadFromFileL(const TDesC& aFile)
+{
+ RFile file;
+ TBuf8<1024> lineBuffer;
+ TInt err = KErrNone;
+
+ err = file.Open(iFs, aFile, EFileStreamText | EFileRead | EFileShareAny);
+
+ if (err != KErrNone) // Didn't find the file, so leave - should only get valid filenames!
+ {
+ User::Leave(KErrNotFound);
+ }
+
+ HBufC* bioBuf = HBufC::NewLC(65535); // Create a new descriptor on the heap.
+ HBufC* copyBuffer = HBufC::NewLC(1024);
+
+ do // Read in the text from file, and also check if there is a name field:
+ {
+ err = file.Read(lineBuffer);// Read upto 256 chars, '\n' and all...
+ //err = ReadLineL(file,lineBuffer);
+ if (err == KErrNone) // Made a valid read,
+ if (lineBuffer.Length() == 0) // but read 0 chars
+ err = KErrEof; // so set err value to end processing
+
+ if (err == KErrNone)
+ {
+ copyBuffer->Des().Copy(lineBuffer);// Copy, and overwrite existing text
+ if ( (bioBuf->Length() + copyBuffer->Length())
+ > bioBuf->Des().MaxLength())
+ {
+ bioBuf = bioBuf->ReAllocL(bioBuf->Length()
+ + copyBuffer->Length());
+ }
+ bioBuf->Des().Append(*copyBuffer);
+ //bioBuf->Des().Append(_L("\n"));
+ }
+ }while (err != KErrEof);
+
+ CleanupStack::PopAndDestroy(); // Destroy the copyBuffer.
+ CleanupStack::Pop();// Remove the bioBuf.
+
+ file.Close();
+ return bioBuf;
+}
+
+TMsvId TestUniDataModelVCalPlugin::CreateBIOEntryL(TDesC& aText,
+ TBIOMessageType aMessageType)
+{
+ // Ensure that we have a valid service ID to work with:
+ TMsvId iBioServiceId;
+
+ iBioServiceId = SetBIOServiceIdL();
+
+ HBufC* localBuffer = aText.AllocL();
+ CleanupStack::PushL(localBuffer);
+
+ TPtr messDes = localBuffer->Des();
+
+ if (aMessageType != EBiovCardMessage && aMessageType
+ != EBiovCalenderMessage)
+ {
+ // convert \r\n to \n since this is what is expected from SMS when not vCard data
+ for (TInt i = 0; i < messDes.Length(); i++)
+ {
+ if (messDes[i] == (TText) '\r' && i < messDes.Length() - 1
+ && messDes[i + 1] == (TText) '\n')
+ messDes.Delete(i, 1);
+ }
+ }
+
+ // Create and fill a CRichText object for the jobbie:
+ CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL();
+ CleanupStack::PushL(paraFormatLayer);
+ CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL();
+ CleanupStack::PushL(charFormatLayer);
+ CRichText* richText = CRichText::NewL(paraFormatLayer, charFormatLayer);
+ CleanupStack::PushL(richText);
+
+ TInt pos = richText->DocumentLength();
+ richText->InsertL(pos, messDes);
+
+ TMsvEntry newBioEntry;
+ newBioEntry.SetNew(ETrue);
+ newBioEntry.SetComplete(EFalse);
+ newBioEntry.SetUnread(ETrue);
+ newBioEntry.SetVisible(ETrue);
+ newBioEntry.SetReadOnly(EFalse);
+ newBioEntry.SetFailed(EFalse);
+ newBioEntry.SetOperation(EFalse);
+ newBioEntry.SetMultipleRecipients(EFalse);
+ newBioEntry.SetAttachment(EFalse);
+ newBioEntry.iMtm = KUidBIOMessageTypeMtm;
+ newBioEntry.iType = KUidMsvMessageEntry;
+ newBioEntry.iServiceId = iBioServiceId;
+ TTime now;
+ now.UniversalTime();
+ newBioEntry.iDate = now;
+
+ TTime unixEpoch(KUnixEpoch);
+ TTimeIntervalSeconds seconds;
+ TTime timeStamp = newBioEntry.iDate;
+ timeStamp.SecondsFrom(unixEpoch, seconds);
+ retTimeStamp.setTime_t(seconds.Int());
+
+ newBioEntry.iDescription.Set(richText->Read(0, richText->DocumentLength()));
+ TBufC<KTelephoneNumberMaxLength> telNumber;
+
+ QString recepient(TEST_MSG_FROM1);
+ tempNumber = XQConversions::qStringToS60Desc(recepient);
+
+ telNumber = tempNumber->Des();
+ newBioEntry.iDetails.Set(telNumber);
+
+ SetForMtmTypeL(newBioEntry, aMessageType);
+
+ newBioEntry.iSize = richText->DocumentLength();// msgSize;
+ CreateBioEntryClientSideL(newBioEntry, *richText);
+
+ CleanupStack::PopAndDestroy(4); // richText, charFormatLayer, paraFormatLayer, localBuffer
+ return newBioEntry.Id();
+}
+
+void TestUniDataModelVCalPlugin::CreateBioEntryClientSideL(TMsvEntry& aEntry,
+ CRichText& aBody)
+{
+ if (inbox)
+ {
+ iMsvEntry->SetEntryL(KMsvGlobalInBoxIndexEntryId);
+ }
+ else if (drafts)
+ {
+ iMsvEntry->SetEntryL(KMsvDraftEntryId);
+ }
+ // Get the global inbox.
+
+ iMsvEntry->CreateL(aEntry);
+ iMsvEntry->SetEntryL(aEntry.Id());
+
+ // Save all the changes
+ CMsvStore* store = iMsvEntry->EditStoreL();
+ CleanupStack::PushL(store);
+
+ if (store->HasBodyTextL())
+ {
+ store->DeleteBodyTextL();
+ }
+
+ CPlainText* pText = CPlainText::NewL();
+ CleanupStack::PushL(pText);
+
+ if (inbox)
+ {
+ CSmsHeader* smsHeader = CSmsHeader::NewL(CSmsPDU::ESmsDeliver, *pText);
+ CleanupStack::PushL(smsHeader);
+ smsHeader->SetFromAddressL(*tempNumber);
+ smsHeader->StoreL(*store);
+
+ }
+ else if (drafts)
+ {
+
+ QString recepient(TEST_MSG_FROM1);
+ QString recepient2(TEST_MSG_FROM2);
+ QString alias(TEST_MSG_ALIAS1);
+
+ HBufC* addr = XQConversions::qStringToS60Desc(recepient);
+ HBufC* addr2 = XQConversions::qStringToS60Desc(recepient2);
+ HBufC* alias1 = XQConversions::qStringToS60Desc(alias);
+
+ CSmsHeader* smsHeader = CSmsHeader::NewL(CSmsPDU::ESmsSubmit, *pText);
+ CleanupStack::PushL(smsHeader);
+
+ CSmsNumber* number1 = CSmsNumber::NewL(); // create the instance
+ CleanupStack::PushL(number1);
+
+ number1->SetNameL(TPtrC());
+ number1->SetAddressL(*addr);
+ smsHeader->Recipients().AppendL(number1);
+ CleanupStack::Pop(number1);
+
+ CSmsNumber* number2 = CSmsNumber::NewL();
+ CleanupStack::PushL(number2);
+
+ number2->SetNameL(*alias1);
+ number2->SetAddressL(*addr2);
+
+ smsHeader->Recipients().AppendL(number2);
+ CleanupStack::Pop(number2);
+ smsHeader->StoreL(*store);
+
+ }
+
+ store->StoreBodyTextL(aBody);
+ store->CommitL();
+
+ CleanupStack::PopAndDestroy(3); //store - close the store
+
+ aEntry.SetComplete(ETrue);
+ // Update the entry
+ iMsvEntry->ChangeL(aEntry);
+ iMsvEntry->SetEntryL(KMsvRootIndexEntryId);
+}
+
+TMsvId TestUniDataModelVCalPlugin::SetBIOServiceIdL()
+{
+ // Haven't found an entry so create a BIO Message service:
+ TMsvEntry bioServiceEntry;
+ bioServiceEntry.iMtm = KUidBIOMessageTypeMtm;
+ bioServiceEntry.iType = KUidMsvServiceEntry;
+ bioServiceEntry.SetVisible(EFalse);
+ bioServiceEntry.iDate.UniversalTime();
+ bioServiceEntry.iDescription.Set(_L("BIO Message Service ")); // Is there such a thing?
+ bioServiceEntry.iDetails.Set(_L("BIO Message Service"));
+
+ TMsvId newBIOServiceId;
+
+ iMsvEntry->SetEntryL(KMsvRootIndexEntryId);
+ iMsvEntry->CreateL(bioServiceEntry); // Needs to be a child of the root!
+ newBIOServiceId = bioServiceEntry.Id();
+
+ return newBIOServiceId;
+}
+
+void TestUniDataModelVCalPlugin::SetForMtmTypeL(TMsvEntry& aEntry,
+ TBIOMessageType aType)
+{
+ TInt index;
+
+ aEntry.iBioType = KUidBIOVCalenderMsg;
+
+ // Set other TMsvEntry fields if we have a BIO message type
+ if (aType != ENoMessage)
+ {
+ aEntry.SetMtmData2(0);
+ aEntry.SetMtmData3(0);
+ }
+
+ // set description from BIF file
+ iBioDb->GetBioIndexWithMsgIDL(TUid::Uid(aEntry.iBioType), index);
+ if (index == KErrNotFound)
+ User::Leave(KErrNotFound);
+ aEntry.iDescription.Set(iBioDb->BifReader(index).Description());
+}
+
+void MsgObserver::HandleSessionEventL(TMsvSessionEvent /*aEvent*/,
+ TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
+{
+}
Binary file messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/testunidatamodelvcalplugin/BioMtm.rsc has changed
--- a/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/testunidatamodelvcalplugin/testunidatamodelvcalplugin.cpp Tue Jul 06 22:50:16 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,618 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:
- */
-#include <QtTest/QtTest>
-#include <QtDebug>
-#include <QTimer>
-#include <QSignalSpy>
-#include <xqconversions.h>
-#include <bsp.h>
-#include <biodb.h>
-#include <biouids.h>
-#include <biocmtm.h>
-
-#include "serviceinfo.h"
-#include "testunidatamodelvcalplugin.h"
-#include "unidatamodelloader.h"
-#include "testunidatamodelvcalplugin.ini"
-#include "unidatamodelplugininterface.h"
-#include "convergedmessage.h"
-
-const TInt KTelephoneNumberMaxLength = 32;
-_LIT(KBIOTxtFilePath, "C:\\test\\");
-_LIT(KBIOvCalenderPrefix, "vcal*");
-// vCalender
-_LIT(KUnixEpoch, "19700000:000000.000000");
-#define KBioUidValue 0x10001262
-
-const TUid KBioUidValueUid =
-{KBioUidValue};
-
-//---------------------------------------------------------------
-// TestUniDataModelVCalPlugin::init
-//---------------------------------------------------------------
-
-
-void TestUniDataModelVCalPlugin::initTestCase()
-{
-
-}
-void TestUniDataModelVCalPlugin::cleanupTestCase()
-{
-
-}
-
-void TestUniDataModelVCalPlugin::init()
-{
- iObserver = new (ELeave) MsgObserver();
-
- // Create a new messaging server session..
- iMSession = CMsvSession::OpenSyncL(*iObserver);
-
- iMsvEntry = iMSession->GetEntryL(KMsvRootIndexEntryId);
- newEntryId = 0;
- pluginLoader = new UniDataModelLoader();
-
- retTimeStamp = QDateTime::currentDateTime();
- int err = iFs.Connect();
- QVERIFY(err == 0);
- iBioDb = CBIODatabase::NewL(iFs);
- iFs.SetSessionPath(_L("c:\\"));
- inbox = EFalse;
- drafts = EFalse;
-}
-
-//---------------------------------------------------------------
-// TestUniDataModelVCalPlugin::cleanup
-//---------------------------------------------------------------
-void TestUniDataModelVCalPlugin::cleanup()
-{
- if (newEntryId > 0)
- iMsvEntry->DeleteL(newEntryId);
- delete iMsvEntry;
- iMsvEntry = NULL;
- delete iObserver;
- iObserver = NULL;
- delete iMSession;
- iMSession = NULL;
- delete pluginLoader;
-
-}
-
-void TestUniDataModelVCalPlugin::testInBoxVCalMessage()
-{
- inbox = ETrue;
- GenerateMessagesL();
-
- pluginInterface = pluginLoader->getDataModelPlugin("bio:vcal");
- pluginInterface->setMessageId(newEntryId);
-
- int count = pluginInterface->attachmentCount();
- QVERIFY(count == 1);
-
- UniMessageInfoList attachmentlist = pluginInterface->attachmentList();
- QVERIFY(!attachmentlist.isEmpty());
-
- UniMessageInfo* att = attachmentlist.at(0);
- QString path = att->path();
-
- QString recepient(TEST_MSG_FROM1);
- QString fromaddress;
- pluginInterface->fromAddress(fromaddress);
- QVERIFY(recepient == fromaddress);
-
- QString body;
- pluginInterface->body(body);
- QVERIFY(!body.isEmpty());
-
- // Compare input message , with the read message
- RFile origFile;
- int op = origFile.Open(iFs, currentFile, EFileRead);
- QVERIFY(op == 0);
-
- TBuf8<1000> readBuf;
- HBufC* readBuf16 = HBufC::NewL(2000);
-
- origFile.Read(readBuf);
- readBuf16->Des().Copy(readBuf);
-
- QString orig = XQConversions::s60DescToQString(*readBuf16);
- origFile.Close();
-
- HBufC* filepath = XQConversions::qStringToS60Desc(path);
-
- RFile file;
- op = file.Open(iFs, *filepath, EFileRead);
- QVERIFY(op == 0);
-
- file.Read(readBuf);
- readBuf16->Des().Copy(readBuf);
- QString bod = XQConversions::s60DescToQString(*readBuf16);
-
- delete readBuf16;
- file.Close();
- // compare Input body and output body
- QVERIFY(bod == orig );
-
- int size = pluginInterface->messageSize();
-
- MsgPriority priority = pluginInterface->messagePriority();
- // Normal priority
- qDebug() << "prority" << priority;
- QVERIFY(priority == 1);
-
- QVERIFY(pluginInterface->timeStamp() == retTimeStamp);
-
- ConvergedMessageAddressList recipientList;
- pluginInterface->toRecipientList(recipientList);
- QVERIFY(recipientList.count() == 0);
- iMsvEntry->SetEntryL(KMsvGlobalInBoxIndexEntryId);
-}
-
-void TestUniDataModelVCalPlugin::testDraftsVCalMessage()
-{
- drafts = ETrue;
- GenerateMessagesL();
-
- pluginInterface = pluginLoader->getDataModelPlugin("bio:vcal");
- pluginInterface->setMessageId(newEntryId);
-
- int count = pluginInterface->attachmentCount();
- QVERIFY(count == 1);
-
- UniMessageInfoList attachmentlist = pluginInterface->attachmentList();
- QVERIFY(!attachmentlist.isEmpty());
-
- UniMessageInfo* att = attachmentlist.at(0);
- QString path = att->path();
-
- QString fromaddress;
- pluginInterface->fromAddress(fromaddress);
- QVERIFY(fromaddress.isEmpty());
-
- QString body;
- pluginInterface->body(body);
- QVERIFY(!body.isEmpty());
-
- // Compare input message , with the read message
- RFile origFile;
- int op = origFile.Open(iFs, currentFile, EFileRead);
- QVERIFY(op == 0);
-
- TBuf8<1000> readBuf;
- HBufC* readBuf16 = HBufC::NewL(2000);
-
- origFile.Read(readBuf);
- readBuf16->Des().Copy(readBuf);
-
- QString orig = XQConversions::s60DescToQString(*readBuf16);
- origFile.Close();
-
- HBufC* filepath = XQConversions::qStringToS60Desc(path);
-
- RFile file;
- op = file.Open(iFs, *filepath, EFileRead);
- QVERIFY(op == 0);
-
- file.Read(readBuf);
-
- readBuf16->Des().Copy(readBuf);
-
- QString bod = XQConversions::s60DescToQString(*readBuf16);
-
- delete readBuf16;
- file.Close();
- // compare Input body and output body
- QVERIFY(bod == orig );
-
- int size = pluginInterface->messageSize();
-
- MsgPriority priority = pluginInterface->messagePriority();
- // Normal priority
- qDebug() << "prority" << priority;
- QVERIFY(priority == 1);
-
- QVERIFY(pluginInterface->timeStamp() == retTimeStamp);
-
- ConvergedMessageAddressList recipientList;
- pluginInterface->toRecipientList(recipientList);
- QString recepient(TEST_MSG_FROM1);
- QString recepient2(TEST_MSG_FROM2);
- QString origalias(TEST_MSG_ALIAS1);
-
- QVERIFY(recipientList.count() == 2);
-
- QVERIFY(recepient == recipientList[0]->address());
-
- QVERIFY( recipientList[0]->alias().isEmpty());
-
- const QString& as = recipientList[1]->address();
- const QString& as1 = recipientList[1]->alias();
- QVERIFY(recepient2 == as);
-
- QVERIFY(origalias == as1);
- iMsvEntry->SetEntryL(KMsvDraftEntryId);
-}
-
-
-
-void TestUniDataModelVCalPlugin::testUnusedAPIs()
-{
- pluginInterface = pluginLoader->getDataModelPlugin(ConvergedMessage::BioMsg);
-
- QVERIFY(pluginInterface->objectCount() == 0);
-
- UniMessageInfoList objectlist = pluginInterface->objectList();
- QVERIFY(objectlist.isEmpty());
-
- QVERIFY(pluginInterface->slideCount() == 0);
-
- UniMessageInfoList slidelist = pluginInterface->slideContent(0);
- QVERIFY(slidelist.isEmpty());
-
- QVERIFY(pluginInterface->hasAttachment() == true );
-
- ConvergedMessageAddressList recipientList;
-
- pluginInterface->ccRecipientList(recipientList);
- QVERIFY(recipientList.count() == 0);
-
- pluginInterface->bccRecipientList(recipientList);
- QVERIFY(recipientList.count() == 0);
-}
-
-CMsvEntrySelection* TestUniDataModelVCalPlugin::GenerateMessagesL()
-{
- HBufC* aFileDirectory = KBIOTxtFilePath().AllocL();
- TMsvId messageId;
- TBIOMessageType currentMsgType;
-
- CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection();
- CleanupStack::PushL(selection);
-
- TInt err = iFs.GetDir(aFileDirectory->Des(),
- KEntryAttMatchMask,
- ESortByName,
- iDir);
- if (err == KErrPathNotFound)
- {
- TInt makeDirErr = iFs.MkDirAll(aFileDirectory->Des());
- makeDirErr == KErrNone ? User::Leave(KErrNotFound)
- : User::Leave(makeDirErr);
- }
- else if (err != KErrNone)
- {
- User::Leave(err);
- }
-
- // Set the session path for the RFs
- SetSessionPath(aFileDirectory->Des());
- if (iDir)
- {
- delete iDir;
- iDir = NULL;
- }
-
- User::LeaveIfError(iFs.GetDir(_L("*.txt"), KEntryAttNormal, ESortByName, iDir));
- TInt count = iDir->Count();
- if (count == 0)
- {
- User::Leave(KErrNotFound); // No files to process
- }
-
- TBuf<60> outputBuf;
-
- for (TInt loop = 0; loop < count; loop++)
- {
- TEntry as = (*iDir)[0];
- currentFile = (as.iName);
- // Not processed all the messages - so keep the current state
- iFilesProcessed++; // Here because need to update the counter promptly
- currentMsgType = SetMessageType(currentFile);
- if (currentMsgType != ENoMessage) // skip any dodgy filenames
- {
- messageId = CreateBIOEntryFromFileL(currentFile, currentMsgType);
- selection->AppendL(messageId);
- TPtrC tempPtr = (currentFile.Des());
-
- }
- }
- CleanupStack::Pop(); // selection
- return selection;
-}
-
-TBIOMessageType TestUniDataModelVCalPlugin::SetMessageType(
- const TDesC& aFileName)
-{
-
- if (aFileName.MatchF(KBIOvCalenderPrefix) == 0)
- {
- return EBiovCalenderMessage;
- }
-
- return ENoMessage;
-}
-
-TMsvId TestUniDataModelVCalPlugin::CreateBIOEntryFromFileL(
- const TDesC& aFilename,
- TBIOMessageType aMessageType)
-{
- //First use the filename to get the message body,
- // then convert '\n' to the paragraph delimiters used in proper SMS
- HBufC* tempBuffer;
-
- tempBuffer = ReadFromFileL(aFilename);
- CleanupStack::PushL(tempBuffer);
-
- newEntryId = CreateBIOEntryL(*tempBuffer, aMessageType);
-
- // Finished with our local descriptors - free up some memory
- CleanupStack::PopAndDestroy();
- return newEntryId;
-}
-
-void TestUniDataModelVCalPlugin::SetSessionPath(const TDesC& aSessionPath)
-{
- iFs.SetSessionPath(aSessionPath);
-}
-
-HBufC* TestUniDataModelVCalPlugin::ReadFromFileL(const TDesC& aFile)
-{
- RFile file;
- TBuf8<1024> lineBuffer;
- TInt err = KErrNone;
-
- err = file.Open(iFs, aFile, EFileStreamText | EFileRead | EFileShareAny);
-
- if (err != KErrNone) // Didn't find the file, so leave - should only get valid filenames!
- {
- User::Leave(KErrNotFound);
- }
-
- HBufC* bioBuf = HBufC::NewLC(65535); // Create a new descriptor on the heap.
- HBufC* copyBuffer = HBufC::NewLC(1024);
-
- do // Read in the text from file, and also check if there is a name field:
- {
- err = file.Read(lineBuffer);// Read upto 256 chars, '\n' and all...
- //err = ReadLineL(file,lineBuffer);
- if (err == KErrNone) // Made a valid read,
- if (lineBuffer.Length() == 0) // but read 0 chars
- err = KErrEof; // so set err value to end processing
-
- if (err == KErrNone)
- {
- copyBuffer->Des().Copy(lineBuffer);// Copy, and overwrite existing text
- if ( (bioBuf->Length() + copyBuffer->Length())
- > bioBuf->Des().MaxLength())
- {
- bioBuf = bioBuf->ReAllocL(bioBuf->Length()
- + copyBuffer->Length());
- }
- bioBuf->Des().Append(*copyBuffer);
- //bioBuf->Des().Append(_L("\n"));
- }
- }while (err != KErrEof);
-
- CleanupStack::PopAndDestroy(); // Destroy the copyBuffer.
- CleanupStack::Pop();// Remove the bioBuf.
-
- file.Close();
- return bioBuf;
-}
-
-TMsvId TestUniDataModelVCalPlugin::CreateBIOEntryL(TDesC& aText,
- TBIOMessageType aMessageType)
-{
- // Ensure that we have a valid service ID to work with:
- TMsvId iBioServiceId;
-
- iBioServiceId = SetBIOServiceIdL();
-
- HBufC* localBuffer = aText.AllocL();
- CleanupStack::PushL(localBuffer);
-
- TPtr messDes = localBuffer->Des();
-
- if (aMessageType != EBiovCardMessage && aMessageType
- != EBiovCalenderMessage)
- {
- // convert \r\n to \n since this is what is expected from SMS when not vCard data
- for (TInt i = 0; i < messDes.Length(); i++)
- {
- if (messDes[i] == (TText) '\r' && i < messDes.Length() - 1
- && messDes[i + 1] == (TText) '\n')
- messDes.Delete(i, 1);
- }
- }
-
- // Create and fill a CRichText object for the jobbie:
- CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL();
- CleanupStack::PushL(paraFormatLayer);
- CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL();
- CleanupStack::PushL(charFormatLayer);
- CRichText* richText = CRichText::NewL(paraFormatLayer, charFormatLayer);
- CleanupStack::PushL(richText);
-
- TInt pos = richText->DocumentLength();
- richText->InsertL(pos, messDes);
-
- TMsvEntry newBioEntry;
- newBioEntry.SetNew(ETrue);
- newBioEntry.SetComplete(EFalse);
- newBioEntry.SetUnread(ETrue);
- newBioEntry.SetVisible(ETrue);
- newBioEntry.SetReadOnly(EFalse);
- newBioEntry.SetFailed(EFalse);
- newBioEntry.SetOperation(EFalse);
- newBioEntry.SetMultipleRecipients(EFalse);
- newBioEntry.SetAttachment(EFalse);
- newBioEntry.iMtm = KUidBIOMessageTypeMtm;
- newBioEntry.iType = KUidMsvMessageEntry;
- newBioEntry.iServiceId = iBioServiceId;
- TTime now;
- now.UniversalTime();
- newBioEntry.iDate = now;
-
- TTime unixEpoch(KUnixEpoch);
- TTimeIntervalSeconds seconds;
- TTime timeStamp = newBioEntry.iDate;
- timeStamp.SecondsFrom(unixEpoch, seconds);
- retTimeStamp.setTime_t(seconds.Int());
-
- newBioEntry.iDescription.Set(richText->Read(0, richText->DocumentLength()));
- TBufC<KTelephoneNumberMaxLength> telNumber;
-
- QString recepient(TEST_MSG_FROM1);
- tempNumber = XQConversions::qStringToS60Desc(recepient);
-
- telNumber = tempNumber->Des();
- newBioEntry.iDetails.Set(telNumber);
-
- SetForMtmTypeL(newBioEntry, aMessageType);
-
- newBioEntry.iSize = richText->DocumentLength();// msgSize;
- CreateBioEntryClientSideL(newBioEntry, *richText);
-
- CleanupStack::PopAndDestroy(4); // richText, charFormatLayer, paraFormatLayer, localBuffer
- return newBioEntry.Id();
-}
-
-void TestUniDataModelVCalPlugin::CreateBioEntryClientSideL(TMsvEntry& aEntry,
- CRichText& aBody)
-{
- if (inbox)
- {
- iMsvEntry->SetEntryL(KMsvGlobalInBoxIndexEntryId);
- }
- else if (drafts)
- {
- iMsvEntry->SetEntryL(KMsvDraftEntryId);
- }
- // Get the global inbox.
-
- iMsvEntry->CreateL(aEntry);
- iMsvEntry->SetEntryL(aEntry.Id());
-
- // Save all the changes
- CMsvStore* store = iMsvEntry->EditStoreL();
- CleanupStack::PushL(store);
-
- if (store->HasBodyTextL())
- {
- store->DeleteBodyTextL();
- }
-
- CPlainText* pText = CPlainText::NewL();
- CleanupStack::PushL(pText);
-
- if (inbox)
- {
- CSmsHeader* smsHeader = CSmsHeader::NewL(CSmsPDU::ESmsDeliver, *pText);
- CleanupStack::PushL(smsHeader);
- smsHeader->SetFromAddressL(*tempNumber);
- smsHeader->StoreL(*store);
-
- }
- else if (drafts)
- {
-
- QString recepient(TEST_MSG_FROM1);
- QString recepient2(TEST_MSG_FROM2);
- QString alias(TEST_MSG_ALIAS1);
-
- HBufC* addr = XQConversions::qStringToS60Desc(recepient);
- HBufC* addr2 = XQConversions::qStringToS60Desc(recepient2);
- HBufC* alias1 = XQConversions::qStringToS60Desc(alias);
-
- CSmsHeader* smsHeader = CSmsHeader::NewL(CSmsPDU::ESmsSubmit, *pText);
- CleanupStack::PushL(smsHeader);
-
- CSmsNumber* number1 = CSmsNumber::NewL(); // create the instance
- CleanupStack::PushL(number1);
-
- number1->SetNameL(TPtrC());
- number1->SetAddressL(*addr);
- smsHeader->Recipients().AppendL(number1);
- CleanupStack::Pop(number1);
-
- CSmsNumber* number2 = CSmsNumber::NewL();
- CleanupStack::PushL(number2);
-
- number2->SetNameL(*alias1);
- number2->SetAddressL(*addr2);
-
- smsHeader->Recipients().AppendL(number2);
- CleanupStack::Pop(number2);
- smsHeader->StoreL(*store);
-
- }
-
- store->StoreBodyTextL(aBody);
- store->CommitL();
-
- CleanupStack::PopAndDestroy(3); //store - close the store
-
- aEntry.SetComplete(ETrue);
- // Update the entry
- iMsvEntry->ChangeL(aEntry);
- iMsvEntry->SetEntryL(KMsvRootIndexEntryId);
-}
-
-TMsvId TestUniDataModelVCalPlugin::SetBIOServiceIdL()
-{
- // Haven't found an entry so create a BIO Message service:
- TMsvEntry bioServiceEntry;
- bioServiceEntry.iMtm = KUidBIOMessageTypeMtm;
- bioServiceEntry.iType = KUidMsvServiceEntry;
- bioServiceEntry.SetVisible(EFalse);
- bioServiceEntry.iDate.UniversalTime();
- bioServiceEntry.iDescription.Set(_L("BIO Message Service ")); // Is there such a thing?
- bioServiceEntry.iDetails.Set(_L("BIO Message Service"));
-
- TMsvId newBIOServiceId;
-
- iMsvEntry->SetEntryL(KMsvRootIndexEntryId);
- iMsvEntry->CreateL(bioServiceEntry); // Needs to be a child of the root!
- newBIOServiceId = bioServiceEntry.Id();
-
- return newBIOServiceId;
-}
-
-void TestUniDataModelVCalPlugin::SetForMtmTypeL(TMsvEntry& aEntry,
- TBIOMessageType aType)
-{
- TInt index;
-
- aEntry.iBioType = KUidBIOVCalenderMsg;
-
- // Set other TMsvEntry fields if we have a BIO message type
- if (aType != ENoMessage)
- {
- aEntry.SetMtmData2(0);
- aEntry.SetMtmData3(0);
- }
-
- // set description from BIF file
- iBioDb->GetBioIndexWithMsgIDL(TUid::Uid(aEntry.iBioType), index);
- if (index == KErrNotFound)
- User::Leave(KErrNotFound);
- aEntry.iDescription.Set(iBioDb->BifReader(index).Description());
-}
-
-void MsgObserver::HandleSessionEventL(TMsvSessionEvent /*aEvent*/,
- TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
-{
-}
--- a/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/testunidatamodelvcalplugin/testunidatamodelvcalplugin.h Tue Jul 06 22:50:16 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:
- */
-
-#ifndef TEST_UNI_DATA_MODEL_VCAL_PLUGIN_H
-#define TEST_UNI_DATA_MODEL_VCAL_PLUGIN_H
-
-#ifdef BUILD_TEST_DLL
-#define TEST_EXPORT Q_DECL_EXPORT
-#else
-#define TEST_EXPORT Q_DECL_IMPORT
-#endif
-
-#include <QObject>
-#include <txtetext.h>
-#include <txtrich.h>
-#include <mtclreg.h>
-#include <mtclbase.h>
-#include <msvids.h>
-#include <smsclnt.h>
-#include <smuthdr.h>
-#include <QDateTime>
-#include <e32math.h>
-
-
-#include <bsp.h>
-
-const TInt32 KUidBIOVCalenderMsg = {0x10005533}; // VCalender diary
-
-class UniDataModelPluginInterface;
-class UniDataModelLoader;
-class MsgObserver;
-
-class ConvergedMessage;
-class CBIODatabase;
-
-
-typedef enum
- { // GENERATE A MESSAGE USING....
- ENoMessage, // .. error cases
- EBioIapSettingsMessage, // .. IAP grammar, includes Internet settings
- // Email settings, and logon scripts,
- EBioEnpMessage, // .. Email Notification grammar.
- EBioRingTonesMessage, // .. Ringing Tones binary data
- EBioOpLogoMessage, // .. Logo for Operator service
- EBioCompBusCardMessage, // .. Compact Business Card data
- EBiovCardMessage, // .. virtual business card data
- EBiovCalenderMessage, // .. vCalender data
- EBioWAPSettingsMessage, // .. wap settings
- EBioWPRVSettingsMessage // .. wprv settings
- } TBIOMessageType;
-
-
-class TEST_EXPORT TestUniDataModelVCalPlugin : public QObject
-{
-Q_OBJECT
-
-private slots:
- //called by frame work.
- void initTestCase();//called before the first testfunction is executed.
- void cleanupTestCase();//called after the last testfunction was executed.
- void init();//called before each testfunction is executed.
- void cleanup();//called after every testfunction.
- //test cases.
- void testInBoxVCalMessage();
- void testDraftsVCalMessage();
- void testUnusedAPIs();
-
-private:
- TMsvId CreateBIOEntryL(TDesC& aText, TBIOMessageType aMessageType);
- void CreateBioEntryClientSideL(TMsvEntry& aEntry, CRichText& aBody);
- HBufC* ReadFromFileL(const TDesC& aFile);
- void SetSessionPath(const TDesC& aSessionPath);
- TMsvId CreateBIOEntryFromFileL(const TDesC& aFilename,
- TBIOMessageType aMessageType);
- TBIOMessageType SetMessageType(const TDesC& aFileName);
- CMsvEntrySelection* GenerateMessagesL();
- TMsvId SetBIOServiceIdL();
- void SetForMtmTypeL(TMsvEntry& aEntry, TBIOMessageType aType);
-
-private:
- UniDataModelPluginInterface* pluginInterface;
- MsgObserver* iObserver;
- CMsvSession* iMSession;
- CClientMtmRegistry* iMtmReg;
- TMsvId messageId;
- UniDataModelLoader* pluginLoader;
- QDateTime retTimeStamp;
- RFs iFs;
- CDir* iDir;
- TInt iFilesProcessed;
- CMsvEntry* iMsvEntry;
- CBIODatabase* iBioDb;
- TMsvId newEntryId;
- HBufC* tempNumber;
- TBufC<KMaxFileName> currentFile;
- TBool inbox;
- TBool drafts;
-};
-
-class MsgObserver : public MMsvSessionObserver
-{
-public:
- void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2,
- TAny* aArg3);
-};
-
-#endif //TEST_UNI_DATA_MODEL_VCAL_PLUGIN_H
--- a/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/testunidatamodelvcalplugin/testunidatamodelvcalplugin.ini Tue Jul 06 22:50:16 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-//this file is used to provide predefined set of input data.
-
-//eg.
-const char TEST_MSG_BODY[] = "This string is message body test string";
-const char TEST_MSG_RECIEPIENT[] = "Javaid Nabi<9741596546>";
-const char TEST_MSG_FROM1[] = "9741596546";
-const char TEST_MSG_ALIAS1[] = "Javaid Nabi";
-const char TEST_MSG_FROM2[] = "9797979797";
-const char TEST_MSG_ALIAS2[] = "Rajesh Batchu";
-const char TEST_MSG_SUBJECT[] = "Message Subject";
--- a/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/testunidatamodelvcalplugin/testunidatamodelvcalplugin.pro Tue Jul 06 22:50:16 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-QT += testlib
-QT -= gui
-
-TEMPLATE = lib
-TARGET = test-unidatamodel-vcal-plugin
-
-
-INCLUDEPATH += .
-INCLUDEPATH += ../../../../../../inc
-INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-
-DEFINES += BUILD_TEST_DLL
-
-SOURCES += \
- testunidatamodelvcalplugin.cpp
-
-
-# Input
-HEADERS += \
- testunidatamodelvcalplugin.h
-
-
-
-SYMBIAN_PLATFORMS = WINSCW ARMV5
- symbian {
- TARGET.CAPABILITY = CAP_GENERAL_DLL
- TARGET.EPOCSTACKSIZE = 0x8000
- TARGET.EPOCHEAPSIZE = 0x1000 0x1F00000
- TARGET.EPOCALLOWDLLDATA = 1
- BLD_INF_RULES.prj_exports += "vcal1.txt /epoc32/winscw/c/test/vcal1.txt"
- BLD_INF_RULES.prj_exports += "BioMtm.rsc /epoc32/winscw/c/resource/messaging/mtm/BioMtm.rsc"
- }
-
-defBlock = \
- "$${LITERAL_HASH}if defined(EABI)" \
- "DEFFILE ../eabi/test_unidatamodel_vcal_plugin.def" \
- "$${LITERAL_HASH}else" \
- "DEFFILE ../bwins/test_unidatamodel_vcal_plugin.def" \
- "$${LITERAL_HASH}endif"
-
-MMP_RULES += defBlock
-
- LIBS += -leuser \
- -lconvergedmessageutils\
- -lmsgs \
- -lsmcm \
- -lgsmu \
- -letext \
- -lmsgs \
- -lunidatamodelloader\
- -lQtCore \
- -lbioc \
- -lefsrv \
- -lbiodb \
- -lbifu \
- -lxqutils
-
-
--- a/messagingapp/msgutils/unidatautils/unidatamodelplugins/unibiomessagedataplugin/tsrc/testunidatamodelvcalplugin/vcal1.txt Tue Jul 06 22:50:16 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-BEGIN:VCALENDAR
-PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
-VERSION:1.0
-BEGIN:VEVENT
-DTSTART:20000322T080000Z
-DTEND:20000322T083000Z
-LOCATION;ENCODING=QUOTED-PRINTABLE:Somewhere
-UID:040000008200E00074C5B7101A82E0080000000090BB8A23ED93BF010000000000000000100
- 00000AB7E96B01EFFD31192E70060084F0B48
-DESCRIPTION;ENCODING=QUOTED-PRINTABLE:=09You will be busy doing something, =
-somewhere at some point.=0D=0A
-SUMMARY;ENCODING=QUOTED-PRINTABLE:My big appointment
-PRIORITY:3
-END:VEVENT
-END:VCALENDAR
--- a/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditormmsplugin/inc/unieditormmsplugin_p.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditormmsplugin/inc/unieditormmsplugin_p.h Fri Jul 09 14:46:10 2010 +0530
@@ -210,6 +210,21 @@
*/
void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2,
TAny* aArg3);
+
+ /**
+ * Populate sender address (for reply/replyAll case)
+ */
+ void populateSenderL(ConvergedMessage& aMessage);
+
+ /**
+ * Populates converged message for reply case
+ */
+ void convertFromReplyHandlerL(ConvergedMessage* aMessage);
+
+ /**
+ * Populates converged message for replyAll case
+ */
+ void convertFromReplyAllHandlerL(ConvergedMessage* aMessage);
private:
// Data
--- a/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditormmsplugin/src/unieditormmsplugin_p.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditormmsplugin/src/unieditormmsplugin_p.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -43,6 +43,7 @@
#include "UniSendingSettings.h"
#include "unidatamodelloader.h"
#include "unidatamodelplugininterface.h"
+#include "msgcontacthandler.h"
#include <xqconversions.h>
#include "debugtraces.h"
#include "UniEditorGenUtils.h"
@@ -62,6 +63,7 @@
const TUid KSenduiMtmMmsUid = {KSenduiMtmMmsUidValue};
#define LOC_FWD hbTrId("txt_messaging_formlabel_fwd")
+#define LOC_RE hbTrId("txt_messaging_formlabel_re")
// -----------------------------------------------------------------------------
// Two-phased constructor.
@@ -139,6 +141,14 @@
{
convertFromForwardHandlerL(*msg);
}
+ else if(aOperation == UniEditorPluginInterface::Reply)
+ {
+ convertFromReplyHandlerL(msg);
+ }
+ else if(aOperation == UniEditorPluginInterface::ReplyAll)
+ {
+ convertFromReplyAllHandlerL(msg);
+ }
CleanupStack::Pop(msg);
QDEBUG_WRITE("Exit convertFromL");
return msg;
@@ -945,7 +955,7 @@
{
}
-
+// -----------------------------------------------------------------------------
// HandleSessionEventL
// @see Header
// -----------------------------------------------------------------------------
@@ -957,4 +967,146 @@
// do nothing
}
+// -----------------------------------------------------------------------------
+// populateSenderL
+// @see Header
+// -----------------------------------------------------------------------------
+//
+void CUniEditorMmsPluginPrivate::populateSenderL(
+ ConvergedMessage& aMessage)
+ {
+ // get sender address
+ HBufC* fromAddress = (MmsMtmL()->Sender()).AllocLC();
+ HBufC* pureAddr = TMmsGenUtils::PureAddress(*fromAddress).AllocLC();
+ HBufC* aliasAddr = TMmsGenUtils::Alias(*fromAddress).AllocLC();
+
+ if(pureAddr->Length() > 0)
+ {
+ ConvergedMessageAddress messageAddress(
+ XQConversions::s60DescToQString(*pureAddr),
+ XQConversions::s60DescToQString(*aliasAddr));
+ aMessage.addToRecipient(messageAddress);
+ }
+ CleanupStack::PopAndDestroy(3, fromAddress );
+ }
+
+// -----------------------------------------------------------------------------
+// convertFromReplyHandlerL
+// @see Header
+// -----------------------------------------------------------------------------
+//
+void CUniEditorMmsPluginPrivate::convertFromReplyHandlerL(
+ ConvergedMessage* aMessage)
+ {
+ // for received mms, populate sender address into To-field
+ // for sent mms, populate recipients into To-field
+ TMsvEntry entry = MmsMtmL()->Entry().Entry();
+ if( entry.Parent() == KMsvGlobalInBoxIndexEntryIdValue )
+ {
+ populateSenderL(*aMessage);
+ }
+ else
+ {
+ populateRecipientsL(*aMessage);
+ }
+
+ // resolve contacts
+ ConvergedMessageAddressList addrList = aMessage->toAddressList();
+ int addrCount = addrList.count();
+ for(int i=0; i<addrCount; i++)
+ {
+ ConvergedMessageAddress* addr = addrList.at(i);
+ // resolve contact if alias is empty
+ if(addr->alias().isEmpty())
+ {
+ QString alias;
+ int count;
+ int localId =
+ MsgContactHandler::resolveContactDisplayName(
+ addr->address(), alias, count);
+ addr->setAlias(alias);
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// convertFromReplyAllHandlerL
+// @see Header
+// -----------------------------------------------------------------------------
+//
+void CUniEditorMmsPluginPrivate::convertFromReplyAllHandlerL(
+ ConvergedMessage* aMessage)
+ {
+ // populate all recipients (and sender for received mms)
+ TMsvEntry entry = MmsMtmL()->Entry().Entry();
+ if( entry.Parent() == KMsvGlobalInBoxIndexEntryIdValue )
+ {
+ populateSenderL(*aMessage);
+ }
+ populateRecipientsL(*aMessage);
+
+ // resolve to-field contacts
+ ConvergedMessageAddressList addrList = aMessage->toAddressList();
+ int addrCount = addrList.count();
+ for(int i=0; i<addrCount; i++)
+ {
+ ConvergedMessageAddress* addr = addrList.at(i);
+ // resolve contact if alias is empty
+ if(addr->alias().isEmpty())
+ {
+ QString alias;
+ int count;
+ int localId =
+ MsgContactHandler::resolveContactDisplayName(
+ addr->address(), alias, count);
+ addr->setAlias(alias);
+ }
+ }
+
+ // resolve cc-field contacts
+ addrList = aMessage->ccAddressList();
+ addrCount = addrList.count();
+ for(int i=0; i<addrCount; i++)
+ {
+ ConvergedMessageAddress* addr = addrList.at(i);
+ // resolve contact if alias is empty
+ if(addr->alias().isEmpty())
+ {
+ QString alias;
+ int count;
+ int localId =
+ MsgContactHandler::resolveContactDisplayName(
+ addr->address(), alias, count);
+ addr->setAlias(alias);
+ }
+ }
+
+ // resolve bcc-field contacts
+ addrList = aMessage->bccAddressList();
+ addrCount = addrList.count();
+ for(int i=0; i<addrCount; i++)
+ {
+ ConvergedMessageAddress* addr = addrList.at(i);
+ // resolve contact if alias is empty
+ if(addr->alias().isEmpty())
+ {
+ QString alias;
+ int count;
+ int localId =
+ MsgContactHandler::resolveContactDisplayName(
+ addr->address(), alias, count);
+ addr->setAlias(alias);
+ }
+ }
+
+ // populate the subject field
+ QString subject = XQConversions::s60DescToQString(
+ MmsMtmL()->SubjectL());
+ if(!subject.startsWith(LOC_RE, Qt::CaseInsensitive))
+ {
+ subject.insert(0, LOC_RE);
+ }
+ aMessage->setSubject(subject);
+ }
+
// End of File
--- a/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditormmsplugin/unieditormmsplugin.pro Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditormmsplugin/unieditormmsplugin.pro Fri Jul 09 14:46:10 2010 +0530
@@ -44,21 +44,22 @@
src/unieditormmsplugin_p.cpp
LIBS += -leuser \
- -lcone \
- -lmsgs \
- -lmmsmessage \
- -lmmsserversettings \
- -lmmsgenutils \
- -lcommdb \
- -lefsrv \
- -lbafl \
- -leditorgenutils \
- -lunidatamodelloader \
- -lconvergedmessageutils \
- -lunidatamodel \
- -lmsgmedia \
- -leikctl \
- -lxqutils
+ -lcone \
+ -lmsgs \
+ -lmmsmessage \
+ -lmmsserversettings \
+ -lmmsgenutils \
+ -lcommdb \
+ -lefsrv \
+ -lbafl \
+ -leditorgenutils \
+ -lunidatamodelloader \
+ -lconvergedmessageutils \
+ -lunidatamodel \
+ -lmsgmedia \
+ -leikctl \
+ -lxqutils \
+ -lQtContacts
# Build.inf rules
--- a/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditorsmsplugin/inc/unieditorsmsplugin_p.h Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditorsmsplugin/inc/unieditorsmsplugin_p.h Fri Jul 09 14:46:10 2010 +0530
@@ -306,7 +306,17 @@
* @see MMsvSessionObserver
*/
void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2,
- TAny* aArg3);
+ TAny* aArg3);
+
+ /**
+ * Populate recipients for reply case
+ */
+ void populateMessageForReplyL(ConvergedMessage* aMessage);
+
+ /**
+ * Extract from address from Deliver PDU
+ */
+ void fromAddress(QString& messageAddress);
private: // Data
--- a/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditorsmsplugin/src/unieditorsmsplugin_p.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditorsmsplugin/src/unieditorsmsplugin_p.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -62,6 +62,7 @@
#include "UniEditorGenUtils.h"
#include "unidatamodelloader.h"
#include "unidatamodelplugininterface.h"
+#include "msgcontacthandler.h"
#include <hbglobal.h> // for translation support
#include <xqconversions.h>
// resources
@@ -334,6 +335,15 @@
//Populate message body
populateMessageBodyL(aMessage,msvEntry);
}
+ else if(aOperation == UniEditorPluginInterface::Reply)
+ {
+ populateMessageForReplyL(aMessage);
+ }
+ else if(aOperation == UniEditorPluginInterface::ReplyAll)
+ {
+ // control should never reach here for sms
+ User::Leave(KErrArgument);
+ }
//This is required as the switch entry doesnot reset sms headers
//so if we fwd an inbox msg and then try to save that content to drafts
@@ -451,6 +461,7 @@
{
emailFields->AddAddressL( *pureAddr );
appendbuf.Set(pureAddr->Des().Left(appendLen));
+ iRecipients->AppendL( *addr );
}
else
{
@@ -458,6 +469,8 @@
{
SmsMtmL()->AddAddresseeL( *pureAddr, *aliasAddr );
appendbuf.Set(aliasAddr->Des().Left(appendLen));
+ iRecipients->AppendL(
+ *TMmsGenUtils::GenerateAddressL(*pureAddr, *aliasAddr));
}
else
{
@@ -465,11 +478,14 @@
{
SmsMtmL()->AddAddresseeL( *pureAddr, *alt_alias );
appendbuf.Set(alt_alias->Des().Left(appendLen));
+ iRecipients->AppendL(
+ *TMmsGenUtils::GenerateAddressL(*pureAddr, *alt_alias));
}
else
{
SmsMtmL()->AddAddresseeL( *pureAddr );
appendbuf.Set(pureAddr->Des().Left(appendLen));
+ iRecipients->AppendL( *addr );
}
}
}
@@ -478,7 +494,6 @@
{
idetailsBuf.Append( appendbuf );
}
- iRecipients->AppendL( *addr );
// cleanup
CleanupStack::PopAndDestroy(2, pureAddr );
@@ -1796,7 +1811,6 @@
aMessage->setSubject(XQConversions::s60DescToQString(
emailFields.Subject()));
}
-
}
// ----------------------------------------------------
@@ -1879,4 +1893,76 @@
// do nothing
}
+// -----------------------------------------------------------------------------
+// UniEditorSmsPluginPrivate::populateMessageForReplyL
+// @see Header
+// -----------------------------------------------------------------------------
+//
+void UniEditorSmsPluginPrivate::populateMessageForReplyL(
+ ConvergedMessage* aMessage)
+ {
+ // find out if the message is incoming or outgoing
+ CSmsPDU::TSmsPDUType smsPduType = SmsMtmL()->SmsHeader().Type();
+
+ // for incoming message, populate sender address in To-field
+ if(smsPduType == CSmsPDU::ESmsDeliver)
+ {
+ QString addr;
+ fromAddress(addr);
+ if(!addr.isEmpty())
+ {
+ ConvergedMessageAddress messageAddress(addr);
+ aMessage->addToRecipient(messageAddress);
+ }
+ }
+ // else, for outgoing message, populate receiver address in To-field
+ else if(smsPduType == CSmsPDU::ESmsSubmit)
+ {
+ populateRecipientsL(aMessage);
+ }
+
+ // resolve to-field contacts
+ ConvergedMessageAddressList addrList = aMessage->toAddressList();
+ int addrCount = addrList.count();
+ for(int i=0; i<addrCount; i++)
+ {
+ ConvergedMessageAddress* addr = addrList.at(i);
+ // resolve contact if alias is empty
+ if(addr->alias().isEmpty())
+ {
+ QString alias;
+ int count;
+ int localId =
+ MsgContactHandler::resolveContactDisplayName(
+ addr->address(), alias, count);
+ addr->setAlias(alias);
+ }
+ }
+ }
+
+//---------------------------------------------------------------
+// UniEditorSmsPluginPrivate::fromAddress
+// @see header
+//---------------------------------------------------------------
+void UniEditorSmsPluginPrivate::fromAddress(
+ QString& messageAddress)
+{
+ CPlainText* pText = CPlainText::NewL();
+ CleanupStack::PushL(pText);
+
+ CSmsHeader* smsHeader = CSmsHeader::NewL(CSmsPDU::ESmsDeliver, *pText);
+ CleanupStack::PushL(smsHeader);
+
+ CMsvEntry &cEntry = SmsMtmL()->Entry();
+
+ CMsvStore* store = cEntry.ReadStoreL();
+ CleanupStack::PushL(store);
+
+ smsHeader->RestoreL(*store);
+
+ messageAddress
+ = XQConversions::s60DescToQString(smsHeader->FromAddress());
+ CleanupStack::PopAndDestroy(3, pText);
+}
+
// End of File
--- a/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditorsmsplugin/unieditorsmsplugin.pro Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/msgutils/unieditorutils/unieditorplugins/unieditorsmsplugin/unieditorsmsplugin.pro Fri Jul 09 14:46:10 2010 +0530
@@ -66,7 +66,8 @@
-lFeatMgr \
-lapmime \
-lunidatamodelloader \
- -lxqutils
+ -lxqutils \
+ -lQtContacts
# plugin stub deployment
plugin.sources = unieditorsmsplugin.dll
--- a/messagingapp/smartmessaging/ringbc/src/ringbc_p.cpp Tue Jul 06 22:50:16 2010 +0530
+++ b/messagingapp/smartmessaging/ringbc/src/ringbc_p.cpp Fri Jul 09 14:46:10 2010 +0530
@@ -90,23 +90,23 @@
if(error == KErrCorrupt)
{
- HbMessageBox::information("Ringing Tone Corrupted");
+ HbMessageBox::information("Ringing Tone Corrupted", 0, 0, HbMessageBox::Ok);
QDEBUG_WRITE("RingBcPrivate::saveTone : Ringing tone corrupted")
}
else if(error == KErrNoMemory || error == KErrDiskFull)
{
- HbMessageBox::information("No memory to save");
+ HbMessageBox::information("No memory to save", 0, 0, HbMessageBox::Ok);
QDEBUG_WRITE("RingBcPrivate::saveTone : Low memory")
}
else
{
- HbMessageBox::information("Error in Saving");
+ HbMessageBox::information("Error in Saving", 0, 0, HbMessageBox::Ok);
QDEBUG_WRITE("RingBcPrivate::saveTone : Error in Saving")
}
}
else
{
- HbMessageBox::information("Saved succesfully");
+ HbMessageBox::information("Saved succesfully", 0, 0, HbMessageBox::Ok);
QDEBUG_WRITE("RingBcPrivate::saveTone : Ringing tone saved successfully")
}
--- a/msg_plat/conversation_services_utilities_api/inc/ccsdefs.h Tue Jul 06 22:50:16 2010 +0530
+++ b/msg_plat/conversation_services_utilities_api/inc/ccsdefs.h Fri Jul 09 14:46:10 2010 +0530
@@ -199,7 +199,9 @@
ECsBioMsg_VCard,
ECsBioMsg_VCal,
ECsBioMgs_NokiaService,
-ECsUnknown
+ECsUnknown,
+ECsBlueTooth_VCard,
+ECsBlueTooth_VCal
};
/**