summaryrefslogtreecommitdiff
path: root/plugins/NewStory/src/history_array.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/NewStory/src/history_array.cpp')
-rw-r--r--plugins/NewStory/src/history_array.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/plugins/NewStory/src/history_array.cpp b/plugins/NewStory/src/history_array.cpp
index 6824862726..0510a95d25 100644
--- a/plugins/NewStory/src/history_array.cpp
+++ b/plugins/NewStory/src/history_array.cpp
@@ -60,6 +60,19 @@ ItemData::~ItemData()
MTextDestroy(data);
}
+bool ItemData::isEqual(const ItemData *p) const
+{
+ if (p->hContact != hContact)
+ return false;
+ if (p->dbe.eventType != dbe.eventType)
+ return false;
+ if ((p->dbe.flags & DBEF_SENT) != (dbe.flags & DBEF_SENT))
+ return false;
+ if (p->dbe.timestamp / 86400 != dbe.timestamp / 86400)
+ return false;
+ return true;
+}
+
ItemData* ItemData::checkPrev(ItemData *pPrev)
{
m_grouping = GROUPING_NONE;
@@ -73,9 +86,12 @@ ItemData* ItemData::checkPrev(ItemData *pPrev)
if (dbe.eventType != EVENTTYPE_MESSAGE)
return this;
- if (pPrev->hContact == hContact && pPrev->dbe.eventType == dbe.eventType && (pPrev->dbe.flags & DBEF_SENT) == (dbe.flags & DBEF_SENT)) {
- if (pPrev->m_grouping != GROUPING_ITEM)
+ if (isEqual(pPrev)) {
+ if (pPrev->m_grouping == GROUPING_NONE) {
pPrev->m_grouping = GROUPING_HEAD;
+ if (pPrev->m_bLoaded)
+ pPrev->setText();
+ }
m_grouping = GROUPING_ITEM;
}
return this;