mmsharing/mmshui/src/musuicontactutil.cpp
branchRCL_3
changeset 22 73a1feb507fb
parent 21 33a5d2bbf6fc
child 23 bc78a40cd63c
--- a/mmsharing/mmshui/src/musuicontactutil.cpp	Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,388 +0,0 @@
-/*
-* Copyright (c) 2006 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 "musuicontactutil.h"
-#include "musuidefinitions.h"
-#include "muslogger.h"
-#include "musenguriparser.h"
-#include "musuid.hrh"
-
-#include <RPbkViewResourceFile.h>         // Phonebook view resource
-#include <CPbkContactEditorDlg.h>
-#include <CPbkFieldsInfo.h>
-#include <TPbkContactItemField.h>
-
-#include <cntdb.h>
-#include <cntitem.h>
-#include <cntfield.h>
-#include <cntdef.h>
-#include <cntfldst.h>
-#include <CPbkContactEngine.h>
-#include <apgtask.h>
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool MusUiContactUtil::ShareViewFieldExistsL( CCoeEnv& aEnv, TInt aContactId )
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> MusUiContactUtil::ShareViewFieldExistsL" );
-
-    TBool ret( EFalse );
-
-    RPbkViewResourceFile pbkResourceFile( aEnv );
-    CleanupClosePushL( pbkResourceFile );
-    pbkResourceFile.OpenL();
-    CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL();
-    CleanupStack::PushL( pbkContactEngine );
-    CPbkContactItem* contactItem = NULL;
-    CleanupStack::PushL( contactItem );
-    if ( aContactId > 0 )
-        {
-        contactItem = pbkContactEngine->OpenContactL( aContactId );
-        if ( contactItem->FindField( EPbkFieldIdShareView ) )
-            {
-            MUS_LOG( "mus: [MUSUI ]  EPbkFieldIdShareView found!!" );
-            ret = ETrue;
-            }
-        else if ( contactItem->FindField( EPbkFieldIdSIPID ) )
-            {
-            MUS_LOG( "mus: [MUSUI ]  EPbkFieldIdSIPID found, NOT EPbkFieldIdShareView defined!!!" );
-            ret = ETrue;
-            }
-        else
-            {
-            ret = EFalse;
-            }
-        }
-    else
-        {
-        ret = EFalse;
-        }
-    CleanupStack::PopAndDestroy( 3 );   // contactItem, pbkContactEngine, &pbkResourceFile    
-    MUS_LOG( "mus: [MUSUI ]  <- MusUiContactUtil::ShareViewFieldExistsL" );
-    return ret;
-
-    }
-    
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool MusUiContactUtil::CheckPbContactForVSAddressesL(	CCoeEnv& aEnv,
-														const TDesC& aOriginator,
-														TInt aContactId)
-{
-	MUS_LOG( "mus: [MUSUI ]  -> MusUiContactUtil::CheckPbContactForVSAddressesL" );
-	
-	TBool sipAddrMatches(EFalse);
-	TBool shareViewAddrMatches(EFalse);
-	TBool ret(EFalse);
-	
-	if(MatchTextWithPbFieldsL(aEnv, EPbkFieldIdSIPID, aOriginator, aContactId))
-    	{
-    	sipAddrMatches=ETrue;	
-    	}
-	if(MatchTextWithPbFieldsL(aEnv, EPbkFieldIdShareView, aOriginator, aContactId))
-	    {
-	    shareViewAddrMatches=ETrue;	
-    	}
-	
-	if(aOriginator.Find(KMusPrefixSipUri) != KErrNotFound)
-	    {
-    	//pb field without sip:-prefix are checked.
-    	HBufC * withoutPrefix;
-    	withoutPrefix = HBufC::NewLC(aOriginator.Length());
-    	*withoutPrefix = aOriginator;
-    	TPtr ptr = withoutPrefix->Des();
-    	ptr.Delete(0,KMusPrefixMaxLength);
-	
-    	if(MatchTextWithPbFieldsL(aEnv, EPbkFieldIdSIPID, *withoutPrefix, aContactId))
-        	{
-        	sipAddrMatches=ETrue;	
-        	}
-    	if(MatchTextWithPbFieldsL(aEnv, EPbkFieldIdShareView, *withoutPrefix, aContactId))
-        	{
-        	shareViewAddrMatches=ETrue;	
-        	}
-    	
-    	CleanupStack::PopAndDestroy(withoutPrefix);
-	    }
-        
-    if(sipAddrMatches||shareViewAddrMatches)
-        {
-        ret=ETrue;	
-        }
-    else
-        {
-        ret=EFalse;	
-        }
-    
-	MUS_LOG( "mus: [MUSUI ]  -> MusUiContactUtil::CheckPbContactForVSAddressesL" );
-	return ret;
-}
-// -----------------------------------------------------------------------------
-// @function MatchTextWithPbFieldsL 
-// searches all contactId´s fieldIds of same type for a text
-// returns ETrue if text is found from at least one of them.   
-// -----------------------------------------------------------------------------
-//
-TBool MusUiContactUtil::MatchTextWithPbFieldsL( CCoeEnv& aEnv,
-											   TPbkFieldId aFieldId,
-											   const TDesC& aText,
-											   TInt aContactId )
-{
-	MUS_LOG( "mus: [MUSUI ]  -> MusUiContactUtil::MatchTextWithPbFieldsL" );
-	
-	TBool textMatch(EFalse);
-	
-	RPbkViewResourceFile pbkResourceFile(aEnv);
-	CleanupClosePushL( pbkResourceFile );
-    pbkResourceFile.OpenL();
-	CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL();
-    CleanupStack::PushL( pbkContactEngine );
-	CPbkContactItem* contactItem = NULL;
-    CleanupStack::PushL( contactItem );
-
-	if ( aContactId > 0 )
-        {
-		contactItem = pbkContactEngine->OpenContactL( aContactId );	
-     	
-     	TInt index(0);
-  
-       		while(index!=KErrNotFound)
-       			{
-       			TPbkContactItemField* contactItemField = 
-       								contactItem->FindField( aFieldId, index );
-			        
-			    if( contactItemField )
-			    	{
-				    if( contactItemField->Text() == aText && !textMatch )
-				    	{
-				    	textMatch=ETrue;	
-				    	}
-				   	}
-
-				if( index != KErrNotFound ) 
-					{
-					index++;	       	
-					}
-	       		}
-	       		
-		}
-
-	CleanupStack::PopAndDestroy( 3 );   // contactItem, pbkContactEngine, &pbkResourceFile    
-
-	MUS_LOG( "mus: [MUSUI ] <- MusUiContactUtil::MatchTextWithPbFieldsL" );
-	return textMatch;
-		
-}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiContactUtil::ActivateContactViewL( CCoeEnv& aEnv, 
-                                             TContactItemId aId, 
-                                             const TDesC& aTypedAddress, 
-                                             const TDesC& aMusTelNumberValue )
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> MusUiContactUtil::ActivateContactViewL" );
-    RPbkViewResourceFile pbkResourceFile( aEnv );
-    CleanupClosePushL( pbkResourceFile );
-    pbkResourceFile.OpenL();
-    CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL();
-    CleanupStack::PushL( pbkContactEngine );
-    
-    CPbkContactItem* contactItem = NULL;
-    CleanupStack::PushL( contactItem );
-    
-    if ( aId > 0 )
-        {
-        MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::ActivateContactViewL\
-                  TContactItemId > 0 => Opening Existing Contact..." );
-        contactItem = pbkContactEngine->OpenContactL( aId );
-        EditContactL( *contactItem, 
-                      EFalse, 
-                      pbkContactEngine, 
-                      aTypedAddress, 
-                      aMusTelNumberValue, 
-                      aId );
-        }
-    else
-        {
-        MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::ActivateContactViewL\
-                  TContactItemId < 1 => Creating new Contact..." );
-        contactItem = pbkContactEngine->CreateEmptyContactL();
-        EditContactL( *contactItem, 
-                      ETrue, 
-                      pbkContactEngine, 
-                      aTypedAddress, 
-                      aMusTelNumberValue, 
-                      aId );
-        }
-
-    CleanupStack::PopAndDestroy( 3 );   // contactItem, pbkContactEngine, &pbkResourceFile
-    MUS_LOG( "mus: [MUSUI ]  <- MusUiContactUtil::ActivateContactViewL" );
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void MusUiContactUtil::EditContactL( CPbkContactItem& aContact,
-                                     TBool aNewOne,
-                                     CPbkContactEngine* aPbkContactEngine,
-                                     const TDesC& aTypedAddress,
-                                     const TDesC& aMusTelNumberValue,
-                                     TContactItemId aContactId )
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> MusUiContactUtil::EditContactL" );
-
-    TMusEngUriParser parser( aTypedAddress );
-    parser.ParseUriL();
-    HBufC* uri = NULL;
-    CleanupStack::PushL( uri );
-
-    CContactTextField* addressField = NULL;
-    CleanupStack::PushL( addressField );
-
-    if ( parser.UriType() == TMusEngUriParser::ESip )
-        {
-        MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditContactL\
-                                parser.UriType() == TMusEngUriParser::ESip" );
-        addressField = EditableContactFieldL(
-                            aContact,
-                            EPbkFieldIdShareView,
-                            aPbkContactEngine );
-        uri = parser.GetUri16L( ETrue );
-        }
-    else if ( parser.UriType() == TMusEngUriParser::ETel )
-        {
-        MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditContactL\
-                                parser.UriType() == TMusEngUriParser::ETel" );
-        addressField = EditableContactFieldL(
-                            aContact,
-                            EPbkFieldIdPhoneNumberMobile,
-                            aPbkContactEngine );
-        uri = parser.GetUri16L( EFalse );
-        }
-
-    if ( addressField )
-        {
-        MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditContactL\
-                                addressField OK" );
-        addressField->SetTextL( *uri );
-        }
-
-    if ( ( aMusTelNumberValue.Length() > 0 ) && aContactId == KErrNotFound )
-        {
-        MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditContactL\
-                                !iPhoneNumberFieldFound" );
-        CContactTextField* phoneNumberField = EditableContactFieldL(
-                                aContact,
-                                EPbkFieldIdPhoneNumberMobile,
-                                aPbkContactEngine );
-        if ( phoneNumberField )
-            {
-            MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditContactL\
-                                    phoneNumberField OK" );
-            phoneNumberField->SetTextL( aMusTelNumberValue );
-            }
-        }
-
-    MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditContactL: Creating dialog..." );
-
-    // Bring MuSh UI foreground
-    RWsSession wsSession;
-    User::LeaveIfError( wsSession.Connect() );
-    CleanupClosePushL( wsSession );
-    TApaTaskList taskList( wsSession );
-    TUid appUid;
-    appUid.iUid = KMusUiUid;
-    TApaTask task = taskList.FindApp( appUid );
-    task.BringToForeground();
-    CleanupStack::PopAndDestroy( &wsSession );
-    
-    // Launch pbk new entry editor dlg
-    CPbkContactEditorDlg* editorDlg =  CPbkContactEditorDlg::NewL(
-                            *aPbkContactEngine,
-                            aContact,
-                            aNewOne,
-                            -1, // Move focus to the topmost field
-                            ETrue );
-    editorDlg->ResetWhenDestroyed( &editorDlg );
-    editorDlg->HideExitCommand();
-    editorDlg->ExecuteLD();
-    
-    CleanupStack::Pop( 2 );   // uri, addressField
-
-    MUS_LOG( "mus: [MUSUI ]  <- MusUiContactUtil::EditContactL" );
-    }
-
-
-// -----------------------------------------------------------------------------
-// Get editable contact field.
-// -----------------------------------------------------------------------------
-//
-CContactTextField* MusUiContactUtil::EditableContactFieldL(
-                        CPbkContactItem& aContact,
-                        TInt aFieldId,
-                        CPbkContactEngine* aPbkContactEngine )
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> MusUiContactUtil::EditableContactFieldL" );
-
-    // Get fields info from pbk engine
-    const CPbkFieldsInfo& fieldsInfo = aPbkContactEngine->FieldsInfo();
-
-    // Try to get the SIP URI storage field for this contact
-    TPbkContactItemField* itemField = aContact.FindField( aFieldId );
-
-    if ( !itemField )
-        {
-        MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditableContactFieldL: !itemField" );
-        CPbkFieldInfo* fieldInfo = fieldsInfo.Find( aFieldId );
-        // Add field to this contact
-        if ( fieldInfo )
-            {
-            MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditableContactFieldL\
-                            fieldInfo OK" );
-            // Contact takes ownership of the field.
-            aContact.AddFieldL( *fieldInfo );
-            itemField = aContact.FindField( aFieldId );
-            return ( itemField ) ? itemField->TextStorage() : NULL;
-            }
-        else
-            {
-            MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditableContactFieldL\
-                            fieldInfo == NULL" );
-            return NULL;
-            }
-        }
-    else
-        {
-        // Does not pass ownership.
-        MUS_LOG( "mus: [MUSUI ]     MusUiContactUtil::EditableContactFieldL\
-                        itemField OK" );
-        return itemField->TextStorage();
-        }
-    }
-
-
-// end of file