messagingapp/msgutils/unidatamodel/unismsdataplugin/src/unismsdataplugin_p.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
child 79 2981cb3aa489
--- a/messagingapp/msgutils/unidatamodel/unismsdataplugin/src/unismsdataplugin_p.cpp	Fri Apr 16 14:56:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,302 +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 <smsclnt.h>
-#include "debugtraces.h"
-
-#include <QDateTime>
-
-#include <csmsemailfields.h>
-//USER INCLUDES
-#include "s60qconversions.h"
-#include "convergedmessageaddress.h"
-#include "convergedmessage.h"
-
-#include "unismsdataplugin_p.h"
-#include "sessioneventhandler.h"
-
-#define KSmsMtmUidValue  0x1000102C
-const TUid KSmsMtmUid =
-{KSmsMtmUidValue};
-_LIT(KUnixEpoch, "19700000:000000.000000");
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::~UniSMSDataPluginPrivate
-// @see header
-//---------------------------------------------------------------
-UniSMSDataPluginPrivate::~UniSMSDataPluginPrivate()
-{
-    q_ptr = NULL;
-    delete iSmsClient;
-    delete iMtmReg;
-    delete iSessionHandler;
-    delete iMSession;
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::UniSMSDataPluginPrivate
-// @see header
-//---------------------------------------------------------------
-UniSMSDataPluginPrivate::UniSMSDataPluginPrivate(UniSMSDataPlugin* plugin) :
-    iMSession(NULL),
-    iMtmReg(NULL),
-    iSmsClient(NULL),
-    q_ptr(plugin),
-    iSessionHandler(NULL)
-{   
-    iSessionHandler = new SessionEventHandler();
-    iMSession = CMsvSession::OpenSyncL(*iSessionHandler);
-    iSessionHandler->start();
-    done = EFalse;
-}
-
-void UniSMSDataPluginPrivate::initL()
-{
-
-    iMtmReg = CClientMtmRegistry::NewL(*iMSession);
-    TMsvSelectionOrdering ordering;
-
-    CMsvEntry* root = CMsvEntry::NewL(*iMSession,
-                                      KMsvRootIndexEntryId,
-                                      ordering);
-    CleanupStack::PushL(root);
- 
-    TMsvId firstId;
-    TRAPD(err, TSmsUtilities::ServiceIdL(*root,firstId));
-
-    if (err == KErrNotFound)
-    {
-        TMsvEntry entry;
-        entry.iMtm = KUidMsgTypeSMS;
-        entry.iType = KUidMsvServiceEntry;
-        entry.SetReadOnly(EFalse);
-        entry.SetVisible(EFalse);
-        entry.iDate.UniversalTime();
-        entry.iDetails.Set(_L("SMS Service"));
-
-        root->SetEntryL(KMsvRootIndexEntryId);
-        root->CreateL(entry);
-    }
-    
-    CleanupStack::PopAndDestroy(root);
-    iSmsClient = static_cast<CSmsClientMtm*> (iMtmReg->NewMtmL(KSmsMtmUid));
-    done = ETrue;
-    iMessageId = 0;
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::reset
-// @see header
-//---------------------------------------------------------------
-void UniSMSDataPluginPrivate::reset()
-{
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::setMessageId
-// @see header
-//---------------------------------------------------------------
-int UniSMSDataPluginPrivate::setMessageId(int mId)
-{
-    TInt error = KErrNone;
-    TRAP(error, setMessageIdL(mId));
-    return error;
-
-}
-
-void UniSMSDataPluginPrivate::setMessageIdL(int mId)
-{
-    if (done == EFalse)
-    {
-        initL();
-    }
-    if (iMessageId != mId)
-    {
-        iMessageId = (TMsvId) mId;
-        iSmsClient->SwitchCurrentEntryL(iMessageId);
-        iSmsClient->LoadMessageL();
-    }
-
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::body
-// @see header
-//---------------------------------------------------------------
-void UniSMSDataPluginPrivate::body(QString& aBodyText)
-{
-    CRichText& textBody = iSmsClient->Body();
-    TInt len = textBody.DocumentLength();
-    HBufC* buf = HBufC::NewL(len);
-    TPtr bufPtr = buf->Des();
-    textBody.ExtractSelectively(bufPtr, 0, len, CPlainText::EExtractAll);
-    aBodyText = S60QConversions::s60DescToQString(*buf);
-    delete buf;
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::messageSize
-// @see header
-//---------------------------------------------------------------
-qint32 UniSMSDataPluginPrivate::messageSize()
-{
-    return iSmsClient->Entry().Entry().iSize;
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::toRecipientList
-// @see header
-//---------------------------------------------------------------
-void UniSMSDataPluginPrivate::toRecipientList(
-                                              ConvergedMessageAddressList& mAddressList)
-{
-    TPtrC name;
-    TPtrC address;
-    // Get the recipient list from the client mtm
-    const CMsvRecipientList& smsRecipients = iSmsClient->AddresseeList();
-
-    for (TInt id = 0; id < smsRecipients.Count(); ++id)
-    {
-        extractNameAndAddress(smsRecipients[id], name, address);
-        // populate address
-        ConvergedMessageAddress
-                * messageAddress =
-                        new ConvergedMessageAddress(S60QConversions::s60DescToQString(address),
-                                                    S60QConversions::s60DescToQString(name));
-        mAddressList.append(messageAddress);
-    }
-
-    const CSmsEmailFields& emailFields = iSmsClient->SmsHeader().EmailFields();
-    // check if it is a EOS
-    if (emailFields.HasAddress())
-    {
-        const MDesCArray& emailRecipients = emailFields.Addresses();
-        for (TInt id = 0; id < emailRecipients.MdcaCount(); ++id)
-        {
-            extractNameAndAddress(emailRecipients.MdcaPoint(id), name, address);
-            ConvergedMessageAddress
-                    * messageAddress =
-                            new ConvergedMessageAddress(S60QConversions::s60DescToQString(address),
-                                                        S60QConversions::s60DescToQString(name));
-            mAddressList.append(messageAddress);
-        }
-    }
-
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::fromAddress
-// @see header
-//---------------------------------------------------------------
-void UniSMSDataPluginPrivate::fromAddress(QString& messageAddress)
-{
-    CPlainText* pText = CPlainText::NewL();
-    CleanupStack::PushL(pText);
-
-    CSmsHeader* smsHeader = CSmsHeader::NewL(CSmsPDU::ESmsDeliver, *pText);
-    CleanupStack::PushL(smsHeader);
-
-    CMsvEntry *cEntry = CMsvEntry::NewL(iSmsClient->Session(),
-                                        iMessageId,
-                                        TMsvSelectionOrdering());
-    CleanupStack::PushL(cEntry);
-
-    CMsvStore* store = cEntry->ReadStoreL();
-    CleanupStack::PushL(store);
-
-    smsHeader->RestoreL(*store);
-
-    messageAddress
-            = S60QConversions::s60DescToQString(smsHeader->FromAddress());
-    CleanupStack::PopAndDestroy(4, pText);
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::timeStamp
-// @see header
-//---------------------------------------------------------------
-int UniSMSDataPluginPrivate::timeStamp()
-{
-    QDateTime retTimeStamp;
-    TTime timeStamp = iSmsClient->Entry().Entry().iDate;
-    TTime unixEpoch(KUnixEpoch);
-    TTimeIntervalSeconds seconds;
-    timeStamp.SecondsFrom(unixEpoch, seconds);
-    return seconds.Int();
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::session
-// @see header
-//---------------------------------------------------------------
-CMsvSession* UniSMSDataPluginPrivate::session()
-{
-    return iMSession;
-}
-
-//---------------------------------------------------------------
-// UniSMSDataPluginPrivate::extractNameAndAddress
-// @see header
-//---------------------------------------------------------------
-void UniSMSDataPluginPrivate::extractNameAndAddress(const TDesC& aMsvAddress,
-                                                    TPtrC& aName,
-                                                    TPtrC& aAddress)
-{
-    // For address information separation (start)
-    const TUint KMsgSmsAddressStartChar('<');
-
-    // For address information separation (end)
-    const TUint KMsgSmsAddressEndChar('>');
-
-    TInt addressStart = aMsvAddress.LocateReverse(KMsgSmsAddressStartChar);
-    TInt addressEnd = aMsvAddress.LocateReverse(KMsgSmsAddressEndChar);
-
-    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
-    }
-}
-