public System.Threading.Tasks.Task<bool> Save(string mail, string password, System.IO.DirectoryInfo imgDir) { return System.Threading.Tasks.Task.Factory.StartNew(() => { var args = new SavingSettingEventArgs(mail, password, imgDir); OnSavingSetting(args); if (args.Cancel) return false; GPlusImageDownloader.Properties.Settings.Default.EmailAddress = mail; GPlusImageDownloader.Properties.Settings.Default.Password = password; GPlusImageDownloader.Properties.Settings.Default.ImageSaveDirectory = imgDir.FullName; GPlusImageDownloader.Properties.Settings.Default.Save(); EmailAddress = mail; Password = password; ImageSaveDirectory = imgDir; if (!imgDir.Exists) try { imgDir.Create(); IsErrorNotFoundImageSaveDirectory = false; } catch { IsErrorNotFoundImageSaveDirectory = true; } else IsErrorNotFoundImageSaveDirectory = false; OnSavedSetting(new EventArgs()); SerializeCookie(Cookies); return true; }); }
protected virtual void OnSavingSetting(SavingSettingEventArgs e) { if (SavingSetting != null) SavingSetting(this, e); }
void Setting_SavingSetting(object sender, SavingSettingEventArgs e) { //設定が変更された場合、その変更が有効なものであるかをチェックする //そして変更が無効である場合にはe.Cancel = trueにする事で設定変更 //をキャンセルする。 //EmailAddress, Passwordが空文字だった場合には設定保存をキャンセルする。 if (string.IsNullOrEmpty(e.EmailAddress) || string.IsNullOrEmpty(e.Password)) { e.Cancel = true; _cookies = null; return; } //EmailAddress, Passwordに変化がある場合、あるいはストリーム監視中でなかった場合 //には再ログイン処理を行う。 if (Setting.EmailAddress != e.EmailAddress || Setting.Password != e.Password || !Downloader.IsWatchingStream) { //変更されたログイン情報を元に再ログインする。ログインに失敗した場合には //e.Cancel = trueにする。成功した場合には_cookiesにログイン済みクッキーを入れ、 //SavedSettingで設定変更が確定した時にSetting.Cookiesを更新する。 e.Cancel = !ImageDownloaderContainer.CheckCanAuth(e.EmailAddress, e.Password, out _cookies); if (e.Cancel) _cookies = null; } //何も変化が無く、ストリーム監視中だった場合には設定保存を許可しつつ、 //後のSetting_SavedSettingでSetting.Cookiesを更新して再接続しないようにする。 else _cookies = null; }