public void CreateCategory() { MarkdownCategory category = new MarkdownCategory(UniverseVm.Model.Connection); category.Name = "New Category"; category.UniverseId = UniverseVm.Model.id; MarkdownCategoryDialog dialog = new MarkdownCategoryDialog(DialogOwner, Categories, category); bool?result = dialog.ShowDialog(); if (result.HasValue && result.Value) { category.Create(); MarkdownCategoryViewModel vm = new MarkdownCategoryViewModel(category, UniverseVm); Categories.Add(vm); if (category.ParentId != null) { vm.Parent = Categories.Single(i => i.Model.id == category.ParentId); vm.Parent.Children.Add(vm); } else { Items.Add(vm); } } }
public void Load() { Items.Clear(); List <MarkdownCategory> dbCategories = MarkdownCategory.GetAllMarkdownDocuments(UniverseVm.Model.Connection).Where(i => i.UniverseId == UniverseVm.Model.id).ToList(); List <MarkdownCategoryDocument> dbCatDocs = MarkdownCategoryDocument.GetAllMarkdownDocuments(UniverseVm.Model.Connection).ToList(); // Filter out "special" docs (attached to tickets or files) List <MarkdownDocument> dbDocs = MarkdownDocument.GetAllMarkdownDocuments(UniverseVm.Model.Connection).Where(i => i.UniverseId == UniverseVm.Model.id && !i.IsSpecial).ToList(); List <MarkdownCategoryViewModel> categories = dbCategories.Select(i => new MarkdownCategoryViewModel(i, UniverseVm)).ToList(); List <MarkdownDocumentViewModel> docs = dbDocs.Select(i => new MarkdownDocumentViewModel(i, UniverseVm)).ToList(); // Link up categories. foreach (var cat in categories) { Categories.Add(cat); cat.UniverseVm = UniverseVm; if (cat.Model.ParentId == null) { Items.Add(cat); } else { MarkdownCategoryViewModel parent = categories.Single(i => i.Model.id == cat.Model.ParentId); cat.Parent = parent; parent.Children.Add(cat); } // Find any documents that belong to this category. var catDocs = dbCatDocs.Where(i => i.MarkdownCategoryId == cat.Model.id).ToList(); foreach (var item in catDocs) { MarkdownDocumentViewModel doc = docs.Single(i => i.Model.id == item.MarkdownDocumentId); doc.Parent = cat; cat.Children.Add(doc); } } // Find any documents that are not in a category. foreach (var doc in docs.Where(i => i.Parent == null).ToList()) { Items.Add(doc); } }
private void okay() { if (string.IsNullOrWhiteSpace(nameTextBox.Text)) { nameTextBox.SelectAll(); nameTextBox.Focus(); return; } MarkdownCategory selectedCat = (MarkdownCategory)categoryComboBox.SelectedItem; if (selectedCat.id == -1) { _category.ParentId = null; } else { _category.ParentId = selectedCat.id; } _category.Name = nameTextBox.Text; this.DialogResult = true; Close(); }
public MarkdownCategoryDialog(Window owner, BindingList <MarkdownCategoryViewModel> categories, MarkdownCategory category) { InitializeComponent(); Owner = owner; Categories = new BindingList <MarkdownCategory>(); foreach (var c in categories) { if (c.Model.id != category.id) { Categories.Add(c.Model); } } // Add "No category" option. MarkdownCategory noCat = new MarkdownCategory(category.Connection); noCat.id = -1; noCat.Name = "NONE"; Categories.Insert(0, noCat); _category = category; }
public MarkdownCategoryViewModel(MarkdownCategory model, UniverseViewModel universe) { Model = model; UniverseVm = universe; }