diff -r 2a11b5b00470 -r fd64c38c277d phonebookui/pbkcommonui/src/cntfavourite.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/pbkcommonui/src/cntfavourite.cpp Thu May 27 12:45:19 2010 +0300 @@ -0,0 +1,116 @@ +/* +* 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: +* +*/ +#include "cntfavourite.h" + +QContactLocalId CntFavourite::createFavouriteGroup( QContactManager* aManager ) +{ + QContactLocalId favouriteId = CntFavourite::favouriteGroupId(aManager); + + if ( favouriteId == 0 ) + { + QContact favouriteGroup; + favouriteGroup.setType( QContactType::TypeGroup ); + + QContactName favouriteGroupName; + favouriteGroupName.setCustomLabel( QLatin1String(FavouriteGroupName) ); + + favouriteGroup.saveDetail( &favouriteGroupName ); + if ( aManager->saveContact( &favouriteGroup ) ) + { + favouriteId = favouriteGroup.localId(); + } + } + return favouriteId; +} + +QContactLocalId CntFavourite::favouriteGroupId( QContactManager* aManager ) +{ + QContactLocalId favouriteId( 0 ); + + QContactDetailFilter groupFilter; + groupFilter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType); + groupFilter.setValue(QString(QLatin1String(QContactType::TypeGroup))); + + QList groupContactIds = aManager->contactIds( groupFilter ); + + for(int i = 0;i < groupContactIds.count();i++) + { + QContact contact = aManager->contact(groupContactIds.at(i)); + QContactName contactName = contact.detail(); + QString groupName = contactName.customLabel(); + if ( groupName.compare(QLatin1String(FavouriteGroupName)) == 0 ) + { + favouriteId = groupContactIds.at(i); + break; + } + } + + return favouriteId; +} + +bool CntFavourite::isMemberOfFavouriteGroup( QContactManager* aManager, QContact* aContact ) +{ + bool favouriteGroupContact( false ); + QContactLocalId favouriteId = CntFavourite::favouriteGroupId( aManager ); + if ( favouriteId != 0 ) + { + QContact favoriteGroup = aManager->contact( favouriteId ); + QContactRelationshipFilter rFilter; + rFilter.setRelationshipType( QContactRelationship::HasMember ); + rFilter.setRelatedContactRole( QContactRelationship::First ); + rFilter.setRelatedContactId( favoriteGroup.id() ); + + QList contactsLocalIdList = aManager->contactIds( rFilter ); + favouriteGroupContact = contactsLocalIdList.contains( aContact->localId() ); + } + return favouriteGroupContact; +} + +void CntFavourite::addContactToFavouriteGroup( QContactManager* aManager, QContactId& aId) +{ + QContactLocalId favouriteId = CntFavourite::favouriteGroupId( aManager ); + if ( favouriteId == 0 ) + { + favouriteId = CntFavourite::createFavouriteGroup( aManager ); + } + + QContact favoriteGroup = aManager->contact( favouriteId ); + + // new contact added to the favorite group + QContactRelationship relationship; + relationship.setRelationshipType(QContactRelationship::HasMember); + relationship.setFirst( favoriteGroup.id() ); + relationship.setSecond( aId ); + + // save relationship + aManager->saveRelationship( &relationship ); +} + +void CntFavourite::removeContactFromFavouriteGroup( QContactManager* aManager, QContactId& aId ) +{ + QContactLocalId favouriteId = CntFavourite::favouriteGroupId( aManager ); + if ( favouriteId != 0 ) + { + QContact favoriteGroup = aManager->contact( favouriteId ); + QContactRelationship relationship; + relationship.setRelationshipType( QContactRelationship::HasMember ); + relationship.setFirst( favoriteGroup.id() ); + relationship.setSecond( aId ); + aManager->removeRelationship(relationship); + } +} +// End of File