logsui/logsengine/logssymbianos/src/logsdbconnector.cpp
changeset 6 41c0a814d878
parent 0 4a5361db8937
child 8 6c9acdc6adc0
--- a/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp	Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp	Fri Jun 11 13:38:41 2010 +0300
@@ -475,7 +475,7 @@
             mAddedEventIndexes.append( mEvents.at(i)->index() );
         }
     }
-    
+
     bool doModelDataReset( !mRemovedEventIndexes.isEmpty() ||
                            !mAddedEventIndexes.isEmpty() || 
                            !mUpdatedEventIndexes.isEmpty() );
@@ -487,14 +487,25 @@
         }
     }
     
-    if ( !mRemovedEventIndexes.isEmpty() ){
-        emit dataRemoved(mRemovedEventIndexes);
-    }             
-    if ( !mAddedEventIndexes.isEmpty() ){
-        emit dataAdded(mAddedEventIndexes);
-    }
-    if ( !mUpdatedEventIndexes.isEmpty() ){
-        emit dataUpdated(mUpdatedEventIndexes);
+    int changeCount = 0;
+    changeCount += mRemovedEventIndexes.isEmpty() ? 0 : 1;
+    changeCount += mAddedEventIndexes.isEmpty() ? 0 : 1;
+    changeCount += mUpdatedEventIndexes.isEmpty() ? 0 : 1;
+    
+    if ( changeCount > 1 ){
+        // If having many changes, it is less error prone
+        // to just report reset.
+        emit dataReset();
+    } else {
+        if ( !mRemovedEventIndexes.isEmpty() ){
+            emit dataRemoved(mRemovedEventIndexes);
+        }             
+        if ( !mAddedEventIndexes.isEmpty() ){
+            emit dataAdded(mAddedEventIndexes);
+        }
+        if ( !mUpdatedEventIndexes.isEmpty() ){
+            emit dataUpdated(mUpdatedEventIndexes);
+        }
     }
     
     deleteRemoved(readCount);