Esempio n. 1
0
 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);
         }
     });
 }
Esempio n. 3
0
 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;
            }
        }