folder renaming configuration

concerns #27
embed
Manos Pitsidianakis 2018-08-19 14:54:32 +03:00
parent 84bf2d43be
commit 111f915ced
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
5 changed files with 21 additions and 2 deletions

View File

@ -490,6 +490,9 @@ impl BackendFolder for MaildirFolder {
fn name(&self) -> &str { fn name(&self) -> &str {
&self.name &self.name
} }
fn change_name(&mut self, s: &str) {
self.name = s.to_string();
}
fn children(&self) -> &Vec<usize> { fn children(&self) -> &Vec<usize> {
&self.children &self.children
} }

View File

@ -177,6 +177,7 @@ impl fmt::Debug for BackendOpGenerator {
pub trait BackendFolder: Debug { pub trait BackendFolder: Debug {
fn hash(&self) -> u64; fn hash(&self) -> u64;
fn name(&self) -> &str; fn name(&self) -> &str;
fn change_name(&mut self, &str);
fn clone(&self) -> Folder; fn clone(&self) -> Folder;
fn children(&self) -> &Vec<usize>; fn children(&self) -> &Vec<usize>;
} }
@ -193,6 +194,7 @@ impl BackendFolder for DummyFolder {
fn name(&self) -> &str { fn name(&self) -> &str {
"" ""
} }
fn change_name(&mut self, _s: &str) {}
fn clone(&self) -> Folder { fn clone(&self) -> Folder {
folder_default() folder_default()
} }

View File

@ -30,7 +30,7 @@ pub use self::email::*;
/* Mail backends. Currently only maildir is supported */ /* Mail backends. Currently only maildir is supported */
pub mod backends; pub mod backends;
use error::Result; use error::Result;
use mailbox::backends::{folder_default, Folder, MailBackend}; use mailbox::backends::{folder_default, Folder};
pub mod thread; pub mod thread;
pub use mailbox::thread::{build_threads, Container, Threads, SortOrder, SortField}; pub use mailbox::thread::{build_threads, Container, Threads, SortOrder, SortField};

View File

@ -39,6 +39,9 @@ pub struct FileAccount {
} }
impl FileAccount { impl FileAccount {
pub fn folders(&self) -> Option<&HashMap<String, String>> {
self.folders.as_ref()
}
pub fn folder(&self) -> &str { pub fn folder(&self) -> &str {
&self.root_folder &self.root_folder
} }

View File

@ -92,7 +92,18 @@ impl Account {
self.folders.len() self.folders.len()
} }
pub fn list_folders(&self) -> Vec<Folder> { pub fn list_folders(&self) -> Vec<Folder> {
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 { pub fn name(&self) -> &str {
&self.name &self.name