phonebookengines/cntlistmodel/inc/cntcache.h
changeset 81 640d30f4fb64
parent 77 c18f9fa7f42e
child 84 63017c97b1d6
--- a/phonebookengines/cntlistmodel/inc/cntcache.h	Fri Oct 08 11:42:51 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-/*
-* 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: Class for asynchronously fetching and caching
-*              basic contact info for list views.
-*
-*/
-
-#ifndef CNTCACHE_H
-#define CNTCACHE_H
-
-#include <QObject>
-#include <QSharedData>
-#include <HbIcon>
-#include <cntuids.h>
-#include <qcontactmanager.h>
-#include <cntinfoprovider.h>
-#include <collate.h>
-
-class CntContactInfoData;
-class CntNameFetcher;
-class CntCacheThread;
-class CntInfoCacheItem;
-class CntIconCacheItem;
-class CntNameCacheItem;
-
-QTM_USE_NAMESPACE
-
-/*
-   Info about one contact that can be used by listviews:
-   - the id
-   - the full name, properly formatted
-   - text, secondary information like phone number
-   - icon1, the main icon
-   - icon2, a secondary icon
- */
-class CntContactInfo : public QObject
-{
-    Q_OBJECT
-public:
-    CntContactInfo();
-    CntContactInfo(int id, const QString& name, const QString& text, const HbIcon& icon1, const HbIcon& icon2);
-    ~CntContactInfo();
-
-    CntContactInfo(const CntContactInfo& other);
-    CntContactInfo& operator=(const CntContactInfo& other);
-
-    int id() const;
-    QString name() const;
-    QString text() const;
-    HbIcon icon1() const;
-    HbIcon icon2() const;
-
-private:
-    QSharedDataPointer<CntContactInfoData> d;
-};
-
-/*
-   Singleton class that acts as a proxy to get CntContactInfo objects for contacts.
-   It also implements caching for faster access. This is why the fetchContactInfo()
-   function takes a row number and the full list of contact IDs rather than just a
-   contact ID -- the former allows caching ahead.
-   
-   The usage pattern for clients is to call fetchContactInfo() to get at least the
-   name of the contact. If all the info is cached then it will be provided. If not,
-   then the uncached info is fetched asynchronously and contactInfoUpdated signals
-   are emitted as the pieces of information arrive -- up to three times per contact;
-   once for text, once for icon1 and once for icon2.
- */
-class CntCache : public QObject
-{
-    friend class TestCntCache;
-    friend class TestCntListModel;
-    Q_OBJECT
-public:
-    static CntCache* instance(QContactManager *manager);
-    CntContactInfo fetchContactInfo(int row, const QList<QContactLocalId>& idList);
-    QList<QContactLocalId> sortIdsByName(const QSet<QContactLocalId>* idFilter = NULL) const;
-    QList<QContactLocalId> sortIdsByName(const QStringList searchList) const;
-
-signals:
-    void contactInfoUpdated(QContactLocalId contactId);
-    void contactsChanged(const QList<QContactLocalId> &changedContacts);
-    void contactsRemoved(const QList<QContactLocalId> &removedContacts);
-    void contactsAdded(const QList<QContactLocalId> &addedContacts);
-    void dataChanged();
-
-private:
-    CntCache(QContactManager *manager);
-    ~CntCache();
-    void loadNames();
-    bool contactExists(QContactLocalId contactId) const;
-    QString contactName(QContactLocalId contactId) const;
-    CntInfoCacheItem* createInfoCacheItem(int contactId);
-    CntIconCacheItem* createIconCacheItem(const QString &iconName);
-    void updateReadAheadCache(int mostRecentRow, const QList<QContactLocalId> &idList);
-    void emitContactInfoUpdated(int contactId);
-
-private slots:
-    void onShutdown();
-    void reformatNames(CntNameOrder newFormat);
-    void onNewInfo(int contactId, const ContactInfoField &infoField, const QString &infoValue);
-    void onInfoCancelled(int contactId);
-    void scheduleOneReadAheadItem();
-    void onNewIcon(const QString &iconName, const HbIcon &icon);
-    void onIconCancelled(const QString &iconName);
-    void updateContacts(const QList<QContactLocalId> &changedContacts);
-    void removeContacts(const QList<QContactLocalId> &removedContacts);
-    void addContacts(const QList<QContactLocalId> &addedContacts);
-    void setNameList(QList<CntNameCacheItem *> newSortedNames);
-
-private:
-    static CntCache *mInstance;                   // the one and only instance of CntCache
-    QContactManager *mContactManager;             // for getting notifications about changes to contacts
-    CntCacheThread *mWorker;                      // the background thread that does the actual fetching
-    CntNameFetcher *mNameFetcher;                 // the helper that fetches contact names
-
-    QList<CntNameCacheItem *> mSortedNames;       // list of all contact names, in sorted order
-    QHash<QContactLocalId, CntNameCacheItem *> mNameCache;    // cache with all contact names, indexed by contact ids
-    QHash<int,CntInfoCacheItem *> mInfoCache;     // cache with contact info, indexed by contact ids
-    QHash<QString,CntIconCacheItem *> mIconCache; // cache with icons, indexed by icon name
-    QList< QPair<int, int> > mReadAheadCache;     // cache with contacts to prefetch (they are likely to be needed soon)
-
-    int mNextInfoCacheOrder;                      // cache order for the next item to be updated/inserted in info cache
-    int mNextIconCacheOrder;                      // cache order for the next item to be updated/inserted in icon cache
-    int mEmittedContactId;                        // id of the last contact emitted to UI
-    int mUrgentContacts;                          // the number of contacts left that need to be fetched asap
-    
-    bool mHasModifiedNames;                       // monitors whether any names have changed since file cache was last updated
-    bool mAllNamesFetchStarted;                   // false until the asynch fetching of all names from the DB has started;
-                                                  // this operation is done only once
-};
-
-#endif