diff -r e686773b3f54 -r 0ba2181d7c28 logsui/logsengine/inc/logsmatchesmodel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsengine/inc/logsmatchesmodel.h Fri Mar 19 09:27:18 2010 +0200 @@ -0,0 +1,144 @@ +/* +* 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 LOGSMATCHESMODEL_H +#define LOGSMATCHESMODEL_H + +#include +#include +#include "logsengdefs.h" + +class LogsEvent; +class LogsDbConnector; +class LogsCntFinder; +class LogsCntEntry; +class LogsMatchesModelItemContainer; +class LogsThumbIconManager; +typedef QObject LogsCntEntryHandle; + +/** + * Model for log event details. + * + */ +class LogsMatchesModel : public LogsAbstractModel +{ + Q_OBJECT + +public: + + explicit LogsMatchesModel( LogsAbstractModel& parentModel, LogsDbConnector& dbConnector ); + +public: // The exported API + + LOGSENGINE_EXPORT ~LogsMatchesModel(); + LOGSENGINE_EXPORT void logsMatches( const QString& pattern ); + +public: // From QAbstractItemModel + + virtual int rowCount(const QModelIndex &parent) const; + virtual QVariant data(const QModelIndex &index, int role) const; + +public: // From LogsAbstractModel + + virtual QVariant createCall(const LogsModelItemContainer& item) const; + virtual QVariant createMessage(const LogsModelItemContainer& item) const; + virtual QVariant createContact(const LogsModelItemContainer& item) const; + +public slots: + void queryReady(); + void updateContactIcon(int index); + +private slots: + void eventsUpdated(const QModelIndex& first, const QModelIndex& last); + void eventsAdded(const QModelIndex& parent, int first, int last); + void eventsRemoved(const QModelIndex& parent, int first, int last); + + void doSearchQuery(); + void doModelReset(); + +private: + + bool addSearchResult(int resultIndex); + bool updateSearchResult(LogsMatchesModelItemContainer& item) const; + void readEvents(int first, int last); + void getLogsMatches( const QString& pattern, bool async = false, bool force = false ); + void updateSearchEntry(LogsCntEntry& entry, LogsEvent& event); + QString stripPhoneNumber(const QString& phoneNumber) const; + +private: //data + + LogsAbstractModel& mParentModel; + LogsCntFinder* mLogsCntFinder; + + QList mMatches; + QMap mSearchEvents; + + QString mCurrentSearchPattern; + QString mPrevSearchPattern; + LogsThumbIconManager *mIconManager; + +private: + + friend class UT_LogsModel; + friend class UT_LogsMatchesModel; + +}; + +/** + * Contains log event or contact match + */ +class LogsMatchesModelItemContainer : public LogsModelItemContainer { +public: + LogsMatchesModelItemContainer(LogsAbstractModel& parentModel, + LogsThumbIconManager& mIconManager, + int resultIndex); + virtual ~LogsMatchesModelItemContainer(); + + void setEvent(const LogsEvent& event); + void setContact(unsigned int contactId); + unsigned int contact() const; + QString number() const; + bool isNull() const; + bool isEventMatch() const; + QStringList texts(); + QList icons(int row); + void updateData(const LogsCntEntry& entry); + int resultIndex() const; + +private: + + QString getFormattedCallerId(const LogsCntEntry& entry) const; + void getFormattedContactInfo( + const LogsCntEntry& entry, QString& contactName, QString& contactNumber ) const; + +private: + + LogsAbstractModel& mParentModel; + unsigned int mContactId; + QString mContactName; + QString mContactNumber; + QString mAvatarPath; + QString mFormattedCallerId; + LogsThumbIconManager& mIconManager; + int mResultIndex; + +private: + + friend class UT_LogsMatchesModel; +}; + +#endif //LOGSMATCHESMODEL_H