--- a/messagingapp/msgutils/unidatamodel/unimmsdataplugin/src/unimmsdataplugin_p.cpp Fri Apr 16 14:56:15 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,598 +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:
- *
- */
-
-//SYSTEM INCLUDES
-#include <e32cmn.h>
-#include <mtclreg.h>
-#include <mtclbase.h>
-#include <msvids.h>
-#include <txtetext.h>
-#include <txtrich.h>
-#include <txtfmlyr.h>
-#include <badesca.h>
-#include <eikrted.h>
-
-#include <mmsclient.h>
-#include <mmssettings.h>
-#include <mmsheaders.h>
-#include <MsgMediaInfo.h>
-#include <MsgMediaResolver.h>
-#include <DRMHelper.h>
-
-
-#include <QDateTime>
-
-#include "convergedmessage.h"
-#include "s60qconversions.h"
-#include "convergedmessageaddress.h"
-#include "unimmsdataplugin_p.h"
-#include "UniDataModel.h"
-#include "debugtraces.h"
-#include "sessioneventhandler.h"
-
-
-#define KSenduiMtmMmsUidValue 0x100058E1
-const TUid KSenduiMtmMmsUid =
-{KSenduiMtmMmsUidValue};
-_LIT(KUnixEpoch, "19700000:000000.000000");
-
-const TInt KMmsArrayAllocationNumber = 6;
-
-UniMMSDataPluginPrivate::UniMMSDataPluginPrivate():
- mSession(NULL),
- mMtmRegistry(NULL),
- mUniDataModel(NULL),
- mMmsClient(NULL),
- mInsertingMedia(NULL),
- iEditor(NULL),
- iDom(NULL),
- iDRMHelper(NULL),
- iSessionHandler(NULL)
- {
-
- done = EFalse;
- iSessionHandler = new SessionEventHandler();
- mSession = CMsvSession::OpenSyncL(*iSessionHandler);
- iSessionHandler->start();
- }
-
-void UniMMSDataPluginPrivate::initL()
-{
- mMtmRegistry = CClientMtmRegistry::NewL(*mSession);
- mMmsClient
- = static_cast<CMmsClientMtm*> (mMtmRegistry->NewMtmL(KSenduiMtmMmsUid));
-
- User::LeaveIfError(mfsSession.Connect());
- iMessageId = 0;
-}
-
-UniMMSDataPluginPrivate::~UniMMSDataPluginPrivate()
-{
- delete iEditor;
- delete iDom;
- if(mUniDataModel)
- {
- delete mUniDataModel;
- }
- mfsSession.Close();
- delete mMmsClient;
- delete mMtmRegistry;
- delete iSessionHandler;
- delete mSession;
-}
-
-int UniMMSDataPluginPrivate::setMessageId(int messageId)
-{
- TInt error = KErrNone;
- TRAP(error, setMessageIdL(messageId));
- return error;
-}
-
-void UniMMSDataPluginPrivate::setMessageIdL(int messageId)
-{
- if (done == EFalse)
- {
- initL();
- }
-
- if (iMessageId != messageId)
- {
- if (done)
- {
- reset();
- }
- done = ETrue;
- iMessageId = messageId;
- mMmsClient->SwitchCurrentEntryL(iMessageId);
- mMmsClient->LoadMessageL();
- mUniDataModel = CUniDataModel::NewL(mfsSession, *mMmsClient);
- mUniDataModel->RestoreL(*this, EFalse);
- }
-}
-
-void UniMMSDataPluginPrivate::reset()
-{
- delete mUniDataModel;
- mUniDataModel = NULL;
-}
-
-void UniMMSDataPluginPrivate::body(QString& aBodyText)
-{
-
- CRichText& textBody = mMmsClient->Body();
- TInt len = textBody.DocumentLength();
- HBufC* buf = HBufC::NewL(len);
- TPtr bufPtr = buf->Des();
- aBodyText = S60QConversions::s60DescToQString(bufPtr);
-}
-
-int UniMMSDataPluginPrivate::messageSize()
-{
- return mMmsClient->MessageSize();
-}
-
-
-QString UniMMSDataPluginPrivate::subject()
-{
- TPtrC sub = mMmsClient->SubjectL();
- return S60QConversions::s60DescToQString(sub);
-}
-
-
-
-
-void UniMMSDataPluginPrivate::toRecipientList(
- ConvergedMessageAddressList& mAddressList)
-{
- CMsvEntry* cEntry = mSession->GetEntryL(KMsvGlobalInBoxIndexEntryIdValue);
- CleanupStack::PushL(cEntry);
- TRAPD (error, cEntry->SetEntryL( iMessageId ));
- if (error != KErrNone)
- {
- CleanupStack::PopAndDestroy(); // cEntry
- return;
- }
- CMsvStore* store = cEntry->ReadStoreL();
- CleanupStack::PushL(store);
- CMmsSettings* settings = CMmsSettings::NewL();
- CleanupStack::PushL(settings);
- CMmsHeaders* mmsHeaders = CMmsHeaders::NewL(settings->MmsVersion());
- CleanupStack::PushL(mmsHeaders);
- mmsHeaders->RestoreL(*store);
- TPtrC name;
- TPtrC address;
- TPtrC to;
- for (TInt id = 0; id < mmsHeaders->ToRecipients().MdcaCount(); id++)
- {
- to.Set( (mmsHeaders->ToRecipients())[id]);
- extractNameAndAddress(to, name, address);
- // populate address
- ConvergedMessageAddress
- * messageAddress =
- new ConvergedMessageAddress(S60QConversions::s60DescToQString(address),
- S60QConversions::s60DescToQString(name));
- mAddressList.append(messageAddress);
- }
-
- CleanupStack::PopAndDestroy(3); // mmsHeaders, settings, store
-
- CleanupStack::PopAndDestroy(); // cEntry
-}
-
-void UniMMSDataPluginPrivate::ccRecipientList(
- ConvergedMessageAddressList& mAddressList)
-{
- CMsvEntry* cEntry = mSession->GetEntryL(KMsvGlobalInBoxIndexEntryIdValue);
- CleanupStack::PushL(cEntry);
- TRAPD (error, cEntry->SetEntryL( iMessageId ));
- if (error != KErrNone)
- {
- CleanupStack::PopAndDestroy(); // cEntry
- return;
- }
- CMsvStore* store = cEntry->ReadStoreL();
- CleanupStack::PushL(store);
- CMmsSettings* settings = CMmsSettings::NewL();
- CleanupStack::PushL(settings);
- CMmsHeaders* mmsHeaders = CMmsHeaders::NewL(settings->MmsVersion());
- CleanupStack::PushL(mmsHeaders);
- mmsHeaders->RestoreL(*store);
- //CDesCArray& ccList = mmsHeaders->CcRecipients();
-
- TPtrC cc;
- TPtrC name;
- TPtrC address;
- for (TInt id = 0; id < mmsHeaders->CcRecipients().MdcaCount(); id++)
- {
- cc.Set( (mmsHeaders->CcRecipients())[id]);
- extractNameAndAddress(cc, name, address);
- // populate address
- ConvergedMessageAddress
- * messageAddress =
- new ConvergedMessageAddress(S60QConversions::s60DescToQString(address),
- S60QConversions::s60DescToQString(name));
- mAddressList.append(messageAddress);
- }
-
- CleanupStack::PopAndDestroy(3); // mmsHeaders, settings, store
-
- CleanupStack::PopAndDestroy(); // cEntry
-}
-
-void UniMMSDataPluginPrivate::bccRecipientList(
- ConvergedMessageAddressList& mAddressList)
-{
- CMsvEntry* cEntry = mSession->GetEntryL(KMsvGlobalInBoxIndexEntryIdValue);
- CleanupStack::PushL(cEntry);
- TRAPD (error, cEntry->SetEntryL( iMessageId ));
- if (error != KErrNone)
- {
- CleanupStack::PopAndDestroy(); // cEntry
- return;
- }
- CMsvStore* store = cEntry->ReadStoreL();
- CleanupStack::PushL(store);
- CMmsSettings* settings = CMmsSettings::NewL();
- CleanupStack::PushL(settings);
- CMmsHeaders* mmsHeaders = CMmsHeaders::NewL(settings->MmsVersion());
- CleanupStack::PushL(mmsHeaders);
- mmsHeaders->RestoreL(*store);
- //CDesCArray& bccList = mmsHeaders->BccRecipients();
-
- TPtrC bcc;
- TPtrC name;
- TPtrC address;
- for (TInt id = 0; id < mmsHeaders->BccRecipients().MdcaCount(); id++)
- {
- bcc.Set( (mmsHeaders->BccRecipients())[id]);
- extractNameAndAddress(bcc, name, address);
- // populate address
- ConvergedMessageAddress
- * messageAddress =
- new ConvergedMessageAddress(S60QConversions::s60DescToQString(address),
- S60QConversions::s60DescToQString(name));
- mAddressList.append(messageAddress);
- }
-
- CleanupStack::PopAndDestroy(3); // mmsHeaders, settings, store
-
- CleanupStack::PopAndDestroy(); // cEntry
-}
-
-void UniMMSDataPluginPrivate::fromAddress(QString& messageAddress)
-{
-
- TPtrC sender = mMmsClient->Sender();
- messageAddress = S60QConversions::s60DescToQString(sender);
-}
-
-UniMessageInfoList UniMMSDataPluginPrivate::attachmentList()
-{
- UniMessageInfoList attlist;
- int attcount = mUniDataModel->AttachmentList().Count();
-
- QString path;
- QString mimetype;
- int size;
- for (int i = 0; i < attcount; i++)
- {
- CUniObject *obj = mUniDataModel->AttachmentList().GetByIndex(i);
-
- mimetype = S60QConversions::s60Desc8ToQString(obj->MimeType());
- path
- = S60QConversions::s60DescToQString(obj->MediaInfo()->FullFilePath());
- size = obj->Size(EFalse);
-
- UniMessageInfo *msgobj = new UniMessageInfo(path, size, mimetype);
- attlist << msgobj;
- }
-
- return attlist;
-}
-
-QString UniMMSDataPluginPrivate::messageType()
-{
- QString str("mms");
- return str;
-}
-
-MsgPriority UniMMSDataPluginPrivate::messagePriority()
-{
- return Normal;
-}
-
-int UniMMSDataPluginPrivate::attachmentCount()
-{
- return mUniDataModel->AttachmentList().Count();
-}
-
-bool UniMMSDataPluginPrivate::hasAttachment()
-{
- int count = mUniDataModel->AttachmentList().Count();
- if (count > 0)
- {
- return true;
- }
- else
- {
- return false;
- }
-}
-
-int UniMMSDataPluginPrivate::objectCount()
-{
- return mUniDataModel->ObjectList().Count();
-}
-
-UniMessageInfoList UniMMSDataPluginPrivate::objectList()
-{
- UniMessageInfoList objlist;
- int objcount = mUniDataModel->ObjectList().Count();
-
- QString path;
- QString mimetype;
- int size;
- for (int i = 0; i < objcount; i++)
- {
- CUniObject *obj = mUniDataModel->ObjectList().GetByIndex(i);
-
- mimetype = S60QConversions::s60Desc8ToQString(obj->MimeType());
- path
- = S60QConversions::s60DescToQString(obj->MediaInfo()->FullFilePath());
- size = obj->Size(EFalse);
-
- UniMessageInfo *msgobj = new UniMessageInfo(path, size, mimetype);
- objlist << msgobj;
- }
-
- return objlist;
-}
-
-/*
- * For now not reqd
- */
-int UniMMSDataPluginPrivate::slideCount()
-{
- return mUniDataModel->SmilModel().SlideCount();
-}
-
-UniMessageInfoList UniMMSDataPluginPrivate::slideContent(TInt slidenum)
-{
- UniMessageInfoList slidecontent;
-
- int slideobjcount = mUniDataModel->SmilModel().SlideObjectCount(slidenum);
-
- QString path;
- QString mimetype;
- int size;
- for (int i = 0; i < slideobjcount; i++)
- {
- CUniObject *obj = mUniDataModel->SmilModel().GetObjectByIndex(slidenum,
- i);
-
- mimetype = S60QConversions::s60Desc8ToQString(obj->MimeType());
- path
- = S60QConversions::s60DescToQString(obj->MediaInfo()->FullFilePath());
- size = obj->Size(EFalse);
-
- UniMessageInfo *msgobj = new UniMessageInfo(path, size, mimetype);
- slidecontent << msgobj;
- }
-
- return slidecontent;
-}
-
-int UniMMSDataPluginPrivate::timeStamp()
-{
- QDateTime retTimeStamp;
- TTime timeStamp = mMmsClient->Entry().Entry().iDate;
- TTime unixEpoch(KUnixEpoch);
- TTimeIntervalSeconds seconds;
- timeStamp.SecondsFrom(unixEpoch, seconds);
- return seconds.Int();
-}
-
-void UniMMSDataPluginPrivate::extractNameAndAddress(const TDesC& aMsvAddress,
- TPtrC& aName,
- TPtrC& aAddress)
-{
- // For address information separation (start)
- const TUint KMsgMmsAddressStartChar('<');
-
- // For address information separation (end)
- const TUint KMsgMmsAddressEndChar('>');
-
- TInt addressStart = aMsvAddress.LocateReverse(KMsgMmsAddressStartChar);
- TInt addressEnd = aMsvAddress.LocateReverse(KMsgMmsAddressEndChar);
-
- if (addressStart != KErrNotFound && addressEnd != KErrNotFound
- && addressEnd > addressStart)
- {
- // verified address, will be used as selected from contacts manager
- aName.Set(aMsvAddress.Ptr(), addressStart);
- aAddress.Set(aMsvAddress.Mid(addressStart + 1).Ptr(), (addressEnd
- - addressStart) - 1);
- if (!aAddress.Length())
- {
- aAddress.Set(aName);
- aName.Set(KNullDesC); // empty string
- }
- }
- else
- {
- // unverified string, will be used as entered in the header field
- aName.Set(KNullDesC); // empty string
- aAddress.Set(aMsvAddress.Ptr(), aMsvAddress.Length()); // a whole string to address
- }
-
- if (aName.CompareF(aAddress) == 0)
- {
- aName.Set(KNullDesC); // empty string
- }
-}
-
-void UniMMSDataPluginPrivate::RestoreReady(TInt /*aParseResult*/,
- TInt /*aError*/)
-{
-}
-
-void UniMMSDataPluginPrivate::addObjectL( int aSlideNum,UniMessageInfo* aInfo )
-{
- TInt error = KErrNone;
-
- HBufC* filePath = S60QConversions::qStringToS60Desc(aInfo->path());
- if(filePath)
- {
- CleanupStack::PushL(filePath);
-
- RFile file = mUniDataModel->MediaResolver().FileHandleL( *filePath);
- CleanupClosePushL( file );
-
- mInsertingMedia = mUniDataModel->MediaResolver().CreateMediaInfoL( file );
-
- //TODO try using the commented code after testing on diff env or on hardware
- //mUniDataModel->MediaResolver().ParseInfoDetailsL( mInsertingMedia, file );
- iDRMHelper = CDRMHelper::NewL();
- mInsertingMedia->ParseInfoDetailsL( file, *iDRMHelper, *this );
-
- mUniDataModel->SmilModel().AddObjectL( *this, aSlideNum, mInsertingMedia );
-
- //Since the ownership is transferred dont delete these
- mInsertingMedia = NULL;
- iDRMHelper = NULL;
-
-
- CleanupStack::PopAndDestroy( &file );
- CleanupStack::PopAndDestroy( filePath );
- }
-}
-
-void UniMMSDataPluginPrivate::ObjectSaveReady( TInt /*aError*/ )
-{
-
-}
-
-void UniMMSDataPluginPrivate::MediaInfoParsed()
-{
-
-}
-void UniMMSDataPluginPrivate::addTextObjectL(int aSlideNum,QString aText )
-{
- TInt error = KErrNone;
-
- //Delete this always
- delete iEditor;
- iEditor = NULL;
-
- HBufC* textContent = S60QConversions::qStringToS60Desc(aText);
- if(textContent)
- {
- CleanupStack::PushL(textContent);
-
- iEditor = new CEikRichTextEditor;
- iEditor->ConstructL(NULL,0,0,CEikEdwin::ENoAutoSelection|
- CEikEdwin::EOwnsWindow,0,0);
- iEditor->RichText()->InsertL(0,*textContent);
-
- mUniDataModel->SmilModel().AddTextObjectL( aSlideNum,iEditor);
- CleanupStack::PopAndDestroy( textContent );
- }
-}
-
-void UniMMSDataPluginPrivate::addSlideL( int aSlideNum )
-{
- TInt error = KErrNone;
- mUniDataModel->SmilModel().AddSlideL(aSlideNum);
-}
-
-void UniMMSDataPluginPrivate::composeSmilL(CMsvStore& aEditStore)
-{
- TInt error = KErrNone;
-
- delete iDom;
- iDom = NULL;
-
- iDom = mUniDataModel->SmilModel().ComposeL();
-
- mUniDataModel->SmilList().CreateSmilAttachmentL( *this,aEditStore, iDom );
-}
-
-void UniMMSDataPluginPrivate::saveObjects()
-{
- mUniDataModel->ObjectList().SaveAll( *this, CMsvAttachment::EMsvFile );
-}
-
-void UniMMSDataPluginPrivate::SmilComposeEvent( TInt /*aError*/ )
-{
-
-}
-
-TMsvAttachmentId UniMMSDataPluginPrivate::getSmilAttachmentByIndex()
-{
- return mUniDataModel->SmilList().GetSmilAttachmentByIndex( 0 );
-}
-
-void UniMMSDataPluginPrivate::restoreL(CBaseMtm& mtm)
-{
- initL();
- mUniDataModel = CUniDataModel::NewL(mfsSession, mtm);
- mUniDataModel->RestoreL(*this, ETrue);
-}
-
-void UniMMSDataPluginPrivate::addAttachmentL( UniMessageInfo* aInfo )
-{
- TInt error = KErrNone;
-
- HBufC* filePath = S60QConversions::qStringToS60Desc(aInfo->path());
- if(filePath)
- {
- CleanupStack::PushL(filePath);
-
- RFile file = mUniDataModel->MediaResolver().FileHandleL( *filePath);
- CleanupClosePushL( file );
-
- mInsertingMedia = mUniDataModel->MediaResolver().CreateMediaInfoL( file );
-
- //TODO try using the commented code after testing on diff env or on hardware
- //mUniDataModel->MediaResolver().ParseInfoDetailsL( mInsertingMedia, file );
- iDRMHelper = CDRMHelper::NewL();
- mInsertingMedia->ParseInfoDetailsL( file, *iDRMHelper, *this );
-
- mUniDataModel->AddAttachmentL( *this, mInsertingMedia,
- CMsvAttachment::EMsvFile );
-
- //Since the ownership is transferred dont delete these
- mInsertingMedia = NULL;
- iDRMHelper = NULL;
-
-
- CleanupStack::PopAndDestroy( &file );
- CleanupStack::PopAndDestroy( filePath );
- }
-}
-
-void UniMMSDataPluginPrivate::removeSlide(int aSlideNumber)
-{
- mUniDataModel->SmilModel().RemoveSlide(aSlideNumber);
-}
-
-
-CMsvSession* UniMMSDataPluginPrivate::session()
-{
- return mSession;
-}
-