melib/thread: add attachments field to Thread

master
Manos Pitsidianakis 2020-01-18 03:00:02 +02:00
parent 5e68d600b9
commit 350fafb515
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
3 changed files with 22 additions and 14 deletions

View File

@ -139,17 +139,20 @@ macro_rules! make {
ref mut len,
ref mut unseen,
ref mut snoozed,
ref mut attachments,
..
}, ThreadGroup::Root(Thread {
date: old_date,
len: old_len,
unseen: old_unseen,
snoozed: old_snoozed,
attachments: old_attachments,
..
})) => {
*date = std::cmp::max(old_date, *date);
*len += old_len;
*unseen |= old_unseen;
*unseen += old_unseen;
*attachments += old_attachments;
*snoozed |= old_snoozed;
}
_ => unreachable!(),
@ -273,6 +276,7 @@ pub struct Thread {
date: UnixTimestamp,
len: usize,
unseen: usize,
attachments: usize,
snoozed: bool,
}
@ -321,6 +325,10 @@ impl Thread {
property!(snoozed: bool);
property!(date: UnixTimestamp);
pub fn has_attachments(&self) -> bool {
self.attachments > 0
}
pub fn set_snoozed(&mut self, val: bool) {
self.snoozed = val;
}
@ -765,6 +773,11 @@ impl Threads {
} else {
0
},
attachments: if envelopes_lck[&env_hash].has_attachments() {
1
} else {
0
},
snoozed: false,
}),
);
@ -803,6 +816,7 @@ impl Threads {
date: envelopes_lck[&env_hash].date(),
len: 0,
unseen: 0,
attachments: 0,
snoozed: false,
}),
);
@ -846,6 +860,7 @@ impl Threads {
date: envelopes_lck[&env_hash].date(),
len: 0,
unseen: 0,
attachments: 0,
snoozed: false,
}),
);

View File

@ -598,7 +598,7 @@ impl CompactListing {
subject: SubjectString(format!("{} ({})", subject, thread.len(),)),
flag: FlagString(format!(
"{}{}",
if e.has_attachments() { "πŸ“Ž" } else { "" },
if thread.has_attachments() { "πŸ“Ž" } else { "" },
if thread.snoozed() { "πŸ’€" } else { "" }
)),
from: FromString(address_list!((e.from()) as comma_sep_list)),
@ -610,7 +610,7 @@ impl CompactListing {
subject: SubjectString(subject),
flag: FlagString(format!(
"{}{}",
if e.has_attachments() { "πŸ“Ž" } else { "" },
if thread.has_attachments() { "πŸ“Ž" } else { "" },
if thread.snoozed() { "πŸ’€" } else { "" }
)),
from: FromString(address_list!((e.from()) as comma_sep_list)),
@ -922,13 +922,7 @@ impl CompactListing {
self.data_columns.columns[4][(x, idx)].set_ch(' ');
self.data_columns.columns[4][(x, idx)].set_bg(bg_color);
}
match (
thread.snoozed(),
context.accounts[self.cursor_pos.0]
.collection
.get_env(root_env_hash)
.has_attachments(),
) {
match (thread.snoozed(), thread.has_attachments()) {
(true, true) => {
self.data_columns.columns[3][(0, idx)].set_fg(Color::Byte(103));
self.data_columns.columns[3][(2, idx)].set_fg(Color::Red);
@ -994,7 +988,6 @@ impl CompactListing {
return;
}
let envelope: EnvelopeRef = account.collection.get_env(env_hash);
let has_attachments = envelope.has_attachments();
let fg_color = if thread.unseen() > 0 {
Color::Byte(0)
} else {
@ -1119,7 +1112,7 @@ impl CompactListing {
columns[4][c].set_ch(' ');
columns[4][c].set_bg(bg_color);
}
match (thread.snoozed(), has_attachments) {
match (thread.snoozed(), thread.has_attachments()) {
(true, true) => {
columns[3][(0, idx)].set_fg(Color::Byte(103));
columns[3][(2, idx)].set_fg(Color::Red);

View File

@ -571,7 +571,7 @@ impl ConversationsListing {
subject: SubjectString(format!("{} ({})", subject, thread.len(),)),
flag: FlagString(format!(
"{}{}",
if e.has_attachments() { "πŸ“Ž" } else { "" },
if thread.has_attachments() { "πŸ“Ž" } else { "" },
if thread.snoozed() { "πŸ’€" } else { "" }
)),
from: FromString(address_list!((from) as comma_sep_list)),
@ -583,7 +583,7 @@ impl ConversationsListing {
subject: SubjectString(subject),
flag: FlagString(format!(
"{}{}",
if e.has_attachments() { "πŸ“Ž" } else { "" },
if thread.has_attachments() { "πŸ“Ž" } else { "" },
if thread.snoozed() { "πŸ’€" } else { "" }
)),
from: FromString(address_list!((from) as comma_sep_list)),