logsui/logsengine/src/logsmatchesmodel.cpp
changeset 11 64a47b97e1e1
parent 10 b04270301d3b
child 14 f27aebe284bb
--- a/logsui/logsengine/src/logsmatchesmodel.cpp	Wed Jun 23 18:13:05 2010 +0300
+++ b/logsui/logsengine/src/logsmatchesmodel.cpp	Tue Jul 06 14:16:36 2010 +0300
@@ -165,7 +165,8 @@
     }
     const LogsMatchesModelItemContainer& matchItem = 
         static_cast<const LogsMatchesModelItemContainer&>( item ); 
-    LogsMessage* logsMessage = new LogsMessage(matchItem.contact(), matchItem.number(),matchItem.contactName());
+    LogsMessage* logsMessage = new LogsMessage(
+        matchItem.contact(), matchItem.number(),matchItem.contactNameSimple());
     if (!logsMessage->isMessagingAllowed()) {
         delete logsMessage;
         logsMessage = 0;
@@ -298,6 +299,39 @@
 }
 
 // -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+void LogsMatchesModel::eventsResetted()
+{
+    LOGS_QDEBUG( "logs [ENG] -> LogsMatchesModel::eventsResetted()" );
+    
+    QMap<LogsCntEntryHandle*, LogsEvent*> unusedEvents = mSearchEvents;
+    for ( int i = 0; i < mParentModel.rowCount(); ++i ){
+        LogsEvent* event = qVariantValue<LogsEvent*>( 
+            mParentModel.data( mParentModel.index(i, 0), LogsModel::RoleFullEvent ) );
+        if ( event ){
+            QObject* key = mSearchEvents.key(event);
+            if ( key ){
+                unusedEvents.remove(key);
+            } else {
+                addEventForSearching(i, *event);
+            }
+        }
+    }
+    
+    QMap<LogsCntEntryHandle*, LogsEvent*>::iterator unusedIt;
+    for (unusedIt = unusedEvents.begin(); unusedIt != unusedEvents.end(); ++unusedIt){
+        mLogsCntFinder->deleteEntry(*unusedIt.key());
+        mSearchEvents.remove(unusedIt.key());
+    }
+    
+    forceSearchQuery();
+    
+    LOGS_QDEBUG( "logs [ENG] <- LogsMatchesModel::eventsResetted()" );
+}
+
+// -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
@@ -315,7 +349,7 @@
                  this, SLOT(eventsAdded(const QModelIndex&,int,int)));
         connect( &mParentModel, SIGNAL(rowsRemoved(const QModelIndex&,int,int)), 
                  this, SLOT(eventsRemoved(const QModelIndex&,int,int)));
-        connect( &mParentModel, SIGNAL(modelReset()), this, SLOT(doModelReset()));
+        connect( &mParentModel, SIGNAL(modelReset()), this, SLOT(eventsResetted()));
         readEvents(0, mParentModel.rowCount());
         mIconManager = new LogsThumbIconManager();
         connect(mIconManager, SIGNAL(contactIconReady(int)),
@@ -373,11 +407,7 @@
         LogsEvent* event = qVariantValue<LogsEvent*>( 
                 mParentModel.data( mParentModel.index(i, 0), LogsModel::RoleFullEvent ) );
         if ( event ){
-            QObject* entryHandle = new QObject(this);
-            LogsCntEntry* entry = new LogsCntEntry(*entryHandle, 0);
-            updateSearchEntry(*entry, *event);
-            mLogsCntFinder->insertEntry(i, entry);
-            mSearchEvents.insert(entryHandle, event);
+            addEventForSearching(i, *event);
         }
     }
 }
@@ -447,10 +477,12 @@
 //
 void LogsMatchesModel::doModelReset()
 {
+    LOGS_QDEBUG( "logs [ENG] -> LogsMatchesModel::doModelReset()" );
     qDeleteAll(mMatches);
     mMatches.clear();
     mResultCount = 0;
     reset();
+    LOGS_QDEBUG( "logs [ENG] <- LogsMatchesModel::doModelReset()" );
 }
 
 // -----------------------------------------------------------------------------
@@ -512,6 +544,19 @@
 //
 // -----------------------------------------------------------------------------
 //
+void LogsMatchesModel::addEventForSearching(int index, LogsEvent& event)
+{
+     QObject* entryHandle = new QObject(this);
+     LogsCntEntry* entry = new LogsCntEntry(*entryHandle, 0);
+     updateSearchEntry(*entry, event);
+     mLogsCntFinder->insertEntry(index, entry);
+     mSearchEvents.insert(entryHandle, &event);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 LogsMatchesModelItemContainer::LogsMatchesModelItemContainer(
         LogsAbstractModel& parentModel,
 		LogsThumbIconManager& thumbIconManager, 
@@ -594,6 +639,15 @@
 //
 // -----------------------------------------------------------------------------
 //
+QString LogsMatchesModelItemContainer::contactNameSimple() const
+{
+   return mContactNameSimple;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 bool LogsMatchesModelItemContainer::isNull() const
 {
     return ( !mEvent && !mContactId );
@@ -651,7 +705,7 @@
     if ( mEvent ){
         mFormattedCallerId = getFormattedCallerId(entry);
     } else if ( mContactId > 0 ){
-        getFormattedContactInfo(entry, mContactName, mContactNumber);
+        getFormattedContactInfo(entry, mContactName, mContactNameSimple, mContactNumber);
         mAvatarPath.clear();
         mAvatarPath = entry.avatarPath();
     }
@@ -690,15 +744,17 @@
 //
 void LogsMatchesModelItemContainer::getFormattedContactInfo( 
         const LogsCntEntry& entry,
-        QString& contactName, 
+        QString& contactName,
+        QString& contactNameSimple,
         QString& contactNumber ) const
 {
     contactName.clear();
     
-    getFormattedName(contactName, entry.firstName());
-    getFormattedName(contactName, entry.lastName());
+    getFormattedName(contactName, contactNameSimple, entry.firstName());
+    getFormattedName(contactName, contactNameSimple, entry.lastName());
 
     contactName = contactName.trimmed();
+    contactNameSimple = contactNameSimple.trimmed();
     contactNumber = entry.phoneNumber().text();
 }
 
@@ -706,13 +762,31 @@
 //
 // -----------------------------------------------------------------------------
 //
-void  LogsMatchesModelItemContainer::getFormattedName(QString& formattedName, 
-        const QList<LogsCntText>& list) const
+void  LogsMatchesModelItemContainer::getFormattedName(
+    QString& formattedName, const QList<LogsCntText>& list) const
 {
     foreach( LogsCntText name, list ) {
         if ( name.text().length() > 0 ) {
-            formattedName.append(name.richText());
+            formattedName.append(name.richText());   
             formattedName.append(" ");
         }
     }
 }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void  LogsMatchesModelItemContainer::getFormattedName(
+    QString& formattedName, QString& formattedNameSimple,
+    const QList<LogsCntText>& list) const
+{
+    foreach( LogsCntText name, list ) {
+        if ( name.text().length() > 0 ) {
+            formattedName.append(name.richText());   
+            formattedName.append(" ");
+            formattedNameSimple.append(name.text());
+            formattedNameSimple.append(" ");
+        }
+    }
+}