private void DoDownloadTab(string arg)
        {
            downloadButtonClicked = true;

            if (IsDownloading)
            {
                Dialog.Show(AppResources.Search_DownloadFailed);
                return;
            }
            TabEntity tab;

            if (_sortOrder == ResultsSortOrder.Alphabetical)
            {
                tab = SearchGroupTabs.Tabs.FirstOrDefault(t => t.SearchId == arg);
            }
            else
            {
                tab = SearchPopularTabs.FirstOrDefault(t => t.SearchId == arg);
            }
            //TODO create converter
            var entry = new SearchTabResultEntry
            {
                Id   = tab.SearchId,
                Url  = tab.SearchUrl,
                Type = tab.Type
            };

            var filePath = TabFileStorage.CreateTabFilePath();

            // TODO Do not depend on implementation!
            // TODO examine IO errors
            var downloader = new UltimateGuitarFileDownloader(entry, filePath);

            downloader.DownloadComplete += delegate(object sender, DownloadCompletedEventArgs args)
            {
                if (args.HasErrors)
                {
                    Deployment.Current.Dispatcher.BeginInvoke(
                        () => { IsDownloading = false; });
                }
                else
                {
                    DownloadTabComplete(tab, filePath);
                }
            };
            SearchInfoTextBlock = String.Format(AppResources.Search_Downloading, tab.Name);
            IsDownloading       = true;
            try
            {
                downloader.Download();
            }
            catch (Exception ex)
            {
                Dialog.Show(String.Format(AppResources.Search_Error, ex));
                IsDownloading = false;
            }
        }
Ejemplo n.º 2
0
 public UltimateGuitarFileDownloader(SearchTabResultEntry entry, string destination) : base(destination)
 {
     Entry = entry;
 }
 private bool FilterTab(SearchTabResultEntry entry)
 {
     return(true);
 }