messagingapp/msgappfw/plugin/src/ccsmsgpluginutility.cpp
changeset 27 e4592d119491
parent 25 84d9eb65b26f
child 30 6a20128ce557
child 32 f3f513612312
--- a/messagingapp/msgappfw/plugin/src/ccsmsgpluginutility.cpp	Mon May 03 12:29:07 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,462 +0,0 @@
-/*
-* Copyright (c) 2007 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:  CS Msg Plugin Utility class
- *
-*/
-
-
-// USER INCLUDES
-#include "ccsmsgpluginutility.h"
-#include "ccsdebug.h"
-
-//SYSTEM INCLUDES
-#include <csmsemailfields.h>
-#include <e32cmn.h>
-#include <SendUiConsts.h>
-#include <pushentry.h>
-#include <msvids.h>
-
-// ----------------------------------------------------------------------------
-// CCsMsgPluginUtility::NewL
-// Two Phase Construction
-// ----------------------------------------------------------------------------
-CCsMsgPluginUtility* CCsMsgPluginUtility::NewL( )
-    {
-    CCsMsgPluginUtility* self = new ( ELeave ) CCsMsgPluginUtility();
-    return self;
-    }
-
-// ----------------------------------------------------------------------------
-// CCsMsgPluginUtility::~CCsMsgPluginUtility
-// Destructor
-// ----------------------------------------------------------------------------
-CCsMsgPluginUtility::~CCsMsgPluginUtility()
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// Constructor
-// ----------------------------------------------------------------------------
-CCsMsgPluginUtility::CCsMsgPluginUtility()
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// CCsMsgPluginUtility::CreateConversationEntryL
-// Creates CCsConversationEntry
-// ----------------------------------------------------------------------------
-//
-CCsConversationEntry* CCsMsgPluginUtility::CreateConversationEntryL(
-        const HBufC* aContact,
-        TMsvId aEnryId,
-        TInt64 aTimeStamp,
-        TMsvId aDir,
-        const HBufC* aDescription,
-        TCsSendState aSendState,
-        TCsAttribute aMsgAttribs,
-        TCsType aCsType) const 
-    {
-    // create CCsConversationEntry
-    CCsConversationEntry *conversationEntry = CCsConversationEntry::NewL();
-    CleanupStack::PushL(conversationEntry);
-        
-    //set the values
-    conversationEntry->SetContactL( *aContact );
-    conversationEntry->SetEntryId( aEnryId );
-    conversationEntry->SetTimeStampL( aTimeStamp );
-    conversationEntry->SetDescriptionL( *aDescription );
-    conversationEntry->SetConversationDir( MapDirection( aDir ) );
-    conversationEntry->SetSendState( aSendState );
-    conversationEntry->ChangeAttributes( aMsgAttribs, ECsAttributeNone );
-    conversationEntry->SetType(aCsType);
-        
-    //pop and return
-    CleanupStack::Pop(conversationEntry);
-    return conversationEntry;
-    }
-
-// ----------------------------------------------------------------------------
-// CCsMsgPluginUtility::MapDirection
-// Map the msg direction to TCsDirection
-// ----------------------------------------------------------------------------
-//
-TCsDirection CCsMsgPluginUtility::MapDirection( TMsvId aDir ) const
-    {
-    TCsDirection direction = ECsDirectionUnknown;    
-    switch(aDir)
-        {
-        case KMsvSentEntryIdValue:
-        case KMsvGlobalOutBoxIndexEntryIdValue:  // Fall-through
-        case KMsvDraftEntryIdValue:
-            {
-            direction = ECsDirectionOutgoing;
-            break;
-            }
-        case KMsvGlobalInBoxIndexEntryIdValue:
-            {
-            direction = ECsDirectionIncoming;
-            break;
-            }
-        }
-    return direction;
-    }
-
-// ----------------------------------------------------------------------------
-// CCsMsgPluginUtility::GetMsgAttributes
-// Returns the message attributes as a bitmask of TCsAttribute values.
-// ----------------------------------------------------------------------------
-//
-TUint16 CCsMsgPluginUtility::GetMsgAttributes( const TMsvEntry& aEntry )
-    {
-    TUint16 msgAttributes = ECsAttributeNone;
-    TMsvId parent = aEntry.Parent();
-
-    // New
-    if( aEntry.New() )
-        {
-        msgAttributes |= ECsAttributeNew;
-        }
-
-    // Drafts
-    if( KMsvDraftEntryIdValue == parent )
-        {
-        msgAttributes |= ECsAttributeDraft;
-        }
-
-    // Attachments
-    if( aEntry.Attachment() )
-        {
-        msgAttributes |= ECsAttributeAttachment;
-        }
-
-    // Priority
-    TMsvPriority priority = aEntry.Priority();
-    if( EMsvHighPriority == priority )
-        {
-        msgAttributes |= ECsAttributeHighPriority;
-        }
-    else if( EMsvLowPriority == priority )
-        {
-        msgAttributes |= ECsAttributeLowPriority;
-        }
-
-    // Read/Unread
-    if( KMsvGlobalInBoxIndexEntryIdValue == parent )
-        {
-        if( EFalse == aEntry.Unread() )
-            {
-            // Read
-            msgAttributes &= ~ECsAttributeUnread;
-            }
-        else
-            {
-            // Unread
-            msgAttributes |= ECsAttributeUnread;
-            }
-        }
-
-    // Sent
-    if( KMsvSentEntryIdValue == parent )
-        {
-        msgAttributes |= ECsAttributeSent;
-        }
-
-    return msgAttributes;
-    }
-
-// ----------------------------------------------------------------------------
-// CCsMsgPluginUtility::GetSendState
-// Returns the send status.
-// ----------------------------------------------------------------------------
-//
-TCsSendState CCsMsgPluginUtility::GetSendState( const TMsvEntry& aContext )
-    {
-    TUint sendingState = aContext.SendingState();
-    TCsSendState convSendState = ECsSendStateUnknown;
-
-    switch( sendingState )
-        {
-        case KMsvSendStateUponRequest:
-            {
-            convSendState = ECsSendStateUponRequest;
-            break;
-            }
-        case KMsvSendStateWaiting:
-            {
-            convSendState = ECsSendStateWaiting;
-            break;
-            }
-        case KMsvSendStateSending:
-            {
-            convSendState = ECsSendStateSending;
-            break;
-            }
-        case KMsvSendStateScheduled:
-            {
-            convSendState = ECsSendStateScheduled;
-            break;
-            }
-        case KMsvSendStateResend:
-            {
-            convSendState = ECsSendStateResend;
-            break;
-            }
-        case KMsvSendStateSuspended:
-            {
-            convSendState = ECsSendStateSuspended;
-            break;
-            }
-        case KMsvSendStateFailed:
-            {
-            convSendState = ECsSendStateFailed;
-            break;
-            }
-        case KMsvSendStateSent:
-            {
-            convSendState = ECsSendStateSent;
-            break;
-            }
-        case KMsvSendStateNotApplicable:
-            {
-            convSendState = ECsSendStateNotApplicable;
-            break;
-            }
-        }
-    return convSendState;
-    }
-
-// ----------------------------------------------------------------------------
-// CCsMsgPluginUtility::GetContact
-// Get the Contact (From/To) of the message
-// ----------------------------------------------------------------------------
-//
-void CCsMsgPluginUtility::CreateContactL(CMsvSession* aSession,
-					const TMsvEntry& aEntry,
-					RPointerArray<HBufC>& addressList)
-	{
-    if ( aEntry.iMtm.iUid == KSenduiMtmSmsUidValue )      
-        {
-        CPlainText* nullString = CPlainText::NewL();
-        CleanupStack::PushL( nullString );
-    
-        CSmsHeader* smsHeader = NULL;
-        if ( aEntry.Parent() == KMsvGlobalInBoxIndexEntryIdValue ) 
-            {
-            smsHeader = CSmsHeader::NewL( CSmsPDU::ESmsDeliver, *nullString );
-            }
-        else if ( aEntry.Parent() == KMsvSentEntryIdValue || 
-                  aEntry.Parent() == KMsvGlobalOutBoxIndexEntryIdValue )
-            {
-            smsHeader = CSmsHeader::NewL( CSmsPDU::ESmsSubmit, *nullString );
-            }
-        else
-            {
-            CleanupStack::PopAndDestroy(nullString);
-            return;
-            }
-        CleanupStack::PushL( smsHeader );
-    
-        CMsvEntry *cEntry = CMsvEntry::NewL(*aSession,aEntry.Id(),
-            TMsvSelectionOrdering() );
-        CleanupStack::PushL( cEntry );
-    
-        CMsvStore* store = cEntry->ReadStoreL();
-        CleanupStack::PushL(store);
-    
-        TRAPD(err, smsHeader->RestoreL( *store ));    
-        if ( err == KErrNone )
-            {
-            if ( aEntry.Parent() == KMsvGlobalOutBoxIndexEntryIdValue ||
-                 aEntry.Parent() == KMsvSentEntryIdValue )
-                {
-                const CArrayPtrFlat<CSmsNumber>& rcpts = smsHeader->Recipients();
-                const CSmsNumber& rcpt = *rcpts.At(0);
-
-                HBufC* fromAddress = (rcpt.Address()).AllocL();
-                addressList.Append(fromAddress);
-                }
-            else
-                {
-                // Check and add if any email addresses                
-                const CSmsEmailFields& emailFields = smsHeader->EmailFields();
-                if( emailFields.HasAddress() )
-                    {                  
-                    TPtrC name;
-                    TPtrC address;
-
-                    const MDesCArray& emailRecipients = emailFields.Addresses();
-                    for( TInt id = 0; id < emailRecipients.MdcaCount(); id++ )
-                        {
-                        NameAndAddress( emailRecipients.MdcaPoint( id ), name, address);
-                        
-                        // Add address to list
-                        HBufC* addressBuf = HBufC::NewL( address.Length() );
-                        TPtr addressPtr( 0, 0 );
-                        addressPtr.Set( addressBuf->Des() );
-                        addressPtr.Copy( address );
-                        addressList.Append(addressBuf);
-                        }
-                    }
-                else
-                    { 
-                    HBufC* fromAddress = (smsHeader->FromAddress()).AllocL();   
-                    
-                    // Try iDetails if empty
-                    if ( fromAddress->Length() == 0 )
-                        fromAddress = aEntry.iDetails.AllocL();
-                    
-                    addressList.Append(fromAddress);
-                    }
-                }
-            }
-        
-        // Cleanup 
-        CleanupStack::PopAndDestroy(store);
-        CleanupStack::PopAndDestroy(cEntry);
-        CleanupStack::PopAndDestroy(smsHeader);
-        CleanupStack::PopAndDestroy(nullString);
-        }
-    else if ( aEntry.iMtm.iUid == KSenduiMtmBtUidValue  ||  
-			  aEntry.iMtm.iUid == KSenduiMtmBioUidValue ||
-			  aEntry.iMtm == KUidMtmWapPush )
-        {
-        HBufC* fromAddress = aEntry.iDetails.AllocL();
-        addressList.Append(fromAddress);
-        }
-    }
-
-// ---------------------------------------------------------
-// CCsMsgPluginUtility::CompareEntry
-//
-// ---------------------------------------------------------
-TBool CCsMsgPluginUtility::CompareEntry( const TMsvEntry& aOldContext,  
-	const TMsvEntry& aNewContext, TMsvId aDir ) const
-    {
-    if(	(aOldContext.Id() == aNewContext.Id()) 
-        &&   (aOldContext.Parent() == aNewContext.Parent())
-        &&   (0 == aOldContext.iDescription.Compare(aNewContext.iDescription)) )
-    {
-    // incase of outbox, check sending state also
-    if(aDir == KMsvGlobalOutBoxIndexEntryIdValue)
-        {
-        if(aOldContext.SendingState() == aNewContext.SendingState())
-            return ETrue;
-        else
-            return EFalse;
-        }
-    return ETrue;
-    }
-
-    return EFalse;
-    }
-
-// ----------------------------------------------------------------------------
-// CCsMsgPluginUtility::NameAndAddress
-// Extracts name and address from the aMsvAddress
-// which is of the form name<address>
-// ----------------------------------------------------------------------------
-void CCsMsgPluginUtility::NameAndAddress( const TPtrC& 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
-        }
-    }
-
-// ---------------------------------------------------------
-// CCsMsgPluginUtility::PureAddress
-// Extract the phone number for MMS
-// ---------------------------------------------------------
-//
-TPtrC CCsMsgPluginUtility::PureAddress( const TDesC& aAddress )
-    {
-    _LIT( KOpen, "<" );
-    _LIT( KClose, ">" );
-	
-    // syntax is :
-    // <alias><separator1><pure_address><separator2> |
-    // <pure_address>
-    TInt firstPos = 0;
-    TInt lastPos = 0;
-    TInt length = aAddress.Length();
-    TInt sepaLen1 = KOpen().Length();
-    TInt sepaLen2 = KClose().Length();
-    TInt firstSeparatorPosition = 0;
-
-    while( firstSeparatorPosition >= 0 )
-        {
-        firstSeparatorPosition = aAddress.Mid( firstPos ).Find( KOpen );
-        if ( firstSeparatorPosition >= 0 )
-            {
-            firstPos += firstSeparatorPosition + sepaLen1;
-            }
-        }
-    if ( firstPos <= 0 )
-        {
-        // No alias
-        return aAddress;
-        }
-
-    // Check if the second separator ends the address
-    TPtrC last = aAddress.Right( sepaLen2 );
-    lastPos = length - sepaLen2;
-
-    if ( !last.Compare( KClose ) )
-        {
-        // Alias part found
-        if ( lastPos > firstPos )
-            {
-            return aAddress.Mid( firstPos, lastPos - firstPos );
-            }
-        }
-    // No alias defined - return the original string as pure address
-    // If syntax is weird, namely 
-    // alias <>
-    // with nothing between the separators, we return the original string as is
-    return aAddress;
-    }
-
-//End of File