public void MoveItemDown() { if (SelectedTreeViewItem is CategoryViewModel) { CategoryViewModel vm = SelectedTreeViewItem as CategoryViewModel; SubItems.MoveItemDown(vm); } else if (SelectedTreeViewItem is StoryViewModel) { StoryViewModel vm = SelectedTreeViewItem as StoryViewModel; if (vm.Model.CategoryId == null) { SubItems.MoveItemDown(vm); } else { CategoryViewModel category = Categories.Single(i => i.Model.id == vm.Model.CategoryId); category.Stories.MoveItemDown(vm); } } else if (SelectedTreeViewItem is ChapterViewModel) { ChapterViewModel vm = SelectedTreeViewItem as ChapterViewModel; vm.StoryVm.Chapters.MoveItemDown(vm); } else if (SelectedTreeViewItem is SceneViewModel) { SceneViewModel vm = SelectedTreeViewItem as SceneViewModel; vm.ChapterVm.Scenes.MoveItemDown(vm); } }
public bool CanMoveItemDown() { if (SelectedTreeViewItem == null) { return(false); } if (SelectedTreeViewItem is CategoryViewModel) { return(SubItems.CanMoveItemDown(SelectedTreeViewItem as CategoryViewModel)); } else if (SelectedTreeViewItem is StoryViewModel) { StoryViewModel vm = SelectedTreeViewItem as StoryViewModel; if (vm.Model.CategoryId == null) { return(SubItems.CanMoveItemDown(vm)); } else { CategoryViewModel category = Categories.Single(i => i.Model.id == vm.Model.CategoryId); return(category.Stories.CanMoveItemDown(vm)); } } else if (SelectedTreeViewItem is ChapterViewModel) { ChapterViewModel vm = SelectedTreeViewItem as ChapterViewModel; return(vm.StoryVm.Chapters.CanMoveItemDown(vm)); } else if (SelectedTreeViewItem is SceneViewModel) { SceneViewModel vm = SelectedTreeViewItem as SceneViewModel; return(vm.ChapterVm.Scenes.CanMoveItemDown(vm)); } return(false); }
public void UpdateStoryInTree(StoryViewModel story) { if (story.Model.CategoryId == null) { var cat = Categories.SingleOrDefault(i => i.Stories.Contains(story)); if (cat != null) { cat.Stories.Remove(story); cat.UpdateStorySortIndices(); } if (!SubItems.Contains(story)) { SubItems.Add(story); } } else { var cat = Categories.SingleOrDefault(i => i.Stories.Contains(story)); if (cat != null && cat.Model.id != story.Model.CategoryId) { cat.Stories.Remove(story); cat.UpdateStorySortIndices(); } else { cat = Categories.Single(i => i.Model.id == story.Model.CategoryId); if (!cat.Stories.Contains(story)) { cat.Stories.Add(story); } } } }
public void DeleteSubItem(IUniverseSubItem subItem) { if (subItem is StoryViewModel) { StoryViewModel story = (StoryViewModel)subItem; Stories.Remove(story); if (story.Model.CategoryId != null) { CategoryViewModel cat = Categories.Single(i => i.Model.id == story.Model.CategoryId); cat.Stories.Remove(story); cat.UpdateStorySortIndices(); } UpdateSubItemSortIndices(); } else if (subItem is CategoryViewModel) { CategoryViewModel cat = (CategoryViewModel)subItem; List <StoryViewModel> stories = cat.Stories.ToList(); foreach (var story in stories) { story.Model.CategoryId = null; story.SortIndex = SubItems.Max(i => i.SortIndex) + 1; story.Save(); SubItems.Add(story); } Categories.Remove(cat); SubItems.Remove(cat); UpdateSubItemSortIndices(); } }
public void CreateStory() { Story story = new Story(Model.Connection); story.UniverseId = Model.id; StoryPropertiesDialog dialog = new StoryPropertiesDialog(DialogOwner, story, Categories); bool?result = dialog.ShowDialog(); if (result.HasValue && result.Value) { if (story.CategoryId == null) { if (SubItems.Count > 0) { story.SortIndex = SubItems.Max(i => i.SortIndex) + 1; } else { story.SortIndex = 0; } } else { if (Stories.Count(i => i.Model.CategoryId == story.CategoryId) > 0) { story.SortIndex = Stories.Where(i => i.Model.CategoryId == story.CategoryId).Max(i => i.SortIndex + 1); } else { story.SortIndex = 0; } } story.Create(); StoryViewModel storyVm = new StoryViewModel(story); storyVm.UniverseVm = this; Stories.Add(storyVm); UpdateStoryInTree(storyVm); } }