/// <summary>
        /// Method for adding download
        /// </summary>
        /// <param name="param">Download param</param>
        private void AddDownload(object param)
        {
            try
            {
                //create opener for new download adding window
                IWindowOpener windowOpener = new WindowOpener();
                windowOpener.OpenNewWindow(new NewDownloadVM());
                if (DownloaderManager.Instance.LastDownload != null
                    && !_itemsToDownloaders.Contains(DownloaderManager.Instance.LastDownload))
                {
                    Downloader fileToDownload = DownloaderManager.Instance.LastDownload;
                    fileToDownload.DownloadEnded += OnDownloadEnded;

                    //create download viewer control
                    IControlCreator controlCreator = new ControlCreator();
                    DownloadViewerVM model = new DownloadViewerVM(fileToDownload);
                    var viewer = controlCreator.CreateControl(model);

                    if (!_itemsToDownloaders.Keys.OfType<Downloader>().Contains(fileToDownload))
                    {
                        _itemsToDownloaders.Add(fileToDownload, viewer);
                        NotifyPropertyChanged("ItemsToDownloaders");
                    }

                    NotifyPropertyChanged("TotalBytesDownloadedStatistic");
                    NotifyPropertyChanged("DownloadStatesStatistic");
                    NotifyPropertyChanged("DownloadTypesStatistic");
                }
            }
            catch (ArgumentNullException)
            {

            }
            catch (UriFormatException)
            {
                MessageBox.Show("Invalid url format", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        private void AddSavedDownloads()
        {
            try
            {
                var downloads = DownloadsSerializer.Deserialize();
                foreach (var fileToDownload in downloads)
                {
                    if (fileToDownload.State.State != DownloadState.Ended
                        && fileToDownload.State.State != DownloadState.EndedWithError)
                    {
                        DownloaderManager.Instance.Add(fileToDownload, true);
                    }

                    using (var container = AutofacHelper.Container)
                    {
                        var controlCreator = new ControlCreator();
                        var viewer = controlCreator.CreateControl(new DownloadViewerVM(fileToDownload));
                        _itemsToDownloaders.Add(fileToDownload, viewer);
                    }
                }

                NotifyPropertyChanged("ItemsToDownloaders");
            }
            catch (FileNotFoundException)
            {
                throw new FileNotFoundException();
            }
        }
        /// <summary>
        /// Add new download from console argument url
        /// Need when we run DM from browser (run by cmd command with url param)
        /// </summary>
        public void AddDownloadFromArgs()
        {
            try
            {
                AddDownload(Settings.Default.ArgsUrl);
                //for update info
                Thread.Sleep(2000);
                Downloader fileToDownload = DownloaderManager.Instance.LastDownload;
                IControlCreator controlCreator = new ControlCreator();
                DownloadViewerVM model = new DownloadViewerVM(fileToDownload);
                var viewer = controlCreator.CreateControl(model);

                if (!_itemsToDownloaders.Keys.OfType<Downloader>().Contains(fileToDownload))
                {
                    _itemsToDownloaders.Add(fileToDownload, viewer);
                    NotifyPropertyChanged("ItemsToDownloaders");
                }

                NotifyPropertyChanged("TotalBytesDownloadedStatistic");
                NotifyPropertyChanged("DownloadStatesStatistic");
                NotifyPropertyChanged("DownloadTypesStatistic");
            }
            catch (ArgumentNullException)
            {

            }
        }