From aa9a6a31283a69a799c95ed3ff6a1a2b427d1891 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Sat, 7 Dec 2019 14:04:25 +0200 Subject: [PATCH] melib: add SpecialUseMailbox::detect_usage method --- melib/src/backends.rs | 22 ++++++++++++++++++++++ ui/src/conf.rs | 23 ++--------------------- ui/src/conf/accounts.rs | 2 +- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/melib/src/backends.rs b/melib/src/backends.rs index ec008f04..a6d0b1ba 100644 --- a/melib/src/backends.rs +++ b/melib/src/backends.rs @@ -370,6 +370,28 @@ impl Default for SpecialUsageMailbox { } } +impl SpecialUsageMailbox { + pub fn detect_usage(name: &str) -> Option { + if name.eq_ignore_ascii_case("inbox") { + Some(SpecialUsageMailbox::Inbox) + } else if name.eq_ignore_ascii_case("archive") { + Some(SpecialUsageMailbox::Archive) + } else if name.eq_ignore_ascii_case("drafts") { + Some(SpecialUsageMailbox::Drafts) + } else if name.eq_ignore_ascii_case("junk") { + Some(SpecialUsageMailbox::Junk) + } else if name.eq_ignore_ascii_case("spam") { + Some(SpecialUsageMailbox::Junk) + } else if name.eq_ignore_ascii_case("sent") { + Some(SpecialUsageMailbox::Sent) + } else if name.eq_ignore_ascii_case("trash") { + Some(SpecialUsageMailbox::Trash) + } else { + Some(SpecialUsageMailbox::Normal) + } + } +} + pub trait BackendFolder: Debug { fn hash(&self) -> FolderHash; fn name(&self) -> &str; diff --git a/ui/src/conf.rs b/ui/src/conf.rs index 65af869c..aa255da3 100644 --- a/ui/src/conf.rs +++ b/ui/src/conf.rs @@ -182,7 +182,8 @@ impl From for AccountConf { .split(if s.contains('/') { '/' } else { '.' }) .last() .unwrap_or(""); - folder_confs.get_mut(s).unwrap().folder_conf.usage = usage(name); + folder_confs.get_mut(s).unwrap().folder_conf.usage = + SpecialUsageMailbox::detect_usage(name); } if folder_confs[s].folder_conf().ignore.is_unset() { @@ -564,26 +565,6 @@ impl Serialize for CacheType { } } -pub fn usage(name: &str) -> Option { - if name.eq_ignore_ascii_case("inbox") { - Some(SpecialUsageMailbox::Inbox) - } else if name.eq_ignore_ascii_case("archive") { - Some(SpecialUsageMailbox::Archive) - } else if name.eq_ignore_ascii_case("drafts") { - Some(SpecialUsageMailbox::Drafts) - } else if name.eq_ignore_ascii_case("junk") { - Some(SpecialUsageMailbox::Junk) - } else if name.eq_ignore_ascii_case("spam") { - Some(SpecialUsageMailbox::Junk) - } else if name.eq_ignore_ascii_case("sent") { - Some(SpecialUsageMailbox::Sent) - } else if name.eq_ignore_ascii_case("trash") { - Some(SpecialUsageMailbox::Trash) - } else { - Some(SpecialUsageMailbox::Normal) - } -} - pub fn create_config_file(p: &Path) -> Result<()> { let mut file = OpenOptions::new() .write(true) diff --git a/ui/src/conf/accounts.rs b/ui/src/conf/accounts.rs index f20166cb..bbe6cdef 100644 --- a/ui/src/conf/accounts.rs +++ b/ui/src/conf/accounts.rs @@ -353,7 +353,7 @@ impl Account { } else { let mut new = FileFolderConf::default(); new.folder_conf.subscribe = super::ToggleFlag::InternalVal(true); - new.folder_conf.usage = super::usage(f.name()); + new.folder_conf.usage = SpecialUsageMailbox::detect_usage(f.name()); folder_confs.insert(f.hash(), new); } folder_names.insert(f.hash(), f.path().to_string());