public void RemoveDraft(string id) { if (string.IsNullOrEmpty(id)) { return; } //Get exist var existMail = DraftList.FirstOrDefault(item => { return(item.ID == id); }); if (existMail == null) { return; } //Delete Attachments string folder = DraftFolder.CombinePath(id); var dirInfo = new DirectoryInfo(folder); if (dirInfo.Exists) { dirInfo.Delete(true); } //Delete Mail Content DraftList.Remove(existMail); SerializeAssistant.Serialize(draftBinPath, DraftList); System.Diagnostics.Debug.WriteLine("Remove " + existMail.ID); }
private void SaveOutboxLocal() { string folder = DataFolder.CombinePath(UserAddress); EnsureCreateFolder(folder); string path = folder.CombinePath("Out.bin"); EnsureCreateFile(path); SerializeAssistant.Serialize(path, OutboxList); }
protected override void Init() { //Ensure local path created. DataFolder = AppDomain.CurrentDomain.BaseDirectory + "Data"; DraftFolder = DataFolder + "\\Draft"; InboxFolder = DataFolder + "\\Inbox"; draftBinPath = DraftFolder.CombinePath("Draft.bin"); UserBinPath = DataFolder.CombinePath("User.bin"); EnsureCreateFolder(DataFolder); EnsureCreateFolder(DraftFolder); EnsureCreateFolder(InboxFolder); EnsureCreateFile(UserBinPath); //Get stored data userAssistant = new UserAssistant(UserBinPath); var obj = SerializeAssistant.Deserialize(draftBinPath); if (null != obj) { BindingList <MailBase> drafts = null; drafts = obj as BindingList <MailBase>; if (drafts != null) { DraftList = drafts; } } UpdateSettings(UseImap); //Init commands. LoginCommand = new RelayCommand <object>(Login, o => { return(!(IsLogined || string.IsNullOrEmpty(UserAddress) || IsRequesting)); }); LoginIfAutoCommand = new RelayCommand <object>(CheckAutoLogin, o => !IsLogined); LogoutCommand = new RelayCommand(Logout, () => IsLogined); GetInboxMailCommand = new RelayCommand(GetInboxMail, () => IsLogined && !IsRequesting); ReplyCommand = new RelayCommand <object>(ReplyMailFrom); ForwardCommand = new RelayCommand <object>(ForwardTo); AddNewDraftCommand = new RelayCommand <object>(NavigateNewDraft); DeleteDraftCommand = new RelayCommand <object>(DeleteDraft); SaveAttachmentCommand = new RelayCommand <object>(SaveAttachmentAs); DeleteOutboxMailCommand = new RelayCommand <object>(DeleteOutboxMail); DeleteInboxMailCommand = new RelayCommand <object>(DeleteInboxMail, o => !IsRequesting); ForgetUserCommand = new RelayCommand <object>(RemoveLocalUserActon, o => IsLogined); RemoveUserFromRecentCommand = new RelayCommand <object>(RemoveUserFromRecentAction); NavigationInMainCommand = new RelayCommand <object>(Navigate); }
public void SaveDraftChanges(MailBase mail) { string mailId = mail.ID; if (string.IsNullOrEmpty(mailId)) { mail.ID = CreateId(); this.AddDraft(mail); } else { var existMail = DraftList.FirstOrDefault(item => { return(item.ID == mailId); }); if (existMail == null) { this.AddDraft(mail); } else { System.Diagnostics.Debug.WriteLine("Save changes of " + mail.ID); if (string.IsNullOrEmpty(mail.Subject) && string.IsNullOrEmpty(mail.BodyHtml) && string.IsNullOrEmpty(mail.BodyText)) { RemoveDraft(mail.ID); } else { existMail.SyncButNoIdTo(mail); SerializeAssistant.Serialize(draftBinPath, DraftList); } } } }
public void AddDraft(MailBase mail) { if (null == mail) { return; } if (DraftList.Contains(mail)) { return; } if (string.IsNullOrEmpty(mail.Subject) && string.IsNullOrEmpty(mail.BodyHtml) && string.IsNullOrEmpty(mail.BodyText)) { return; } if (string.IsNullOrEmpty(mail.ID)) { mail.ID = CreateId(); } System.Diagnostics.Debug.WriteLine("Add " + mail.ID); DraftList.Add(mail); SerializeAssistant.Serialize(draftBinPath, DraftList); }