phonebookui/pbkcommonui/src/cntfavourite.cpp
changeset 37 fd64c38c277d
child 66 554fe4dbbb59
equal deleted inserted replaced
31:2a11b5b00470 37:fd64c38c277d
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  
       
    15 *
       
    16 */
       
    17 #include "cntfavourite.h"
       
    18 
       
    19 QContactLocalId CntFavourite::createFavouriteGroup( QContactManager* aManager )
       
    20 {
       
    21    QContactLocalId favouriteId = CntFavourite::favouriteGroupId(aManager);
       
    22     
       
    23    if ( favouriteId == 0 )
       
    24    {
       
    25        QContact favouriteGroup;
       
    26        favouriteGroup.setType( QContactType::TypeGroup );
       
    27 
       
    28        QContactName favouriteGroupName;
       
    29        favouriteGroupName.setCustomLabel( QLatin1String(FavouriteGroupName) );
       
    30 
       
    31        favouriteGroup.saveDetail( &favouriteGroupName );
       
    32        if ( aManager->saveContact( &favouriteGroup ) )
       
    33        {
       
    34            favouriteId = favouriteGroup.localId();
       
    35        }
       
    36    }
       
    37    return favouriteId;
       
    38 }
       
    39 
       
    40 QContactLocalId CntFavourite::favouriteGroupId( QContactManager* aManager )
       
    41 {
       
    42     QContactLocalId favouriteId( 0 );
       
    43     
       
    44     QContactDetailFilter groupFilter;
       
    45     groupFilter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType);
       
    46     groupFilter.setValue(QString(QLatin1String(QContactType::TypeGroup)));
       
    47 
       
    48     QList<QContactLocalId> groupContactIds = aManager->contactIds( groupFilter );
       
    49         
       
    50     for(int i = 0;i < groupContactIds.count();i++)
       
    51     {
       
    52         QContact contact = aManager->contact(groupContactIds.at(i));
       
    53         QContactName contactName = contact.detail<QContactName>();
       
    54         QString groupName = contactName.customLabel();
       
    55         if ( groupName.compare(QLatin1String(FavouriteGroupName)) == 0 )
       
    56         {
       
    57             favouriteId = groupContactIds.at(i);
       
    58             break;
       
    59         }
       
    60     }
       
    61 
       
    62     return favouriteId;
       
    63 }
       
    64 
       
    65 bool CntFavourite::isMemberOfFavouriteGroup( QContactManager* aManager, QContact* aContact )
       
    66 {
       
    67     bool favouriteGroupContact( false );
       
    68     QContactLocalId favouriteId = CntFavourite::favouriteGroupId( aManager );
       
    69     if ( favouriteId != 0 )
       
    70     {
       
    71         QContact favoriteGroup = aManager->contact( favouriteId );
       
    72         QContactRelationshipFilter rFilter;
       
    73         rFilter.setRelationshipType( QContactRelationship::HasMember );
       
    74         rFilter.setRelatedContactRole( QContactRelationship::First );
       
    75         rFilter.setRelatedContactId( favoriteGroup.id() );
       
    76             
       
    77         QList<QContactLocalId> contactsLocalIdList = aManager->contactIds( rFilter );
       
    78         favouriteGroupContact = contactsLocalIdList.contains( aContact->localId() );
       
    79     }
       
    80     return favouriteGroupContact;
       
    81 }
       
    82 
       
    83 void CntFavourite::addContactToFavouriteGroup( QContactManager* aManager, QContactId& aId)
       
    84 {
       
    85     QContactLocalId favouriteId = CntFavourite::favouriteGroupId( aManager );
       
    86     if ( favouriteId == 0 )
       
    87     {
       
    88         favouriteId = CntFavourite::createFavouriteGroup( aManager );
       
    89     }
       
    90     
       
    91     QContact favoriteGroup = aManager->contact( favouriteId );
       
    92         
       
    93     // new contact added to the favorite group
       
    94     QContactRelationship relationship;
       
    95     relationship.setRelationshipType(QContactRelationship::HasMember);
       
    96     relationship.setFirst( favoriteGroup.id() );
       
    97     relationship.setSecond( aId );
       
    98     
       
    99     // save relationship
       
   100     aManager->saveRelationship( &relationship );
       
   101 }
       
   102 
       
   103 void CntFavourite::removeContactFromFavouriteGroup( QContactManager* aManager, QContactId& aId )
       
   104 {
       
   105     QContactLocalId favouriteId = CntFavourite::favouriteGroupId( aManager );
       
   106     if ( favouriteId != 0 )
       
   107     {
       
   108         QContact favoriteGroup = aManager->contact( favouriteId );
       
   109         QContactRelationship relationship;
       
   110         relationship.setRelationshipType( QContactRelationship::HasMember );
       
   111         relationship.setFirst( favoriteGroup.id() );
       
   112         relationship.setSecond( aId );
       
   113         aManager->removeRelationship(relationship);
       
   114     }
       
   115 }
       
   116 // End of File