mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-20 19:55:00 +00:00
code_style: move dynamic context menu creation to view models
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
parent
673b335a2a
commit
a5bdcab341
2 changed files with 144 additions and 140 deletions
|
@ -118,20 +118,6 @@ namespace SourceGit.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool EnableTopoOrderInHistories
|
|
||||||
{
|
|
||||||
get => _settings.EnableTopoOrderInHistories;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (value != _settings.EnableTopoOrderInHistories)
|
|
||||||
{
|
|
||||||
_settings.EnableTopoOrderInHistories = value;
|
|
||||||
OnPropertyChanged();
|
|
||||||
Task.Run(RefreshCommits);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool OnlyHighlightCurrentBranchInHistories
|
public bool OnlyHighlightCurrentBranchInHistories
|
||||||
{
|
{
|
||||||
get => _settings.OnlyHighlighCurrentBranchInHistories;
|
get => _settings.OnlyHighlighCurrentBranchInHistories;
|
||||||
|
@ -145,20 +131,6 @@ namespace SourceGit.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Models.TagSortMode TagSortMode
|
|
||||||
{
|
|
||||||
get => _settings.TagSortMode;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (value != _settings.TagSortMode)
|
|
||||||
{
|
|
||||||
_settings.TagSortMode = value;
|
|
||||||
OnPropertyChanged();
|
|
||||||
VisibleTags = BuildVisibleTags();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Filter
|
public string Filter
|
||||||
{
|
{
|
||||||
get => _filter;
|
get => _filter;
|
||||||
|
@ -1470,6 +1442,97 @@ namespace SourceGit.ViewModels
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ContextMenu CreateContextMenuForHistoriesPage()
|
||||||
|
{
|
||||||
|
var layout = new MenuItem();
|
||||||
|
layout.Header = App.Text("Repository.HistoriesLayout");
|
||||||
|
layout.IsEnabled = false;
|
||||||
|
|
||||||
|
var isHorizontal = Preferences.Instance.UseTwoColumnsLayoutInHistories;
|
||||||
|
var horizontal = new MenuItem();
|
||||||
|
horizontal.Header = App.Text("Repository.HistoriesLayout.Horizontal");
|
||||||
|
if (isHorizontal)
|
||||||
|
horizontal.Icon = App.CreateMenuIcon("Icons.Check");
|
||||||
|
horizontal.Click += (_, ev) =>
|
||||||
|
{
|
||||||
|
Preferences.Instance.UseTwoColumnsLayoutInHistories = true;
|
||||||
|
ev.Handled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
var vertical = new MenuItem();
|
||||||
|
vertical.Header = App.Text("Repository.HistoriesLayout.Vertical");
|
||||||
|
if (!isHorizontal)
|
||||||
|
vertical.Icon = App.CreateMenuIcon("Icons.Check");
|
||||||
|
vertical.Click += (_, ev) =>
|
||||||
|
{
|
||||||
|
Preferences.Instance.UseTwoColumnsLayoutInHistories = false;
|
||||||
|
ev.Handled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
var order = new MenuItem();
|
||||||
|
order.Header = App.Text("Repository.HistoriesOrder");
|
||||||
|
order.IsEnabled = false;
|
||||||
|
|
||||||
|
var dateOrder = new MenuItem();
|
||||||
|
dateOrder.Header = App.Text("Repository.HistoriesOrder.ByDate");
|
||||||
|
dateOrder.SetValue(Views.MenuItemExtension.CommandProperty, "--date-order");
|
||||||
|
if (!_settings.EnableTopoOrderInHistories)
|
||||||
|
dateOrder.Icon = App.CreateMenuIcon("Icons.Check");
|
||||||
|
dateOrder.Click += (_, ev) =>
|
||||||
|
{
|
||||||
|
if (_settings.EnableTopoOrderInHistories)
|
||||||
|
{
|
||||||
|
_settings.EnableTopoOrderInHistories = false;
|
||||||
|
Task.Run(RefreshCommits);
|
||||||
|
}
|
||||||
|
|
||||||
|
ev.Handled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
var topoOrder = new MenuItem();
|
||||||
|
topoOrder.Header = App.Text("Repository.HistoriesOrder.Topo");
|
||||||
|
topoOrder.SetValue(Views.MenuItemExtension.CommandProperty, "--top-order");
|
||||||
|
if (_settings.EnableTopoOrderInHistories)
|
||||||
|
topoOrder.Icon = App.CreateMenuIcon("Icons.Check");
|
||||||
|
topoOrder.Click += (_, ev) =>
|
||||||
|
{
|
||||||
|
if (!_settings.EnableTopoOrderInHistories)
|
||||||
|
{
|
||||||
|
_settings.EnableTopoOrderInHistories = true;
|
||||||
|
Task.Run(RefreshCommits);
|
||||||
|
}
|
||||||
|
|
||||||
|
ev.Handled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
var others = new MenuItem();
|
||||||
|
others.Header = App.Text("Repository.HistoriesOptions");
|
||||||
|
others.IsEnabled = false;
|
||||||
|
|
||||||
|
var showTagsInGraph = new MenuItem();
|
||||||
|
showTagsInGraph.Header = App.Text("Repository.HistoriesOptions.ShowTagsInGraph");
|
||||||
|
if (Preferences.Instance.ShowTagsInGraph)
|
||||||
|
showTagsInGraph.Icon = App.CreateMenuIcon("Icons.Check");
|
||||||
|
showTagsInGraph.Click += (_, ev) =>
|
||||||
|
{
|
||||||
|
Preferences.Instance.ShowTagsInGraph = !Preferences.Instance.ShowTagsInGraph;
|
||||||
|
ev.Handled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
var menu = new ContextMenu();
|
||||||
|
menu.Items.Add(layout);
|
||||||
|
menu.Items.Add(horizontal);
|
||||||
|
menu.Items.Add(vertical);
|
||||||
|
menu.Items.Add(new MenuItem() { Header = "-" });
|
||||||
|
menu.Items.Add(order);
|
||||||
|
menu.Items.Add(dateOrder);
|
||||||
|
menu.Items.Add(topoOrder);
|
||||||
|
menu.Items.Add(new MenuItem() { Header = "-" });
|
||||||
|
menu.Items.Add(others);
|
||||||
|
menu.Items.Add(showTagsInGraph);
|
||||||
|
return menu;
|
||||||
|
}
|
||||||
|
|
||||||
public ContextMenu CreateContextMenuForLocalBranch(Models.Branch branch)
|
public ContextMenu CreateContextMenuForLocalBranch(Models.Branch branch)
|
||||||
{
|
{
|
||||||
var menu = new ContextMenu();
|
var menu = new ContextMenu();
|
||||||
|
@ -2065,6 +2128,55 @@ namespace SourceGit.ViewModels
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ContextMenu CreateContextMenuForTagSortMode()
|
||||||
|
{
|
||||||
|
var mode = _settings.TagSortMode;
|
||||||
|
var changeMode = new Action<Models.TagSortMode>((m) =>
|
||||||
|
{
|
||||||
|
if (_settings.TagSortMode != m)
|
||||||
|
{
|
||||||
|
_settings.TagSortMode = m;
|
||||||
|
VisibleTags = BuildVisibleTags();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var byCreatorDate = new MenuItem();
|
||||||
|
byCreatorDate.Header = App.Text("Repository.Tags.OrderByCreatorDate");
|
||||||
|
if (mode == Models.TagSortMode.CreatorDate)
|
||||||
|
byCreatorDate.Icon = App.CreateMenuIcon("Icons.Check");
|
||||||
|
byCreatorDate.Click += (_, ev) =>
|
||||||
|
{
|
||||||
|
changeMode(Models.TagSortMode.CreatorDate);
|
||||||
|
ev.Handled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
var byNameAsc = new MenuItem();
|
||||||
|
byNameAsc.Header = App.Text("Repository.Tags.OrderByNameAsc");
|
||||||
|
if (mode == Models.TagSortMode.NameInAscending)
|
||||||
|
byNameAsc.Icon = App.CreateMenuIcon("Icons.Check");
|
||||||
|
byNameAsc.Click += (_, ev) =>
|
||||||
|
{
|
||||||
|
changeMode(Models.TagSortMode.NameInAscending);
|
||||||
|
ev.Handled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
var byNameDes = new MenuItem();
|
||||||
|
byNameDes.Header = App.Text("Repository.Tags.OrderByNameDes");
|
||||||
|
if (mode == Models.TagSortMode.NameInDescending)
|
||||||
|
byNameDes.Icon = App.CreateMenuIcon("Icons.Check");
|
||||||
|
byNameDes.Click += (_, ev) =>
|
||||||
|
{
|
||||||
|
changeMode(Models.TagSortMode.NameInDescending);
|
||||||
|
ev.Handled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
var menu = new ContextMenu();
|
||||||
|
menu.Items.Add(byCreatorDate);
|
||||||
|
menu.Items.Add(byNameAsc);
|
||||||
|
menu.Items.Add(byNameDes);
|
||||||
|
return menu;
|
||||||
|
}
|
||||||
|
|
||||||
public ContextMenu CreateContextMenuForSubmodule(string submodule)
|
public ContextMenu CreateContextMenuForSubmodule(string submodule)
|
||||||
{
|
{
|
||||||
var open = new MenuItem();
|
var open = new MenuItem();
|
||||||
|
|
|
@ -396,83 +396,8 @@ namespace SourceGit.Views
|
||||||
{
|
{
|
||||||
if (sender is Button button && DataContext is ViewModels.Repository repo)
|
if (sender is Button button && DataContext is ViewModels.Repository repo)
|
||||||
{
|
{
|
||||||
var layout = new MenuItem();
|
var menu = repo.CreateContextMenuForHistoriesPage();
|
||||||
layout.Header = App.Text("Repository.HistoriesLayout");
|
menu?.Open(button);
|
||||||
layout.IsEnabled = false;
|
|
||||||
|
|
||||||
var isHorizontal = ViewModels.Preferences.Instance.UseTwoColumnsLayoutInHistories;
|
|
||||||
var horizontal = new MenuItem();
|
|
||||||
horizontal.Header = App.Text("Repository.HistoriesLayout.Horizontal");
|
|
||||||
if (isHorizontal)
|
|
||||||
horizontal.Icon = App.CreateMenuIcon("Icons.Check");
|
|
||||||
horizontal.Click += (_, ev) =>
|
|
||||||
{
|
|
||||||
ViewModels.Preferences.Instance.UseTwoColumnsLayoutInHistories = true;
|
|
||||||
ev.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var vertical = new MenuItem();
|
|
||||||
vertical.Header = App.Text("Repository.HistoriesLayout.Vertical");
|
|
||||||
if (!isHorizontal)
|
|
||||||
vertical.Icon = App.CreateMenuIcon("Icons.Check");
|
|
||||||
vertical.Click += (_, ev) =>
|
|
||||||
{
|
|
||||||
ViewModels.Preferences.Instance.UseTwoColumnsLayoutInHistories = false;
|
|
||||||
ev.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var order = new MenuItem();
|
|
||||||
order.Header = App.Text("Repository.HistoriesOrder");
|
|
||||||
order.IsEnabled = false;
|
|
||||||
|
|
||||||
var dateOrder = new MenuItem();
|
|
||||||
dateOrder.Header = App.Text("Repository.HistoriesOrder.ByDate");
|
|
||||||
dateOrder.SetValue(MenuItemExtension.CommandProperty, "--date-order");
|
|
||||||
if (!repo.EnableTopoOrderInHistories)
|
|
||||||
dateOrder.Icon = App.CreateMenuIcon("Icons.Check");
|
|
||||||
dateOrder.Click += (_, ev) =>
|
|
||||||
{
|
|
||||||
repo.EnableTopoOrderInHistories = false;
|
|
||||||
ev.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var topoOrder = new MenuItem();
|
|
||||||
topoOrder.Header = App.Text("Repository.HistoriesOrder.Topo");
|
|
||||||
topoOrder.SetValue(MenuItemExtension.CommandProperty, "--top-order");
|
|
||||||
if (repo.EnableTopoOrderInHistories)
|
|
||||||
topoOrder.Icon = App.CreateMenuIcon("Icons.Check");
|
|
||||||
topoOrder.Click += (_, ev) =>
|
|
||||||
{
|
|
||||||
repo.EnableTopoOrderInHistories = true;
|
|
||||||
ev.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var others = new MenuItem();
|
|
||||||
others.Header = App.Text("Repository.HistoriesOptions");
|
|
||||||
others.IsEnabled = false;
|
|
||||||
|
|
||||||
var showTagsInGraph = new MenuItem();
|
|
||||||
showTagsInGraph.Header = App.Text("Repository.HistoriesOptions.ShowTagsInGraph");
|
|
||||||
if (ViewModels.Preferences.Instance.ShowTagsInGraph)
|
|
||||||
showTagsInGraph.Icon = App.CreateMenuIcon("Icons.Check");
|
|
||||||
showTagsInGraph.Click += (_, ev) =>
|
|
||||||
{
|
|
||||||
ViewModels.Preferences.Instance.ShowTagsInGraph = !ViewModels.Preferences.Instance.ShowTagsInGraph;
|
|
||||||
ev.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var menu = new ContextMenu();
|
|
||||||
menu.Items.Add(layout);
|
|
||||||
menu.Items.Add(horizontal);
|
|
||||||
menu.Items.Add(vertical);
|
|
||||||
menu.Items.Add(new MenuItem() { Header = "-" });
|
|
||||||
menu.Items.Add(order);
|
|
||||||
menu.Items.Add(dateOrder);
|
|
||||||
menu.Items.Add(topoOrder);
|
|
||||||
menu.Items.Add(new MenuItem() { Header = "-" });
|
|
||||||
menu.Items.Add(others);
|
|
||||||
menu.Items.Add(showTagsInGraph);
|
|
||||||
menu.Open(button);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
|
@ -482,41 +407,8 @@ namespace SourceGit.Views
|
||||||
{
|
{
|
||||||
if (sender is Button button && DataContext is ViewModels.Repository repo)
|
if (sender is Button button && DataContext is ViewModels.Repository repo)
|
||||||
{
|
{
|
||||||
var byCreatorDate = new MenuItem();
|
var menu = repo.CreateContextMenuForTagSortMode();
|
||||||
byCreatorDate.Header = App.Text("Repository.Tags.OrderByCreatorDate");
|
menu?.Open(button);
|
||||||
if (repo.TagSortMode == Models.TagSortMode.CreatorDate)
|
|
||||||
byCreatorDate.Icon = App.CreateMenuIcon("Icons.Check");
|
|
||||||
byCreatorDate.Click += (_, ev) =>
|
|
||||||
{
|
|
||||||
repo.TagSortMode = Models.TagSortMode.CreatorDate;
|
|
||||||
ev.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var byNameAsc = new MenuItem();
|
|
||||||
byNameAsc.Header = App.Text("Repository.Tags.OrderByNameAsc");
|
|
||||||
if (repo.TagSortMode == Models.TagSortMode.NameInAscending)
|
|
||||||
byNameAsc.Icon = App.CreateMenuIcon("Icons.Check");
|
|
||||||
byNameAsc.Click += (_, ev) =>
|
|
||||||
{
|
|
||||||
repo.TagSortMode = Models.TagSortMode.NameInAscending;
|
|
||||||
ev.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var byNameDes = new MenuItem();
|
|
||||||
byNameDes.Header = App.Text("Repository.Tags.OrderByNameDes");
|
|
||||||
if (repo.TagSortMode == Models.TagSortMode.NameInDescending)
|
|
||||||
byNameDes.Icon = App.CreateMenuIcon("Icons.Check");
|
|
||||||
byNameDes.Click += (_, ev) =>
|
|
||||||
{
|
|
||||||
repo.TagSortMode = Models.TagSortMode.NameInDescending;
|
|
||||||
ev.Handled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
var menu = new ContextMenu();
|
|
||||||
menu.Items.Add(byCreatorDate);
|
|
||||||
menu.Items.Add(byNameAsc);
|
|
||||||
menu.Items.Add(byNameDes);
|
|
||||||
menu.Open(button);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue