phonebookengines/cntlistmodel/inc/cntlistmodel_p.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 02 Sep 2010 20:16:15 +0300
changeset 65 ae724a111993
parent 47 7cbcb2896f0e
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* 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:
*
*/

#ifndef MOBCNTMODELPRIVATE_H
#define MOBCNTMODELPRIVATE_H

#include <QSharedData>
#include <QMap>

#include <qcontactmanager.h>
#include <qcontactfilter.h>
#include <qcontactdetailfilter.h>
#include <qcontactsortorder.h>
#include <cntuids.h>
#include "cntcache.h"
#include <cntdebug.h>
#include "cntdisplaytextformatter.h"
#include <xqsettingsmanager.h> 
#include <xqsettingskey.h>

QTM_USE_NAMESPACE

class CntListModelData : public QSharedData
{
public:
    CntListModelData( const QContactFilter& contactFilter = QContactFilter(),
                      bool showMyCard = true) :
                          m_contactManager(NULL),
                          m_ownedContactManager(false),
                          m_currentRow(-1),
                          m_showMyCard(showMyCard),
                          m_Settings(NULL),
                          m_NameListRowSettingkey(NULL),
                          m_currentRowSetting(0),
                          m_groupId(-1),
                          m_Format( new CntDummyDisplayTextFormatter )
        { 
            setFilter(contactFilter);
        }

    ~CntListModelData()
        {
            if (m_ownedContactManager) 
                delete m_contactManager;
            delete m_Settings;
            delete m_NameListRowSettingkey;
            delete m_Format;
        }

    void setFilter(const QContactFilter& contactFilter)
        {
            CNT_LOG_ARGS(contactFilter.type())

            m_filter = contactFilter;
            m_currentRow = -1;
            if (contactFilter.type() == QContactFilter::RelationshipFilter) {
                    QContactRelationshipFilter* relationshipFilter = static_cast<QContactRelationshipFilter*>(&m_filter);
                    CNT_LOG_ARGS("type:" << relationshipFilter->relationshipType() << "role:" << relationshipFilter->relatedContactRole())
                    if (relationshipFilter->relationshipType() == QContactRelationship::HasMember &&
                        relationshipFilter->relatedContactRole() == QContactRelationship::First)
                        m_groupId = relationshipFilter->relatedContactId().localId();
            }
            else {
                m_groupId = -1;
                
                // set proper text formatter for the display name. 
                if ( contactFilter.type() == QContactFilter::ContactDetailFilter )
                {
                    delete m_Format;
                    m_Format = NULL;
                    
                    QContactDetailFilter* detailFilter = static_cast<QContactDetailFilter*>( &m_filter );
                    QStringList filter = detailFilter->value().toStringList();
                    
                    if ( detailFilter->detailDefinitionName() == QContactDisplayLabel::DefinitionName && 
                         detailFilter->matchFlags() & QContactFilter::MatchStartsWith &&
                         !filter.isEmpty() )
                    {
                        m_Format = new CntHTMLDisplayTextFormatter();
                    }
                    else
                    {
                        m_Format = new CntDummyDisplayTextFormatter();    
                    }
                }
                    
            }

            CNT_LOG_ARGS(m_groupId)
        }

public:
    QContactManager* m_contactManager;
    CntCache* m_cache;
    bool m_ownedContactManager;
    mutable CntContactInfo m_currentContact;
    mutable int m_currentRow;
	
    QList<QContactLocalId> m_contactIds;
    QContactFilter m_filter;
    QList<QContactSortOrder> m_sortOrders;
    bool m_showMyCard;
	QContactLocalId m_myCardId;
	int nameOrder;
	
    XQSettingsManager* m_Settings;
    XQSettingsKey *m_NameListRowSettingkey;
    int m_currentRowSetting;
    QContactLocalId m_groupId;
    
    CntDisplayTextFormatter* m_Format;
};

#endif // QCONTACTMODELPRIVATE_H