creator/engine/src/creator_phonebook.cpp
changeset 28 4cc0d1a608c1
parent 27 271e901a9423
child 29 1c71b77fbc93
equal deleted inserted replaced
27:271e901a9423 28:4cc0d1a608c1
    22 
    22 
    23 #include "creator_phonebook.h" 
    23 #include "creator_phonebook.h" 
    24 #include "creator_traces.h"
    24 #include "creator_traces.h"
    25 
    25 
    26 #include <bautils.h> 
    26 #include <bautils.h> 
    27 #include <qpixmap>
    27 //#include <qpixmap>
    28 
    28 
    29 //#include <QDebug>
    29 //#include <QDebug>
    30 _LIT(KTempPath, "C:\\Data\\Creator\\");
    30 _LIT(KTempPath, "C:\\Data\\Creator\\");
    31 
    31 
    32 
    32 
   360     LOGSTRING("Creator: CCreatorPhonebook::HasOtherThanGroupsL");
   360     LOGSTRING("Creator: CCreatorPhonebook::HasOtherThanGroupsL");
   361     TBool result( EFalse );
   361     TBool result( EFalse );
   362     return result;
   362     return result;
   363     }
   363     }
   364 
   364 
   365 QContactDetail CCreatorPhonebook::CreateContactDetail(QString aDetail, QString aFieldContext, QString aFieldString, TInt aRand )
   365 
   366 	{
       
   367 	QContactDetail contactDetail;
       
   368 	TPtrC contentData;
       
   369 	if( aDetail == QContactPhoneNumber::DefinitionName)
       
   370 		{
       
   371 		QContactPhoneNumber phoneNumber;// = contactDetail;
       
   372 		if(!aFieldContext.isEmpty())
       
   373 		   	{
       
   374 			phoneNumber.setContexts(aFieldContext);
       
   375 			}
       
   376 		phoneNumber.setSubTypes(aFieldString);
       
   377 		contentData.Set(iEngine->RandomString((CCreatorEngine::TRandomStringType) aRand));
       
   378 		QString number = QString::fromUtf16(contentData.Ptr(),contentData.Length());
       
   379 		phoneNumber.setNumber(number);
       
   380 		return phoneNumber;
       
   381 		}
       
   382 	else if( aDetail == QContactName::DefinitionName )			//--Contact NAME-----------------------------
       
   383 		{
       
   384 		QContactName contactName;
       
   385 		for(int i = 0 ; i < iParameters->iContactFields.count() ; i++ ) //go through all contact details to check if there is already Contact Name to set other details
       
   386 			{
       
   387 			if(iParameters->iContactFields.at(i).definitionName() == QContactName::DefinitionName )
       
   388 				{
       
   389 				contactName = iParameters->iContactFields.at(i);
       
   390 				}
       
   391 			}
       
   392 		contentData.Set(iEngine->RandomString((CCreatorEngine::TRandomStringType) aRand));
       
   393 		QString name = QString::fromUtf16(contentData.Ptr(),contentData.Length());
       
   394 		if(aFieldString == QContactName::FieldFirstName)
       
   395 			{
       
   396 			if(contactName.firstName().isEmpty())
       
   397 				{
       
   398 				contactName.setFirstName( name );
       
   399 				}
       
   400 			}
       
   401 		else if(aFieldString == QContactName::FieldLastName)
       
   402 			{
       
   403 			if(contactName.lastName().isEmpty())
       
   404 				{
       
   405 				contactName.setLastName( name );
       
   406 				}
       
   407 			}
       
   408 		else if(aFieldString == QContactName::FieldMiddleName)
       
   409 			{
       
   410 			if(contactName.middleName().isEmpty())
       
   411 				{
       
   412 				contactName.setMiddleName( name );
       
   413 				}
       
   414 			}
       
   415 		else if(aFieldString == QContactName::FieldPrefix)
       
   416 			{
       
   417 			if(contactName.prefix().isEmpty())
       
   418 				{
       
   419 				contactName.setPrefix( name );
       
   420 				}
       
   421 			}
       
   422 		else if(aFieldString == QContactName::FieldSuffix)
       
   423 			{
       
   424 			if(contactName.suffix().isEmpty())
       
   425 				{
       
   426 				contactName.setSuffix( name );
       
   427 				}
       
   428 			}
       
   429 		else		//QContactName::FieldCustomLabel:
       
   430 			{
       
   431 			if(contactName.customLabel().isEmpty())
       
   432 				{
       
   433 				contactName.setCustomLabel( name );
       
   434 				}
       
   435 			}
       
   436 		return contactName;
       
   437 		}
       
   438 	else if( aDetail == QContactOrganization::DefinitionName )			//--Contact Company-----------------------------
       
   439 		{
       
   440 		QContactOrganization contactCompany;
       
   441 		
       
   442 		for(int i = 0 ; i < iParameters->iContactFields.count() ; i++ ) //go through all contact details to check if there is already Contact Name to set other details
       
   443 			{
       
   444 			if(iParameters->iContactFields.at(i).definitionName() == QContactOrganization::DefinitionName )
       
   445 				{
       
   446 				contactCompany = iParameters->iContactFields.at(i);
       
   447 				}
       
   448 			}
       
   449 		contentData.Set(iEngine->RandomString((CCreatorEngine::TRandomStringType) aRand));
       
   450 		QString company = QString::fromUtf16(contentData.Ptr(),contentData.Length());
       
   451 		if(aFieldString == QContactOrganization::FieldName)
       
   452 			{
       
   453 			if(contactCompany.name().isEmpty())
       
   454 				{
       
   455 				contactCompany.setName( company );
       
   456 				}
       
   457 			}
       
   458 		if(aFieldString == QContactOrganization::FieldTitle)
       
   459 			{
       
   460 			if(contactCompany.title().isEmpty())
       
   461 				{
       
   462 				contactCompany.setTitle( company );
       
   463 				}
       
   464 			}
       
   465 		if(aFieldString == QContactOrganization::FieldDepartment)
       
   466 			{
       
   467 				QStringList depList = contactCompany.department();
       
   468 				depList.append(company);
       
   469 				contactCompany.setDepartment(depList);
       
   470 			}
       
   471 		if(aFieldString == QContactOrganization::FieldAssistantName)
       
   472 			{
       
   473 			if(contactCompany.assistantName().isEmpty())
       
   474 				{
       
   475 				contactCompany.setAssistantName( company );
       
   476 				}
       
   477 			}
       
   478 		return contactCompany;
       
   479 		}
       
   480 	else if( aDetail == QContactAddress::DefinitionName )			//--Contact Address-----------------------------
       
   481 			{
       
   482 			QContactAddress contactAddress;
       
   483 			
       
   484 			for(int i = 0 ; i < iParameters->iContactFields.count() ; i++ ) //go through all contact details to check if there is already Contact Name to set other details
       
   485 				{
       
   486 				if(iParameters->iContactFields.at(i).definitionName() == QContactAddress::DefinitionName && iParameters->iContactFields.at(i).value(QContactDetail::FieldContext) == aFieldContext )
       
   487 					{
       
   488 					contactAddress = iParameters->iContactFields.at(i);
       
   489 					}
       
   490 				}
       
   491 			
       
   492 			contactAddress.setContexts( aFieldContext );
       
   493 			
       
   494 			contentData.Set(iEngine->RandomString((CCreatorEngine::TRandomStringType) aRand));
       
   495 			QString address = QString::fromUtf16(contentData.Ptr(),contentData.Length());
       
   496 			if(aFieldString == QContactAddress::FieldStreet )
       
   497 				{
       
   498 				if( contactAddress.street().isEmpty() )
       
   499 					{
       
   500 					contactAddress.setStreet( address );
       
   501 					}
       
   502 				}
       
   503 			else if(aFieldString == QContactAddress::FieldLocality )
       
   504 				{
       
   505 				if( contactAddress.locality().isEmpty() )
       
   506 					{
       
   507 					contactAddress.setLocality( address );
       
   508 					}
       
   509 				}
       
   510 			else if(aFieldString == QContactAddress::FieldRegion )
       
   511 				{
       
   512 				if( contactAddress.region().isEmpty() )
       
   513 					{
       
   514 					contactAddress.setRegion( address );
       
   515 					}
       
   516 				}
       
   517 			else if(aFieldString == QContactAddress::FieldPostcode )
       
   518 				{
       
   519 				if( contactAddress.postcode().isEmpty() )
       
   520 					{
       
   521 					contactAddress.setPostcode( address );
       
   522 					}
       
   523 				}
       
   524 			else if(aFieldString == QContactAddress::FieldCountry )
       
   525 				{
       
   526 				if( contactAddress.country().isEmpty() )
       
   527 					{
       
   528 					contactAddress.setCountry( address );
       
   529 					}
       
   530 				}
       
   531 			else 
       
   532 				{
       
   533 				return contactDetail;
       
   534 				}
       
   535 			return contactAddress;
       
   536 			}
       
   537 	else if( aDetail == QContactNote::DefinitionName )			//--Contact Note-----------------------------
       
   538 				{
       
   539 				QContactNote contactNote;
       
   540 				contentData.Set(iEngine->RandomString((CCreatorEngine::TRandomStringType) aRand));
       
   541 				QString note = QString::fromUtf16(contentData.Ptr(),contentData.Length());
       
   542 				contactNote.setNote(note);
       
   543 				return contactNote;
       
   544 				}
       
   545 	else if( aDetail == QContactFamily::DefinitionName )			//--Contact Family-----------------------------
       
   546 				{
       
   547 				QContactFamily contactFamily;
       
   548 				
       
   549 				for(int i = 0 ; i < iParameters->iContactFields.count() ; i++ ) //go through all contact details to check if there is already Contact Name to set other details
       
   550 					{
       
   551 					if(iParameters->iContactFields.at(i).definitionName() == QContactFamily::DefinitionName && iParameters->iContactFields.at(i).value(QContactDetail::FieldContext) == aFieldContext )
       
   552 						{
       
   553 						contactFamily = iParameters->iContactFields.at(i);
       
   554 						}
       
   555 					}
       
   556 				contentData.Set(iEngine->RandomString((CCreatorEngine::TRandomStringType) aRand));
       
   557 				QString familyData = QString::fromUtf16(contentData.Ptr(),contentData.Length());
       
   558 				if(aFieldString == QContactFamily::FieldSpouse )
       
   559 					{
       
   560 					if( contactFamily.spouse().isEmpty() )
       
   561 						{
       
   562 						contactFamily.setSpouse( familyData );
       
   563 						}
       
   564 					}
       
   565 				if(aFieldString == QContactFamily::FieldChildren )
       
   566 					{
       
   567 						QStringList children = contactFamily.children();
       
   568 						children.append( familyData );
       
   569 						contactFamily.setChildren( children );
       
   570 					}
       
   571 				
       
   572 				return contactFamily;
       
   573 				}
       
   574 	
       
   575 	if( aDetail == QContactAvatar::DefinitionName)						//--Contact Picture-----------------------------
       
   576 			{
       
   577 			RFs& fs = CCoeEnv::Static()->FsSession();
       
   578 			QContactAvatar contactAvatar;
       
   579 			TBuf<KMaxFileName> srcPath;
       
   580 			iEngine->RandomPictureFileL(srcPath);
       
   581 			TBuf<KMaxFileName> destPath(KTempPath);
       
   582 						
       
   583 			if(!BaflUtils::FolderExists( fs, destPath ))
       
   584 				{
       
   585 				BaflUtils::EnsurePathExistsL( fs, destPath );
       
   586 				}
       
   587 			
       
   588 			TInt err=BaflUtils::CopyFile( fs, srcPath, destPath );
       
   589 
       
   590 			TParse temp;
       
   591 			temp.Set( srcPath,NULL,NULL );
       
   592 			destPath.Append(temp.NameAndExt());
       
   593 			
       
   594 			QString avatarFile = QString::fromUtf16( destPath.Ptr(),destPath.Length() );
       
   595 			
       
   596 			QPixmap avatarPix(avatarFile);
       
   597 
       
   598 			contactAvatar.setAvatar(avatarFile);
       
   599             contactAvatar.setPixmap(avatarPix);
       
   600 
       
   601 			return contactAvatar;
       
   602 			}
       
   603 	if( aDetail == QContactAnniversary::DefinitionName)
       
   604 			{
       
   605 			QContactAnniversary contactAnniversary;
       
   606 			QDate date;
       
   607 			TTime datetime = iEngine->RandomDate( CCreatorEngine::EDateFuture );
       
   608 			date.setDate( datetime.DateTime().Year(),(int) (datetime.DateTime().Month()+1), datetime.DateTime().Day() );
       
   609 			contactAnniversary.setOriginalDate( date );
       
   610 			return contactAnniversary;
       
   611 			}
       
   612 			
       
   613 
       
   614 
       
   615 	
       
   616 	
       
   617 	return contactDetail;
       
   618 	}
       
   619 //----------------------------------------------------------------------------
   366 //----------------------------------------------------------------------------
   620 
   367 
   621 
   368 
   622 //----------------------------------------------------------------------------
   369 //----------------------------------------------------------------------------
   623 void CCreatorPhonebook::StoreLinksForDeleteL( RArray<TUint32>& aLinks, TUid aStoreUid )
   370 void CCreatorPhonebook::StoreLinksForDeleteL( RArray<TUint32>& aLinks, TUid aStoreUid )
   709                     { 
   456                     { 
   710 //    				QContactDetail field = CreateContactDetail( CreatorPbkMiscTextFields[tfIndex].iDetail, CreatorPbkMiscTextFields[tfIndex].iFieldContext, CreatorPbkMiscTextFields[tfIndex].iFieldString, CreatorPbkMiscTextFields[tfIndex].iRandomType );
   457 //    				QContactDetail field = CreateContactDetail( CreatorPbkMiscTextFields[tfIndex].iDetail, CreatorPbkMiscTextFields[tfIndex].iFieldContext, CreatorPbkMiscTextFields[tfIndex].iFieldString, CreatorPbkMiscTextFields[tfIndex].iRandomType );
   711     				
   458     				
   712     				CCreatorContactField* field = CCreatorContactField::NewL();
   459     				CCreatorContactField* field = CCreatorContactField::NewL();
   713 	                CleanupStack::PushL( field );
   460 	                CleanupStack::PushL( field );
   714 	                QContactDetail cntDetail = field->CreateContactDetail(iEngine,iParameters,CreatorPbkMiscTextFields[tfIndex].iDetail, CreatorPbkMiscTextFields[tfIndex].iFieldContext, CreatorPbkMiscTextFields[tfIndex].iFieldString, CreatorPbkMiscTextFields[tfIndex].iRandomType );
   461 	                QContactDetail cntDetail = field->CreateContactDetailL(iEngine,iParameters,CreatorPbkMiscTextFields[tfIndex].iDetail, CreatorPbkMiscTextFields[tfIndex].iFieldContext, CreatorPbkMiscTextFields[tfIndex].iFieldString, CreatorPbkMiscTextFields[tfIndex].iRandomType );
   715   	                if(!cntDetail.isEmpty())
   462   	                if(!cntDetail.isEmpty())
   716   	                	{
   463   	                	{
   717   						field->AddFieldToParam( iParameters, cntDetail ); //it will do "param->iContactFields.AppendL(field);"
   464   						field->AddFieldToParam( iParameters, cntDetail ); //it will do "param->iContactFields.AppendL(field);"
   718   	                	}
   465   	                	}
   719   	                CleanupStack::Pop( field );
   466   	                CleanupStack::Pop( field );
   720                     }
   467                     }
   721 		// Add binary fields:
   468 		// Add binary fields:
   722 		TPtrC emptyData;
   469 		TPtrC emptyData;
   723 		CCreatorContactField* fieldPicture = CCreatorContactField::NewL();
   470 		CCreatorContactField* fieldPicture = CCreatorContactField::NewL();
   724 		CleanupStack::PushL( fieldPicture );
   471 		CleanupStack::PushL( fieldPicture );
   725 		QContactDetail cntDetail = fieldPicture->CreateContactDetail(iEngine,iParameters,QContactAvatar::DefinitionName,"","",emptyData );
   472 		QContactDetail cntDetail = fieldPicture->CreateContactDetailL(iEngine,iParameters,QContactAvatar::DefinitionName,"","",emptyData );
   726 		if(!cntDetail.isEmpty())
   473 		if(!cntDetail.isEmpty())
   727 		  	{
   474 		  	{
   728 		fieldPicture->AddFieldToParam( iParameters, cntDetail ); //it will do "param->iContactFields.AppendL(field);"
   475 		fieldPicture->AddFieldToParam( iParameters, cntDetail ); //it will do "param->iContactFields.AppendL(field);"
   729 		  	}
   476 		  	}
   730 		CleanupStack::Pop( fieldPicture );
   477 		CleanupStack::Pop( fieldPicture );
   731 		
   478 		
   732 		// Add date-time fields:
   479 		// Add date-time fields:
   733 		CCreatorContactField* fieldAnniv = CCreatorContactField::NewL();
   480 		CCreatorContactField* fieldAnniv = CCreatorContactField::NewL();
   734 		CleanupStack::PushL( fieldAnniv );
   481 		CleanupStack::PushL( fieldAnniv );
   735 		QContactDetail cntDetAnniv = fieldAnniv->CreateContactDetail(iEngine,iParameters,QContactAnniversary::DefinitionName,"","",emptyData );
   482 		QContactDetail cntDetAnniv = fieldAnniv->CreateContactDetailL(iEngine,iParameters,QContactAnniversary::DefinitionName,"","",emptyData );
   736 		if(!cntDetAnniv .isEmpty())
   483 		if(!cntDetAnniv .isEmpty())
   737 		  	{
   484 		  	{
   738 			fieldAnniv->AddFieldToParam( iParameters, cntDetAnniv ); //it will do "param->iContactFields.AppendL(field);"
   485 			fieldAnniv->AddFieldToParam( iParameters, cntDetAnniv ); //it will do "param->iContactFields.AppendL(field);"
   739 			}
   486 			}
   740 		CleanupStack::Pop( fieldAnniv );
   487 		CleanupStack::Pop( fieldAnniv );
   780     // URLs:
   527     // URLs:
   781     for( int i=0; i<iNumberOfURLFields; i++ )
   528     for( int i=0; i<iNumberOfURLFields; i++ )
   782         {
   529         {
   783     	CCreatorContactField* fieldUrl = CCreatorContactField::NewL();
   530     	CCreatorContactField* fieldUrl = CCreatorContactField::NewL();
   784     	CleanupStack::PushL( fieldUrl );
   531     	CleanupStack::PushL( fieldUrl );
   785     	QContactDetail cntDetUrl = fieldUrl->CreateContactDetail(iEngine,iParameters,QContactUrl::DefinitionName,"","",KErrNotFound );
   532     	QContactDetail cntDetUrl = fieldUrl->CreateContactDetailL(iEngine,iParameters,QContactUrl::DefinitionName,"","",KErrNotFound );
   786     	if(!cntDetUrl.isEmpty())
   533     	if(!cntDetUrl.isEmpty())
   787     	  	{
   534     	  	{
   788 			fieldUrl->AddFieldToParam( iParameters, cntDetUrl ); //it will do "param->iContactFields.AppendL(field);"
   535 			fieldUrl->AddFieldToParam( iParameters, cntDetUrl ); //it will do "param->iContactFields.AppendL(field);"
   789     	  	}
   536     	  	}
   790     	CleanupStack::Pop( fieldUrl );
   537     	CleanupStack::Pop( fieldUrl );
   794     // EMail addresses:
   541     // EMail addresses:
   795     for( int i=0; i<iNumberOfEmailAddressFields; i++ )
   542     for( int i=0; i<iNumberOfEmailAddressFields; i++ )
   796         	{
   543         	{
   797 			CCreatorContactField* fieldEmail = CCreatorContactField::NewL();
   544 			CCreatorContactField* fieldEmail = CCreatorContactField::NewL();
   798         	CleanupStack::PushL( fieldEmail );
   545         	CleanupStack::PushL( fieldEmail );
   799         	QContactDetail cntDetEmail = fieldEmail->CreateContactDetail(iEngine,iParameters,QContactEmailAddress::DefinitionName,"","",KErrNotFound );
   546         	QContactDetail cntDetEmail = fieldEmail->CreateContactDetailL(iEngine,iParameters,QContactEmailAddress::DefinitionName,"","",KErrNotFound );
   800         	if(!cntDetEmail.isEmpty())
   547         	if(!cntDetEmail.isEmpty())
   801         	  	{
   548         	  	{
   802 				fieldEmail->AddFieldToParam( iParameters, cntDetEmail ); //it will do "param->iContactFields.AppendL(field);"
   549 				fieldEmail->AddFieldToParam( iParameters, cntDetEmail ); //it will do "param->iContactFields.AppendL(field);"
   803         	  	}
   550         	  	}
   804         	CleanupStack::Pop( fieldEmail );
   551         	CleanupStack::Pop( fieldEmail );
   978     }
   725     }
   979 void CCreatorContactField::ConstructL()
   726 void CCreatorContactField::ConstructL()
   980     {
   727     {
   981     //pImpl = CCreatorContactTextField::NewL(aFieldType, aData); 
   728     //pImpl = CCreatorContactTextField::NewL(aFieldType, aData); 
   982     }
   729     }
   983 QContactDetail CCreatorContactField::CreateContactDetail(CCreatorEngine* aEngine,CPhonebookParameters* aParameters,QString aDetail, QString aFieldContext, QString aFieldString, TInt aRand )
   730 QContactDetail CCreatorContactField::CreateContactDetailL(CCreatorEngine* aEngine,CPhonebookParameters* aParameters,QString aDetail, QString aFieldContext, QString aFieldString, TInt aRand )
   984     {
   731     {
   985 	QContactDetail emptyDet;
   732 	QContactDetail emptyDet;
   986     TPtrC contentData;
   733     TPtrC contentData;
   987     HBufC16* tempData = 0;
   734     HBufC16* tempData = 0;
   988     if(aRand == KErrNotFound)
   735     if(aRand == KErrNotFound)
  1020 		else
   767 		else
  1021 			{
   768 			{
  1022 			return emptyDet;
   769 			return emptyDet;
  1023 			}
   770 			}
  1024     	}
   771     	}
  1025     emptyDet = CreateContactDetail( aEngine, aParameters, aDetail, aFieldContext, aFieldString, contentData );
   772     emptyDet = CreateContactDetailL( aEngine, aParameters, aDetail, aFieldContext, aFieldString, contentData );
  1026     if( tempData )
   773     if( tempData )
  1027     	{
   774     	{
  1028 		CleanupStack::PopAndDestroy( tempData );
   775 		CleanupStack::PopAndDestroy( tempData );
  1029     	}
   776     	}
  1030     return emptyDet;
   777     return emptyDet;
  1031     }
   778     }
  1032 
   779 
  1033 QContactDetail CCreatorContactField::CreateContactDetail(CCreatorEngine* aEngine,CPhonebookParameters* aParameters,QString aDetail, QString aFieldContext, QString aFieldString, TPtrC aData )
   780 QContactDetail CCreatorContactField::CreateContactDetailL(CCreatorEngine* aEngine,CPhonebookParameters* aParameters,QString aDetail, QString aFieldContext, QString aFieldString, TPtrC aData )
  1034     {
   781     {
  1035     QContactDetail contactDetail;
   782     QContactDetail contactDetail;
  1036         
   783         
  1037         if( aDetail == QContactPhoneNumber::DefinitionName)
   784         if( aDetail == QContactPhoneNumber::DefinitionName)
  1038             {
   785             {
  1256                 temp.Set( srcPath,NULL,NULL );
  1003                 temp.Set( srcPath,NULL,NULL );
  1257                 destPath.Append(temp.NameAndExt());
  1004                 destPath.Append(temp.NameAndExt());
  1258                 
  1005                 
  1259                 QString avatarFile = QString::fromUtf16( destPath.Ptr(),destPath.Length() );
  1006                 QString avatarFile = QString::fromUtf16( destPath.Ptr(),destPath.Length() );
  1260                 
  1007                 
  1261                 QPixmap avatarPix(avatarFile);
  1008                 //QPixmap avatarPix(avatarFile);
  1262 
  1009 
  1263                 contactAvatar.setAvatar(avatarFile);
  1010                 contactAvatar.setAvatar(avatarFile);
  1264                 contactAvatar.setPixmap(avatarPix);
  1011                 //contactAvatar.setPixmap(avatarPix);
  1265 
  1012 
  1266                 return contactAvatar;
  1013                 return contactAvatar;
  1267                 }
  1014                 }
  1268         if( aDetail == QContactAnniversary::DefinitionName) //--Anniversary------------------------------
  1015         if( aDetail == QContactAnniversary::DefinitionName) //--Anniversary------------------------------
  1269                 {
  1016                 {