Use colouring for message receipts

This commit is contained in:
James Booth
2015-03-14 16:05:13 +00:00
parent bc6e32175d
commit 1014244408
5 changed files with 92 additions and 20 deletions

View File

@@ -81,7 +81,7 @@ buffer_free(ProfBuff buffer)
void
buffer_push(ProfBuff buffer, const char show_char, GDateTime *time,
int flags, theme_item_t theme_item, const char * const from, const char * const message)
int flags, theme_item_t theme_item, const char * const from, const char * const message, DeliveryReceipt *receipt)
{
ProfBuffEntry *e = malloc(sizeof(struct prof_buff_entry_t));
e->show_char = show_char;
@@ -90,6 +90,7 @@ buffer_push(ProfBuff buffer, const char show_char, GDateTime *time,
e->time = time;
e->from = strdup(from);
e->message = strdup(message);
e->receipt = receipt;
if (g_slist_length(buffer->entries) == BUFF_SIZE) {
_free_entry(buffer->entries->data);
@@ -99,6 +100,24 @@ buffer_push(ProfBuff buffer, const char show_char, GDateTime *time,
buffer->entries = g_slist_append(buffer->entries, e);
}
gboolean
buffer_mark_received(ProfBuff buffer, const char * const id)
{
GSList *entries = buffer->entries;
while (entries) {
ProfBuffEntry *entry = entries->data;
if (entry->receipt) {
if (!entry->receipt->received) {
entry->receipt->received = TRUE;
return TRUE;
}
}
entries = g_slist_next(entries);
}
return FALSE;
}
ProfBuffEntry*
buffer_yield_entry(ProfBuff buffer, int entry)
{
@@ -113,4 +132,8 @@ _free_entry(ProfBuffEntry *entry)
free(entry->from);
g_date_time_unref(entry->time);
free(entry);
if (entry->receipt) {
free(entry->receipt->id);
free(entry->receipt);
}
}