diff -r ecf6a73a9186 -r 60a8a215b0ec messagingapp/msgui/unifiededitor/src/msgunieditormonitor.cpp --- a/messagingapp/msgui/unifiededitor/src/msgunieditormonitor.cpp Tue Oct 05 13:58:47 2010 +0530 +++ b/messagingapp/msgui/unifiededitor/src/msgunieditormonitor.cpp Tue Oct 19 11:30:16 2010 +0530 @@ -18,28 +18,27 @@ // INCLUDES #include "debugtraces.h" #include -#include // USER INCLUDES #include "msgunieditormonitor.h" -#include "msgunieditorview.h" -#include "msgunieditoraddress.h" -#include "msgunieditorsubject.h" -#include "msgunieditorbody.h" -#include "msgunieditorattachmentcontainer.h" #include "UniEditorGenUtils.h" // Constants // Define static -ConvergedMessage::MessageType MsgUnifiedEditorMonitor::mMessageType; -int MsgUnifiedEditorMonitor::mBodySize; -int MsgUnifiedEditorMonitor::mContainerSize; -int MsgUnifiedEditorMonitor::mSubjectSize; -int MsgUnifiedEditorMonitor::mMaxMmsSize; -int MsgUnifiedEditorMonitor::mMaxSmsRecipients; -int MsgUnifiedEditorMonitor::mMaxMmsRecipients; -int MsgUnifiedEditorMonitor::mMsgCurrAddressCount; +ConvergedMessage::MessageType MsgUnifiedEditorMonitor::mMessageType = ConvergedMessage::Sms; +int MsgUnifiedEditorMonitor::mBodySize = 0; +int MsgUnifiedEditorMonitor::mBodyTextSize = 0; +int MsgUnifiedEditorMonitor::mContainerSize = 0; +int MsgUnifiedEditorMonitor::mBodyContentSize = 0; +int MsgUnifiedEditorMonitor::mSubjectSize = 0; +int MsgUnifiedEditorMonitor::mMaxMmsSize = 0; +int MsgUnifiedEditorMonitor::mMaxSmsRecipients = 0; +int MsgUnifiedEditorMonitor::mMaxMmsRecipients = 0; +int MsgUnifiedEditorMonitor::mToAddressCount = 0; +int MsgUnifiedEditorMonitor::mCcAddressCount = 0; +int MsgUnifiedEditorMonitor::mBccAddressCount = 0; +bool MsgUnifiedEditorMonitor::mReadyForSend = false; //Localized strings #define LOC_POP_MESSAGE_CHANGE_MUL hbTrId("txt_messaging_dpopinfo_message_type_changed_to_mul") @@ -51,7 +50,12 @@ //--------------------------------------------------------------- MsgUnifiedEditorMonitor::MsgUnifiedEditorMonitor(QObject* parent) : QObject(parent), -mSkipNote(false) +mSkipNote(false), +mContainerHasMmsContent(false), +mPriority(ConvergedMessage::Normal), +mEmailPresent(false), +mUniCode(false), +mImageResizing(false) { mUniEditorGenUtils = q_check_ptr( new UniEditorGenUtils); init(); @@ -63,22 +67,39 @@ //--------------------------------------------------------------- MsgUnifiedEditorMonitor::~MsgUnifiedEditorMonitor() { + reset(); delete mUniEditorGenUtils; } //--------------------------------------------------------------- +// MsgUnifiedEditorMonitor::reset +// @see header file +//--------------------------------------------------------------- +void MsgUnifiedEditorMonitor::reset() +{ + mMessageType = ConvergedMessage::Sms; + mBodySize = 0; + mBodyTextSize = 0; + mContainerSize = 0; + mBodyContentSize = 0; + mSubjectSize = 0; + mMaxMmsSize = 0; + mMaxSmsRecipients = 0; + mMaxMmsRecipients = 0; + mToAddressCount = 0; + mCcAddressCount = 0; + mBccAddressCount = 0; + mReadyForSend = false; +} + +//--------------------------------------------------------------- // MsgUnifiedEditorMonitor::init // @see header file //--------------------------------------------------------------- void MsgUnifiedEditorMonitor::init() { - mMessageType = ConvergedMessage::Sms; - mBodySize = 0; - mContainerSize = 0; - mSubjectSize = 0; - mMsgCurrAddressCount = 0; - mMaxMmsSize = KDefaultMaxSize; + TRAP_IGNORE(mMaxMmsSize = mUniEditorGenUtils->MaxMmsMsgSizeL()); mMaxSmsRecipients = KDefaultSmsRecipients; @@ -89,11 +110,69 @@ } //--------------------------------------------------------------- -// MsgUnifiedEditorMonitor::handleContentChange +// MsgUnifiedEditorMonitor::handleContentsChanged // @see header file //--------------------------------------------------------------- -void MsgUnifiedEditorMonitor::handleContentChange() +void MsgUnifiedEditorMonitor::handleContentsChanged(const QVariant& data) { + QString objectName = sender()->objectName(); + + if(objectName == "attachmentContainer") + { + QVariantList dataList = data.toList(); + mContainerSize = dataList.at(0).toInt(); + mContainerHasMmsContent = dataList.at(1).toBool(); + } + + if(objectName == "body") + { + if(data.type() == QVariant::Bool) + { + mImageResizing = data.toBool(); + } + else + { + mBodySize = data.toInt(); + updateBodyContentSize(); + } + } + + if(objectName == "bodyText") + { + QVariantList dataList = data.toList(); + mBodyTextSize = dataList.at(0).toInt(); + mUniCode = dataList.at(1).toBool(); + updateBodyContentSize(); + + } + + if(objectName == "subject") + { + QVariantList dataList = data.toList(); + mSubjectSize = dataList.at(0).toInt(); + mPriority = ConvergedMessage::Priority(dataList.at(1).toInt()); + + } + + if(objectName == "to") + { + QVariantList dataList = data.toList(); + mToAddressCount = dataList.at(0).toInt(); + mEmailPresent = dataList.at(1).toBool(); + } + + if(objectName == "cc") + { + QVariantList dataList = data.toList(); + mCcAddressCount = dataList.at(0).toInt(); + } + + if(objectName == "bcc") + { + QVariantList dataList = data.toList(); + mBccAddressCount = dataList.at(0).toInt(); + } + // get the projected message type & show the type change note ConvergedMessage::MessageType newMsgType = projectedMsgType(); if(mMessageType != newMsgType) @@ -110,10 +189,14 @@ } showPopup(noteStr); } - - HbWidget* senderWidget = qobject_cast(sender()); - updateMsgInfo(senderWidget); + updateSend(); + + //emit when content is modified after opening a draft message. + if(!mSkipNote) + { + emit contentsChanged(); + } } //--------------------------------------------------------------- @@ -136,66 +219,6 @@ } //--------------------------------------------------------------- -// MsgUnifiedEditorMonitor::updateMsgInfo -// @see header file -//--------------------------------------------------------------- -void MsgUnifiedEditorMonitor::updateMsgInfo(HbWidget* senderWidget) -{ - if(mMessageType == ConvergedMessage::Mms) - { - //Disable char counter & add subject - view()->mBody->disableCharCounter(); - view()->addSubject(); - } - else - { - //Enable char counter - view()->mBody->enableCharCounter(); - } - - // check if sent by body widget - MsgUnifiedEditorBody* body = NULL; - body = qobject_cast(senderWidget); - if(body) - { - mBodySize = view()->mBody->bodySize(); - view()->setAttachOptionEnabled( - MsgUnifiedEditorView::TBE_PHOTO, !view()->mBody->hasImage()); - view()->setAttachOptionEnabled( - MsgUnifiedEditorView::TBE_SOUND, !view()->mBody->hasAudio()); - return; - } - - // check if sent by subject widget - MsgUnifiedEditorSubject* subject = NULL; - subject = qobject_cast(senderWidget); - if(subject) - { - mSubjectSize = view()->mSubjectField->subjectSize(); - return; - } - - // check if sent by attachment container widget - MsgAttachmentContainer* container = NULL; - container = qobject_cast(senderWidget); - if(container) - { - mContainerSize = view()->mAttachmentContainer->containerSize(); - return; - } - - // handle content change from other widgets e.g. To, Cc, Bcc address field - int totalAddressCount = view()->mToField->addressCount(); - if(view()->mCcField && view()->mBccField) - { - totalAddressCount += view()->mCcField->addressCount() + - view()->mBccField->addressCount(); - } - mMsgCurrAddressCount = totalAddressCount; - return; -} - -//--------------------------------------------------------------- // MsgUnifiedEditorMonitor::showPopup // @see header file //--------------------------------------------------------------- @@ -215,37 +238,23 @@ } //--------------------------------------------------------------- -// MsgUnifiedEditorMonitor::view -// @see header file -//--------------------------------------------------------------- -MsgUnifiedEditorView* MsgUnifiedEditorMonitor::view() -{ - return static_cast(this->parent()); -} - -//--------------------------------------------------------------- // MsgUnifiedEditorMonitor::bodyHasMMSContent // @see header file //--------------------------------------------------------------- bool MsgUnifiedEditorMonitor::bodyHasMMSContent() { - MsgUnifiedEditorBody* edBody = view()->mBody; - // If any media-object is present inside body - if(!edBody->mediaContent().isEmpty()) - { - return true; - } - - int bodyTextSize = mUniEditorGenUtils->UTF8Size(edBody->text()); + bool result = false; + int maxSmsSize = 0; - TRAP_IGNORE(maxSmsSize = - mUniEditorGenUtils->MaxSmsMsgSizeL(edBody->isUnicode())); + TRAP_IGNORE(maxSmsSize = mUniEditorGenUtils->MaxSmsMsgSizeL(mUniCode)); + // If body text size exceeds sms text-size limit - if(bodyTextSize > maxSmsSize) + if( mBodyTextSize > maxSmsSize || mBodySize) { - return true; + result = true; } - return false; + + return result; } //--------------------------------------------------------------- @@ -254,22 +263,13 @@ //--------------------------------------------------------------- bool MsgUnifiedEditorMonitor::subjectHasMMSContent() { - MsgUnifiedEditorSubject* edSubject = view()->mSubjectField; - ConvergedMessage::Priority priority = ConvergedMessage::Normal; - QString subjectText; - if(edSubject) + bool result = false; + if(mPriority != ConvergedMessage::Normal || mSubjectSize) { - priority = edSubject->priority(); - subjectText = edSubject->text(); + result = true; } - // If priority is set to other than Normal or - // If subject has some content - if( (priority != ConvergedMessage::Normal) || - !subjectText.isEmpty() ) - { - return true; - } - return false; + + return result; } //--------------------------------------------------------------- @@ -278,23 +278,14 @@ //--------------------------------------------------------------- bool MsgUnifiedEditorMonitor::containerHasMMSContent() { - QString bodyText = view()->mBody->text(); - MsgAttachmentContainer* edContainer = view()->mAttachmentContainer; - bool hasMMAttachmentContent = false; - int attachmentCount = 0; - if(edContainer) + bool result = false; + + if(mContainerHasMmsContent || mContainerSize && mBodyTextSize) { - hasMMAttachmentContent = edContainer->hasMMContent(); - attachmentCount = edContainer->count(); + result = true; } - // If MM attachments are present or - // If only one non-MM attachment is present e.g. vcf along with body text - if( hasMMAttachmentContent || - ((attachmentCount == 1) && !bodyText.isEmpty()) ) - { - return true; - } - return false; + + return result; } //--------------------------------------------------------------- @@ -303,32 +294,14 @@ //--------------------------------------------------------------- bool MsgUnifiedEditorMonitor::otherMMSCriteriaMet() { - MsgUnifiedEditorAddress* edCc = view()->mCcField; - MsgUnifiedEditorAddress* edBcc = view()->mBccField; - int ccCount = 0; - int bccCount = 0; - if(edCc && edBcc) + bool result = false; + + if(mCcAddressCount || mBccAddressCount || mEmailPresent || + mToAddressCount > mMaxSmsRecipients) { - ccCount = edCc->addressCount(); - bccCount = edBcc->addressCount(); + result = true; } - // If CC/BCC has some content or - // If to-recipients count exceeds max sms recipient count - if( ccCount || bccCount || - (view()->mToField->addressCount() > mMaxSmsRecipients) ) - { - return true; - } - - // If to-field contains an email address - bool isEmailPresent = false; - ConvergedMessageAddressList addrList = view()->mToField->addresses(); - TRAP_IGNORE(isEmailPresent = mUniEditorGenUtils->VerifyEmailAddressesL(addrList)); - if(isEmailPresent) - { - return true; - } - return false; + return result; } //--------------------------------------------------------------- @@ -337,15 +310,33 @@ //--------------------------------------------------------------- void MsgUnifiedEditorMonitor::updateSend() { - if (mMsgCurrAddressCount > 0 && (mSubjectSize + mBodySize + mContainerSize) > 0 && !view()->mBody->isImageResizing()) + + if ( (mToAddressCount + mCcAddressCount + mBccAddressCount) > 0 && + (mSubjectSize + mBodyContentSize + mContainerSize) > 0 && + !mImageResizing ) { emit enableSend(true); + mReadyForSend = true; } else { emit enableSend(false); + mReadyForSend = false; + } + +} + +void MsgUnifiedEditorMonitor::updateBodyContentSize() +{ + if(mBodySize || mBodyTextSize) + { + mBodyContentSize = mBodySize + mBodyTextSize + KEstimatedMimeHeaderSize + + KEstimatedMmsSmilHeaderSize; + } + else + { + mBodyContentSize = 0; } } - //EOF