logsui/logsengine/inc/logsmatchesmodel.h
changeset 24 0ba2181d7c28
child 25 76a2435edfd4
--- /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 <logsexport.h>
+#include <logsabstractmodel.h>
+#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<LogsMatchesModelItemContainer*> mMatches;
+    QMap<LogsCntEntryHandle*, LogsEvent*> 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<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