Ejemplo n.º 1
0
        /// <summary>
        /// Executes when the download button in the navigation bar is pressed.
        ///
        /// </summary>
        /// <param name="obj">Event sender</param>
        /// <param name="e">Event args</param>
        private void NavBar_DownloadButtonPress(object obj, MouseButtonEventArgs e)
        {
            // In case the app is loading a download of another webpage,
            // do not download anything else
            if (this.NavigationBar.loadingWebpageControl.IsEnabled ||
                OrganicUtility.IsLocalPageUrl(this.WebBrowser.Address))
            {
                return;
            }

            string url = this.WebBrowser.Address;   // Url to download
            var    webpageDownloader = new WebsiteDownloader.WebpageDownloader(
                url, AppData.DownloadedPagesLocation, websiteName: OrganicUtility.GetDomainName(url));

            // When the download is started enable the loading animation
            // When finished disable the loading animation
            webpageDownloader.StartedDownloading += (object sender, System.EventArgs ea) =>
            {
                this.NavigationBar.Dispatcher.Invoke(() => this.NavigationBar.loadingWebpageControl.IsEnabled = true);
            };
            webpageDownloader.FinishedDownloading += (object sender, System.EventArgs ea) =>
            {
                this.NavigationBar.Dispatcher.Invoke(() => this.NavigationBar.loadingWebpageControl.IsEnabled = false);
            };

            // Download the page asynchronously
            Task downloadTask = new Task(webpageDownloader.Download);

            downloadTask.Start();
        }