diff --git a/melib/src/mailbox/backends/maildir.rs b/melib/src/mailbox/backends/maildir.rs index 64ca68206..2863ca890 100644 --- a/melib/src/mailbox/backends/maildir.rs +++ b/melib/src/mailbox/backends/maildir.rs @@ -490,6 +490,9 @@ impl BackendFolder for MaildirFolder { fn name(&self) -> &str { &self.name } + fn change_name(&mut self, s: &str) { + self.name = s.to_string(); + } fn children(&self) -> &Vec { &self.children } diff --git a/melib/src/mailbox/backends/mod.rs b/melib/src/mailbox/backends/mod.rs index 65ad69e1b..31f93c9c6 100644 --- a/melib/src/mailbox/backends/mod.rs +++ b/melib/src/mailbox/backends/mod.rs @@ -177,6 +177,7 @@ impl fmt::Debug for BackendOpGenerator { pub trait BackendFolder: Debug { fn hash(&self) -> u64; fn name(&self) -> &str; + fn change_name(&mut self, &str); fn clone(&self) -> Folder; fn children(&self) -> &Vec; } @@ -193,6 +194,7 @@ impl BackendFolder for DummyFolder { fn name(&self) -> &str { "" } + fn change_name(&mut self, _s: &str) {} fn clone(&self) -> Folder { folder_default() } diff --git a/melib/src/mailbox/mod.rs b/melib/src/mailbox/mod.rs index 6e9e4a356..eff564b2e 100644 --- a/melib/src/mailbox/mod.rs +++ b/melib/src/mailbox/mod.rs @@ -30,7 +30,7 @@ pub use self::email::*; /* Mail backends. Currently only maildir is supported */ pub mod backends; use error::Result; -use mailbox::backends::{folder_default, Folder, MailBackend}; +use mailbox::backends::{folder_default, Folder}; pub mod thread; pub use mailbox::thread::{build_threads, Container, Threads, SortOrder, SortField}; diff --git a/ui/src/conf/mod.rs b/ui/src/conf/mod.rs index cc80922f4..69fe37464 100644 --- a/ui/src/conf/mod.rs +++ b/ui/src/conf/mod.rs @@ -39,6 +39,9 @@ pub struct FileAccount { } impl FileAccount { + pub fn folders(&self) -> Option<&HashMap> { + self.folders.as_ref() + } pub fn folder(&self) -> &str { &self.root_folder } diff --git a/ui/src/types/accounts.rs b/ui/src/types/accounts.rs index c8dcb7f16..e2724ca78 100644 --- a/ui/src/types/accounts.rs +++ b/ui/src/types/accounts.rs @@ -92,7 +92,18 @@ impl Account { self.folders.len() } pub fn list_folders(&self) -> Vec { - self.backend.folders() + let mut folders = self.backend.folders(); + if let Some(folder_renames) = self.settings.conf().folders() { + eprintln!("folder renames: {:?}", folder_renames); + for f in &mut folders { + eprintln!("f.name() is {}", f.name()); + if let Some(name) = folder_renames.get(&f.name().to_ascii_lowercase()) { + eprintln!("name is {}", name); + f.change_name(name); + } + } + } + folders } pub fn name(&self) -> &str { &self.name