emailservices/nmutilities/inc/nmcontacthistorymodel_p.h
author hgs
Thu, 14 Oct 2010 17:33:43 +0300
changeset 76 38bf5461e270
parent 74 6c59112cfd31
permissions -rw-r--r--
201041

/*
* 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(0)
{

}

~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 modelRowCount(const QModelIndex &parent) const;
    int privateDataCount() const;
    QVariant data(const QModelIndex &index, int role) const;
    void refreshDataModel();

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

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