private void DrawMaintenanceItems() { MaintenanceItemsListBox.Items.Clear(); if (MaintenanceItems != null) { foreach (var item in MaintenanceItems) { var listBoxItem = new ListBoxItem() { Content = item.ToString(), Tag = item, FontWeight = FontWeights.Bold, Background = (item.DueNow()) ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.White), }; MaintenanceItemsListBox.Items.Add(listBoxItem); if (item == SelectedMaintenanceItem) { listBoxItem.IsSelected = true; } } } MaintenanceItemActions.IsReadOnly = (SelectedMaintenanceItem == null); if (SelectedCompleteItem != null) { SelectedCompleteItem.Actions = CompletedItemActions.Text; SelectedCompleteItem = null; } CompletedItemActions.Text = ""; CompletedItemActions.IsReadOnly = true; SetSelectedItem(SelectedMaintenanceItem); }
private void MaintenanceItemsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count == 1) { SetSelectedItem(((e.AddedItems[0] as ListBoxItem).Tag as MaintenanceItem)); } if (SelectedCompleteItem != null) { SelectedCompleteItem.Actions = CompletedItemActions.Text; SelectedCompleteItem = null; } CompletedItemActions.Text = ""; CompletedItemActions.IsReadOnly = true; }
private void CloseButton_Click(object sender, RoutedEventArgs e) { if (SelectedMaintenanceItem != null) { SelectedMaintenanceItem.Actions = MaintenanceItemActions.Text; } if (SelectedCompleteItem != null) { SelectedCompleteItem.Actions = CompletedItemActions.Text; SelectedCompleteItem = null; } CompletedItemActions.Text = ""; CompletedItemActions.IsReadOnly = true; Close(); }
private void CompletedItemsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count == 1) { if (SelectedCompleteItem != null) { SelectedCompleteItem.Actions = CompletedItemActions.Text; } SelectedCompleteItem = ((e.AddedItems[0] as ListBoxItem).Tag as CompletedItem); if (SelectedCompleteItem != null) { CompletedItemActions.Text = SelectedCompleteItem.Actions; CompletedItemActions.IsReadOnly = false; } } }
private void SetSelectedItem(MaintenanceItem maintenanceItem) { if (maintenanceItem == null) { return; } if (SelectedMaintenanceItem != null && SelectedMaintenanceItem != maintenanceItem) { SelectedMaintenanceItem.Actions = MaintenanceItemActions.Text; } SelectedMaintenanceItem = maintenanceItem; if (SelectedMaintenanceItem != null) { MaintenanceItemActions.Text = SelectedMaintenanceItem.Actions; MaintenanceItemActions.IsReadOnly = false; SelectedCompleteItem = null; DrawCompleteItems(); } else { MaintenanceItemActions.IsReadOnly = true; } }
private List <CompletedItem> BuildCompletedItemsList(string html, string keyWords) { bool isDirectMatch; List <CompletedItem> completedItems = new List <CompletedItem>(); CompletedItem completedItem = new CompletedItem(); HtmlDocument htmlDocument = new HtmlDocument(); htmlDocument.LoadHtml(html); var productsHtml = htmlDocument.DocumentNode.Descendants("ul") .Where(node => node.GetAttributeValue("class", "") .Contains("srp-results")).ToList(); var productListItems = productsHtml[0].Descendants("li") .Where(node => node.GetAttributeValue("class", "") .Contains("s-item")).ToList(); foreach (var productListItem in productListItems) { isDirectMatch = true; // We do not want to include International for now, so if the listing is international, we want to take it out of our list. string location = GetNodeInnerText(productListItem.Descendants("span") .Where(node => node.GetAttributeValue("class", "") .Contains("s-item__location")).FirstOrDefault()); if (location != "") { continue; //on to the next listing } // Weed out any "related" items ebay wants to throw in there by double-checking our keywords against the title string[] keyWordsArray = keyWords.Split(" "); string title = GetNodeInnerText(productListItem.Descendants("h3") .Where(node => node.GetAttributeValue("class", "") .Contains("s-item__title")).FirstOrDefault()); foreach (string keyWord in keyWordsArray) { if (title.IndexOf(keyWord, StringComparison.OrdinalIgnoreCase) == -1) { isDirectMatch = false; } } if (!isDirectMatch) { continue; } completedItem = new CompletedItem() { Title = title, Condition = GetNodeInnerText(productListItem.Descendants("span") .Where(node => node.GetAttributeValue("class", "") .Contains("SECONDARY_INFO")).FirstOrDefault()), ItemPrice = GetNodeInnerText(productListItem.Descendants("span") .Where(node => node.GetAttributeValue("class", "") .Contains("s-item__price")).FirstOrDefault()), ShippingPrice = GetNodeInnerText(productListItem.Descendants("span") .Where(node => node.GetAttributeValue("class", "") .Contains("s-item__shipping")).FirstOrDefault()), //ItemLocation = GetNodeInnerText(productListItem.Descendants("span") // .Where(node => node.GetAttributeValue("class", "") // .Contains("s-item__location")).FirstOrDefault()), thumbnailUrl = productListItem.Descendants("img") .Where(node => node.GetAttributeValue("class", "") .Contains("s-item__image-img")).FirstOrDefault().GetAttributeValue("src", ""), url = productListItem.Descendants("a") .Where(node => node.GetAttributeValue("class", "") .Contains("s-item__link")).FirstOrDefault().GetAttributeValue("href", ""), WasSold = !productListItem.Descendants("span") .Where(node => node.GetAttributeValue("class", "") .Equals("NEGATIVE")).Any(), WasBuyItNow = productListItem.Descendants("span") .Where(node => node.GetAttributeValue("class", "") .Equals("s-item__purchase-options-with-icon")).Any() }; if (completedItem.WasSold) { completedItem.EndDate = GetNodeInnerText(productListItem.Descendants("span") .Where(node => node.GetAttributeValue("class", "") .Contains("POSITIVE")).FirstOrDefault()); } else { completedItem.EndDate = GetNodeInnerText(productListItem.Descendants("span") .Where(node => node.GetAttributeValue("class", "") .Contains("NEGATIVE")).FirstOrDefault()); } //Extract the ebay identifier from the the URL. Probably a better way to do this via RegEx, but for now I'm just looking for everything between // the last slash in the URL and the question mark, which is where the Item ID lives. int slashIndex = completedItem.url.LastIndexOf("/") + 1; int questionMarkIndex = completedItem.url.LastIndexOf("?"); completedItem.ItemId = completedItem.url.Substring(slashIndex, questionMarkIndex - slashIndex); completedItems.Add(completedItem); } return(completedItems); }