emailservices/nmutilities/inc/nmcontacthistorymodel_p.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 00:05:37 +0300
changeset 75 47d84de1c893
child 74 6c59112cfd31
permissions -rw-r--r--
Revision: 201037 Kit: 201039

/*
* Copyright (c) 2010 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: Private declaration of Contact History Model API
*
*/

#ifndef NMCONTACTHISTORYMODELPRIVATE_H
#define NMCONTACTHISTORYMODELPRIVATE_H

#include <QObject>
#include <QSharedData>
#include <qtcontacts.h>

#include "nmcontacthistorymodel.h"

QTM_USE_NAMESPACE

class NmContactHistoryModelItemData : public QSharedData
{
public:

NmContactHistoryModelItemData() :
    mContactId(0xDEAD)
{

}

~NmContactHistoryModelItemData()
{
    mItems.clear();
}

    unsigned int mContactId;
    QList<NmContactHistoryModelSubItem> mItems;
};

class NmContactHistoryModelPrivate : public QObject
{

    enum nameOrder 
    {
        LastNameFirstName = 0x0,
        LastNameCommaFirstName = 0x1,
        FirstNameLastName = 0x2
    };

Q_OBJECT

public:

    NmContactHistoryModelPrivate(const NmContactHistoryModelType modelType);
    ~NmContactHistoryModelPrivate();

signals:

    void queryCompleted(int err);

private:

    void queryDatabases(const QString &query);

    // Helper functions that are used by queryDatabases();
    bool queryMruDatabase(const QString &query);
    QList<QContactLocalId> queryContactDatabase(const QString &query);

    void populateListWithMruItems(const QString &query);

    void populateListWithContactItems(const QList<QContactLocalId> cnt_ids,
                                      const QString &query);


    int rowCount(const QModelIndex &parent) const;
    QVariant data(const QModelIndex &index, int role) const;
    void refreshDataModel();

    bool fillMruMatchList();
    QString obeyContactOrder(const QString &firstName, const QString &lastName);

private:

    // Member variables
    NmContactHistoryModelType mType;
    QList<NmContactHistoryModelItem> mModelItemList;
    QList< QSharedPointer<NmContactHistoryModelItemData> > mPrivateItemList;
    QContactManager *mContactManager;
    QHash<QString, QString> mMruList;
    QMap<QString, QString> mMruMatches;
    bool mModelReady;
    TUint32 mNameOrder;

private:  // Friend definitions

    friend class NmContactHistoryModel;
    friend class TestNmContactHistoryModelPrivate;
};

#endif //NMCONTACTHISTORYMODELPRIVATE_H