private HashNode AddLocalAddressBook(IResource mapiFolder) { if (Folder.IsDeletedItems(mapiFolder)) { Folder.SetIgnoreImportAsync(mapiFolder, _folderType, true); return(null); } IResource parentFolder = Folder.GetParent(mapiFolder); if (parentFolder == null) { ResourceProxy proxy = new ResourceProxy(mapiFolder); proxy.DeleteAsync(); return(null); } if (Folder.IsRoot(parentFolder)) { return(_rootNode.InsertResource(mapiFolder)); } else { HashNode hasNode = AddLocalAddressBook(parentFolder); if (hasNode == null) { Folder.SetIgnoreImportAsync(mapiFolder, _folderType, true); return(null); } return(hasNode.InsertResource(mapiFolder)); } }
private void OnSearchDownloadClick() { // Check validity of result query urls. // If some url is invalid, abort further processing. // ToDo: just ignore invalid urls? string query = _searchEnginesPane.SearchQuery; string[] feedNames = _searchEnginesPane.CheckedFeedNames; string[] searchUrls = _searchEnginesPane.CheckedURLs; foreach (string url in searchUrls) { try { new Uri(url + query); } catch (Exception ex) { _searchEnginesPane.ErrorMessage = ex.Message; return; } } _progressLabel.Text = "Downloading..."; _nextButton.Enabled = false; _searchEnginesPane.ControlsEnabled = false; if (_newFeedProxy != null) { _newFeedProxy.DeleteAsync(); _newFeedProxy = null; } _rssMultipleUnitOfWork = new MultipleFeedsJob(searchUrls, feedNames, query, _searchEnginesPane.SearchPhrase); _rssMultipleUnitOfWork.DownloadTitleProgress += OnDownloadTitleProgress; _rssMultipleUnitOfWork.DownloadProgress += OnDownloadProgress; _rssMultipleUnitOfWork.ParseDone += OnMultipleParseDone; Core.NetworkAP.QueueJob(JobPriority.Immediate, _rssMultipleUnitOfWork); }