Просмотр исходного кода

Added button for viewing tracking kanban in editor

Kenric Nugteren 6 месяцев назад
Родитель
Сommit
d7392b85f5
1 измененных файлов с 23 добавлено и 11 удалено
  1. 23 11
      prs.desktop/MainWindow.xaml.cs

+ 23 - 11
prs.desktop/MainWindow.xaml.cs

@@ -2793,6 +2793,10 @@ public partial class MainWindow : IPanelHostControl
             }
             menu.AddSeparatorIfNeeded();
             CreateTaskMenu(menu, "(No Task Selected)", Guid.Empty);
+            if(_kanbantrackingassignment is not null && _kanbantrackingassignment.Task.ID != Guid.Empty)
+            {
+                menu.AddItem("View Task", null, _kanbantrackingassignment.Task.ID, ViewTrackingKanban_Click);
+            }
             menu.AddSeparatorIfNeeded();
 
             var filterItem = menu.AddItem(TrackingKanbanFilterComponent.Text, TrackingKanbanFilterComponent.Image, null);
@@ -2803,6 +2807,17 @@ public partial class MainWindow : IPanelHostControl
         _trackingKanbanMenu = menu;
     }
 
+    private void ViewTrackingKanban_Click(Guid guid)
+    {
+        var item = Client.Query(
+            new Filter<Kanban>(x => x.ID).IsEqualTo(guid),
+            DynamicGridUtils.LoadEditorColumns<Kanban>())
+            .ToObjects<Kanban>().FirstOrDefault();
+        if (item is null) return;
+
+        DynamicGridUtils.EditEntity(item);
+    }
+
     private Assignment? _kanbantrackingassignment = null;
     private CoreFilterDefinitions? _kanbanTrackingFilter = null;
 
@@ -2852,18 +2867,15 @@ public partial class MainWindow : IPanelHostControl
 
     private void CreateTaskMenu(ItemsControl menu, string title, Guid id)
     {
-        var item = new MenuItem()
-        {
-            Header = title,
-            Tag = id
-        };
-        item.Click += (o, args) =>
-        {
-            if (o is not MenuItem menu) return;
+        menu.AddCheckMenuItem(title, (title, id), TrackingKanbanMenuItem_Click, isChecked: _kanbantrackingassignment?.Task.ID == id);
+    }
 
-            SetTrackingKanban((Guid)item.Tag, (menu.Header as string) ?? "");
-        };
-        menu.Items.Add(item);
+    private void TrackingKanbanMenuItem_Click((string title, Guid id) tuple, bool isChecked)
+    {
+        if (isChecked)
+        {
+            SetTrackingKanban(tuple.id, tuple.title);
+        }
     }
 
     #endregion