public override void LoadDataAsync(LoadCommand cmd, LoadDataAsyncParameters cmdParam, Action <PaneViewModelBase> success = null, Action <PaneViewModelBase, Exception> error = null) { base.LoadDataAsync(cmd, cmdParam, success, error); switch (cmd) { case LoadCommand.Load: case LoadCommand.Extract: case LoadCommand.Convert: WorkHandler.Run( () => { FileManager.Load((string)cmdParam.Payload); return(true); }, result => { IsLoaded = true; Initialize(); Drive = Drives.First(); if (success != null) { success.Invoke(this); } }, exception => { if (error != null) { error.Invoke(this, exception); } }); break; } }
private void OpenArchive(string path, Action <PaneViewModelBase> success, Action <PaneViewModelBase, Exception> error, string password = null) { WorkHandler.Run( () => { FileManager.Open(path, password); return(true); }, result => { IsLoaded = true; Initialize(); Drive = Drives.First(); if (success != null) { success.Invoke(this); } }, exception => { if (exception is PasswordProtectedException) { //var pwd = WindowManager.ShowTextInputDialog(Resx.PasswordRequired, Resx.PleaseEnterAPassword, string.Empty, null); //if (!string.IsNullOrEmpty(pwd)) //{ // OpenArchive(path, success, error, password); // return; //} } if (error != null) { error.Invoke(this, exception); } }); }
private FileSystemItemViewModel GetDefaultDrive() { if (Drives.Count == 0) { return(null); } return(Drives.FirstOrDefault(d => d.Name == "C:") ?? Drives.First()); }
private void ConnectCallback() { _doContentScanOn.Clear(); Initialize(); SetFavorites(); var defaultPath = string.IsNullOrEmpty(Connection.Model.DefaultPath) ? GetDefaultDrive() : Connection.Model.DefaultPath; var drive = GetDriveFromPath(defaultPath); if (drive != null && FileManager.FolderExists(defaultPath)) { PathCache.Add(drive, defaultPath); } Drive = drive ?? Drives.First(); if (!IsContentScanTriggerAvailable) { return; } //HACK: for testing purposes only if (FileManager.ServerType == FtpServerType.IIS) { ScanFolders = new Dictionary <int, FsdScanPath>() { { 1, new FsdScanPath { PathId = 1, Path = "/Hdd1/Content/0000000000000000/", ScanDepth = 2, Drive = "Hdd1" } } }; return; } var credentials = GetHttpLogin(); var username = credentials.UserName; var password = credentials.Password; switch (GetScanFolders(username, password)) { case HttpStatusCode.OK: if (!UserSettingsProvider.DisableFsdStatusPolling) { _statusUpdateTimer.Elapsed += StatusUpdateTimerOnElapsed; _statusUpdateTimer.Start(); } return; case HttpStatusCode.Unauthorized: bool result; do { var loginViewModel = Container.Resolve <ILoginViewModel>(); loginViewModel.Title = Resx.Login; loginViewModel.Message = Resx.LoginToFreestyleDashHttpServer; loginViewModel.Username = username; loginViewModel.Password = password; loginViewModel.IsRememberPasswordEnabled = true; var login = WindowManager.ShowLoginDialog(loginViewModel); if (login == null) { var answer = (DisableOption)WindowManager.ShowListInputDialog(Resx.DisableFsdContentScanTriggerTitle, Resx.DisableFsdContentScanTriggerMessage, DisableOption.None, GetDisableOptionList()); switch (answer) { case DisableOption.All: UserSettingsProvider.FsdContentScanTrigger = FsdContentScanTrigger.Disabled; break; case DisableOption.Single: Connection.IsHttpAccessDisabled = true; break; } result = true; } else { username = login.Username; password = login.Password; var status = GetScanFolders(username, password); if (status != HttpStatusCode.OK && status != HttpStatusCode.Unauthorized) { //TODO: handle different result then the previous one result = true; } else { result = status != HttpStatusCode.Unauthorized; if (result && login.RememberPassword == true) { Connection.HttpUsername = username; Connection.HttpPassword = password; EventAggregator.GetEvent <ConnectionDetailsChangedEvent>().Publish(new ConnectionDetailsChangedEventArgs(Connection)); } } } } while (!result); break; case HttpStatusCode.RequestTimeout: { var answer = (DisableOption)WindowManager.ShowListInputDialog(Resx.DisableFsdContentScanTriggerTitle, Resx.DisableFsdContentScanTriggerMessage, DisableOption.None, GetDisableOptionList()); switch (answer) { case DisableOption.All: UserSettingsProvider.FsdContentScanTrigger = FsdContentScanTrigger.Disabled; break; case DisableOption.Single: Connection.IsHttpAccessDisabled = true; break; } } break; } }