public MainWindowViewModel(Window owner)
{
if (owner == null)
throw new ArgumentNullException("owner");
Owner = owner;
_searchCommand = new SearchCommand(this);
_browseCommand = new BrowseCommand(this);
_saveCommand = new SaveCommand(this);
_settingsCommand = new SettingsCommand(this);
// load all enabled scrapers
_scrapers = ScraperLoader.Instance.EnabledScrapers;
if (!string.IsNullOrEmpty(Properties.Settings.Default.SelectedScraper))
CurrentScraper = _scrapers.FirstOrDefault(s => s.Name == Properties.Settings.Default.SelectedScraper);
if (CurrentScraper == null)
CurrentScraper = _scrapers.First();
// load output path from user settings
_outputPath = Properties.Settings.Default.OutputPath;
Mangas = new AsyncObservableCollection<MangaRecord>();
Chapters = new AsyncObservableCollection<ChapterRecord>();
Downloads = new AsyncObservableCollection<DownloadViewModel>();
SelectedChapters = new AsyncObservableCollection<ChapterRecord>();
ZipFile = true;
ProgressValue = 0;
_requestQueue = new AsyncRequestQueue(System.Threading.SynchronizationContext.Current);
_requestQueue.TasksCompleted += _requestQueue_TasksCompleted;
_requestQueue.Initialize();
_downloadsSemaphore = new FifoSemaphore(Properties.Settings.Default.MaxParallelDownloads);
if (Properties.Settings.Default.EnablePreload)
{
PreloadMangas();
}
}