--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsengine/inc/logsmatchesmodel.h Tue May 04 12:39:37 2010 +0300
@@ -0,0 +1,177 @@
+/*
+* 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 <logsexport.h>
+#include <logsabstractmodel.h>
+#include "logsengdefs.h"
+
+class LogsEvent;
+class LogsDbConnector;
+class LogsCntFinder;
+class LogsCntEntry;
+class LogsContact;
+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);
+
+ /**
+ * Factory method for creating a new contact object. Transfers ownership.
+ */
+ LOGSENGINE_EXPORT LogsContact* createContact(const QString& number);
+
+ /**
+ * Returns cenrep key status of predictive search feature.
+ * @return 0 - feature is permanently off and can't be turned on,
+ * 1 - feature is on
+ * 2 - feature is temporarily off and can be turned on
+ * negative value indicates some error in fetching the key
+ */
+ LOGSENGINE_EXPORT int predictiveSearchStatus();
+
+ /**
+ * Allows to modify cenrep key value of predictive search features.
+ * However, this function can't be used if feature is set permanently off
+ * (see predictiveSearchStatus())
+ * @param enabled, specify whether cenrep key will be set to 1 or 2
+ * @ return 0 if cenrep key value modified succesfully,
+ * -1 in case of some error
+ */
+ LOGSENGINE_EXPORT int setPredictiveSearch(bool enabled);
+
+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;
+
+
+private slots:
+
+ void queryReady();
+ void updateContactIcon(int index);
+
+ 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();
+ void forceSearchQuery();
+
+private:
+
+ void initPredictiveSearch();
+
+ LogsMatchesModelItemContainer* 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<LogsMatchesModelItemContainer*> mMatches;
+ QMap<LogsCntEntryHandle*, LogsEvent*> mSearchEvents;
+
+ QString mCurrentSearchPattern;
+ QString mPrevSearchPattern;
+ LogsThumbIconManager *mIconManager;
+ bool mSearchEnabled;
+ int mResultCount;
+
+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;
+ QString contactName() const;
+ bool isNull() const;
+ bool isEventMatch() const;
+ QStringList texts();
+ QList<QVariant> 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