--- a/logsui/logsengine/src/logsevent.cpp Fri Aug 06 14:57:47 2010 +0300
+++ b/logsui/logsengine/src/logsevent.cpp Mon Aug 23 18:14:51 2010 +0300
@@ -48,12 +48,13 @@
mIsRead(false),
mIsALS(false),
mDuration(0),
- mIndex(0),
+ mIndex(-1),
mIsInView(false),
mEventState(EventAdded),
mIsLocallySeen(false),
mIsPrivate(false),
- mIsUnknown(false)
+ mIsUnknown(false),
+ mContactMatched(false)
{
}
@@ -87,6 +88,8 @@
mIsLocallySeen = event.mIsLocallySeen;
mIsPrivate = event.mIsPrivate;
mIsUnknown = event.mIsUnknown;
+ mContactMatched = event.mContactMatched;
+ mMergedDuplicates = event.mMergedDuplicates;
}
// ----------------------------------------------------------------------------
@@ -174,6 +177,24 @@
}
// ----------------------------------------------------------------------------
+// LogsEvent::setContactMatched
+// ----------------------------------------------------------------------------
+//
+void LogsEvent::setContactMatched( bool value )
+{
+ mContactMatched = value;
+}
+
+// ----------------------------------------------------------------------------
+// LogsEvent::contactMatched
+// ----------------------------------------------------------------------------
+//
+bool LogsEvent::contactMatched()
+{
+ return mContactMatched;
+}
+
+// ----------------------------------------------------------------------------
// LogsEvent::validate
// ----------------------------------------------------------------------------
//
@@ -379,13 +400,23 @@
serializedEvent >> mIsPrivate;
serializedEvent >> mIsUnknown;
- LogsEventData* logsEventData = new LogsEventData(serializedEvent);
- if ( serializedEvent.status() == QDataStream::ReadPastEnd ){
+ bool hasEventData = false;
+ serializedEvent >> hasEventData;
+ if ( hasEventData ){
+ LogsEventData* logsEventData = new LogsEventData(serializedEvent);
+ mLogsEventData = logsEventData;
+ } else {
mLogsEventData = 0;
- delete logsEventData;
- } else {
- mLogsEventData = logsEventData;
}
+
+ int mergedDuplCount = 0;
+ serializedEvent >> mergedDuplCount;
+ for ( int i = 0; i < mergedDuplCount; i++ ){
+ LOGS_QDEBUG( "logs [ENG] deserializing merged duplicates")
+ LogsEvent duplEvent( serializedEvent );
+ mMergedDuplicates.append( duplEvent );
+ }
+
LOGS_QDEBUG( "logs [ENG] <- LogsEvent::LogsEvent deserialize")
}
@@ -418,9 +449,16 @@
serializeDestination << mIsPrivate;
serializeDestination << mIsUnknown;
- if ( mLogsEventData ){
+ bool hasEventData = mLogsEventData;
+ serializeDestination << hasEventData;
+ if ( hasEventData ){
mLogsEventData->serialize(serializeDestination);
}
+
+ serializeDestination << mMergedDuplicates.count();
+ foreach ( LogsEvent duplEvent, mMergedDuplicates ){
+ duplEvent.serialize( serializeDestination );
+ }
LOGS_QDEBUG( "logs [ENG] <- LogsEvent::serialize")
return true;
@@ -672,6 +710,9 @@
void LogsEvent::markedAsSeenLocally(bool markedAsSeen)
{
mIsLocallySeen = markedAsSeen;
+ for ( int i = 0; i < mMergedDuplicates.count(); i++ ){
+ mMergedDuplicates[i].markedAsSeenLocally(markedAsSeen);
+ }
}
// ----------------------------------------------------------------------------
@@ -682,27 +723,92 @@
{
return ( mIsLocallySeen || mIsRead );
}
-
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
bool LogsEvent::isRemotePartyPrivate() const
{
return mIsPrivate;
-}
+}
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
bool LogsEvent::isRemotePartyUnknown() const
{
return mIsUnknown;
}
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
void LogsEvent::setRemotePartyPrivate(bool markedAsPrivate)
{
mIsPrivate = markedAsPrivate;
}
-
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
void LogsEvent::setRemotePartyUnknown(bool markedAsUnknown)
{
mIsUnknown = markedAsUnknown;
}
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+void LogsEvent::merge(LogsEvent& event)
+{
+ if ( isUnseenEvent(*this) && isUnseenEvent(event) ){
+ setDuplicates( duplicates() + event.duplicates() + 1 );
+ }
+ if ( !mMergedDuplicates.contains(event) ){
+ mMergedDuplicates.append(event);
+ }
+}
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+QList<LogsEvent>& LogsEvent::mergedDuplicates()
+{
+ return mMergedDuplicates;
+}
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+bool LogsEvent::operator==(const LogsEvent& other)
+{
+ return this->logId() == other.logId();
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+bool LogsEvent::isCommunicationPossible() const
+{
+ return ( !isRemotePartyPrivate() && !isRemotePartyUnknown() );
+}
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+bool LogsEvent::isUnseenEvent( const LogsEvent& event ) const
+{
+ return ( event.direction() == LogsEvent::DirMissed && !event.isSeenLocally() );
+}
+
// End of file