summaryrefslogtreecommitdiffstats
path: root/ui/src/components
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2019-12-17 14:12:41 +0200
committerManos Pitsidianakis <el13635@mail.ntua.gr>2019-12-18 08:58:49 +0200
commit2b6f6ab42c4278cc2ff5f8c1819979d37b22ec50 (patch)
tree1c6b10b363837441738b02da24b30814d94401b0 /ui/src/components
parent7bd2b6932deefe01986686cfb8dd4e080f39c429 (diff)
melib: Add BackendFolder methods, move special usage logic to backend
- add count() method to return (unseen, total) counts - add is_subscribed() - add set_special_usage() and set_is_subscribed() concerns #8
Diffstat (limited to 'ui/src/components')
-rw-r--r--ui/src/components/mail/listing.rs28
-rw-r--r--ui/src/components/mail/status.rs44
2 files changed, 29 insertions, 43 deletions
diff --git a/ui/src/components/mail/listing.rs b/ui/src/components/mail/listing.rs
index d2f7dd16..e792b84e 100644
--- a/ui/src/components/mail/listing.rs
+++ b/ui/src/components/mail/listing.rs
@@ -770,17 +770,11 @@ impl Component for Listing {
} else {
return Some(String::new());
};
- let envelopes = account.collection.envelopes.clone();
- let envelopes = envelopes.read().unwrap();
format!(
"Mailbox: {}, Messages: {}, New: {}",
m.folder.name(),
m.envelopes.len(),
- m.envelopes
- .iter()
- .map(|h| &envelopes[&h])
- .filter(|e| !e.is_seen())
- .count()
+ m.folder.count().ok().map(|(v, _)| v).unwrap_or(0),
)
})
}
@@ -903,20 +897,12 @@ impl Listing {
) {
match context.accounts[index].status(entries[&folder_idx].hash()) {
Ok(_) => {
- let account = &context.accounts[index];
- let count = account[entries[&folder_idx].hash()]
- .unwrap()
- .envelopes
- .iter()
- .filter_map(|&h| {
- if account.collection.get_env(h).is_seen() {
- None
- } else {
- Some(())
- }
- })
- .count();
- lines.push((*depth, *inc, folder_idx, Some(count)));
+ lines.push((
+ *depth,
+ *inc,
+ folder_idx,
+ entries[&folder_idx].count().ok().map(|(v, _)| v),
+ ));
}
Err(_) => {
lines.push((*depth, *inc, folder_idx, None));
diff --git a/ui/src/components/mail/status.rs b/ui/src/components/mail/status.rs
index 653e5898..d0734614 100644
--- a/ui/src/components/mail/status.rs
+++ b/ui/src/components/mail/status.rs
@@ -291,18 +291,12 @@ impl StatusPanel {
self.content[(2, h + y + 1)].set_ch(' ');
}
}
+ let count = a.ref_folders.values().fold((0, 0), |acc, f| {
+ let count = f.count().unwrap_or((0, 0));
+ (acc.0 + count.0, acc.1 + count.1)
+ });
let (mut column_width, _) = write_string_to_grid(
- &format!(
- "Messages total {}, unseen {}",
- a.collection.len(),
- a.collection
- .envelopes
- .read()
- .unwrap()
- .values()
- .filter(|e| !e.is_seen())
- .count()
- ),
+ &format!("Messages total {}, unseen {}", count.1, count.0),
&mut self.content,
Color::Default,
Color::Default,
@@ -338,17 +332,7 @@ impl StatusPanel {
);
/* next column */
write_string_to_grid(
- &format!(
- "Messages total {}, unseen {}",
- a.collection.len(),
- a.collection
- .envelopes
- .read()
- .unwrap()
- .values()
- .filter(|e| !e.is_seen())
- .count()
- ),
+ "Special Mailboxes:",
&mut self.content,
Color::Default,
Color::Default,
@@ -356,6 +340,22 @@ impl StatusPanel {
((5 + column_width, y + 2), (120 - 2, y + 2)),
None,
);
+ for (i, f) in a
+ .ref_folders
+ .values()
+ .filter(|f| f.special_usage() != SpecialUsageMailbox::Normal)
+ .enumerate()
+ {
+ write_string_to_grid(
+ &format!("{}: {}", f.path(), f.special_usage()),
+ &mut self.content,
+ Color::Default,
+ Color::Default,
+ Attr::Default,
+ ((5 + column_width, y + 3 + i), (120 - 2, y + 2)),
+ None,
+ );
+ }
}
}
}