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 {
&self.name
}
fn change_name(&mut self, s: &str) {
self.name = s.to_string();
}
fn children(&self) -> &Vec<usize> {
&self.children
}

View File

@ -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<usize>;
}
@ -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()
}

View File

@ -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};

View File

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

View File

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