sharing sort code

This commit is contained in:
LarsBrubaker 2020-08-07 20:04:21 -07:00
parent 1ea2ed4638
commit 84dc566cf7
2 changed files with 72 additions and 105 deletions

View file

@ -145,70 +145,10 @@ namespace MatterHackers.MatterControl.PrintLibrary
};
navBar.AddChild(searchButton);
PopupMenuButton viewOptionsButton;
navBar.AddChild(
viewOptionsButton = new PopupMenuButton(
new ImageWidget(AggContext.StaticData.LoadIcon("fa-sort_16.png", 32, 32, theme.InvertIcons))
{
// VAnchor = VAnchor.Center
},
theme)
{
AlignToRightEdge = true,
Name = "Print Library View Options"
});
viewOptionsButton.DynamicPopupContent = () =>
{
var popupMenu = new PopupMenu(ApplicationController.Instance.MenuTheme);
var siblingList = new List<GuiWidget>();
popupMenu.CreateBoolMenuItem(
"Date Created".Localize(),
() => libraryView.ActiveSort.HasFlag(SortKey.CreatedDate),
(v) => libraryView.ActiveSort = SortKey.CreatedDate,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateBoolMenuItem(
"Date Modified".Localize(),
() => libraryView.ActiveSort.HasFlag(SortKey.ModifiedDate),
(v) => libraryView.ActiveSort = SortKey.ModifiedDate,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateBoolMenuItem(
"Name".Localize(),
() => libraryView.ActiveSort.HasFlag(SortKey.Name),
(v) => libraryView.ActiveSort = SortKey.Name,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateSeparator();
siblingList = new List<GuiWidget>();
popupMenu.CreateBoolMenuItem(
"Ascending".Localize(),
() => libraryView.Ascending,
(v) => libraryView.Ascending = true,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateBoolMenuItem(
"Descending".Localize(),
() => !libraryView.Ascending,
(v) => libraryView.Ascending = false,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
return popupMenu;
};
navBar.AddChild(CreateViewMenuButton(theme, libraryView, (show) => ShowContainers = show, () => ShowContainers));
navBar.AddChild(CreateSortingMenuButton(theme, libraryView));
var horizontalSplitter = new Splitter()
{
SplitterDistance = UserSettings.Instance.LibraryViewWidth,
@ -291,6 +231,75 @@ namespace MatterHackers.MatterControl.PrintLibrary
libraryContext.ContainerChanged += Library_ContainerChanged;
}
public static GuiWidget CreateSortingMenuButton(ThemeConfig theme, LibraryListView libraryView)
{
var viewOptionsButton = new PopupMenuButton(
new ImageWidget(AggContext.StaticData.LoadIcon("fa-sort_16.png", 32, 32, theme.InvertIcons))
{
// VAnchor = VAnchor.Center
},
theme)
{
AlignToRightEdge = true,
Name = "Print Library View Options"
};
viewOptionsButton.DynamicPopupContent = () =>
{
var popupMenu = new PopupMenu(theme);
CreateSortingMenu(popupMenu, libraryView);
return popupMenu;
};
return viewOptionsButton;
}
public static PopupMenu CreateSortingMenu(PopupMenu popupMenu, LibraryListView libraryView)
{
var siblingList = new List<GuiWidget>();
popupMenu.CreateBoolMenuItem(
"Date Created".Localize(),
() => libraryView.ActiveSort.HasFlag(SortKey.CreatedDate),
(v) => libraryView.ActiveSort = SortKey.CreatedDate,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateBoolMenuItem(
"Date Modified".Localize(),
() => libraryView.ActiveSort.HasFlag(SortKey.ModifiedDate),
(v) => libraryView.ActiveSort = SortKey.ModifiedDate,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateBoolMenuItem(
"Name".Localize(),
() => libraryView.ActiveSort.HasFlag(SortKey.Name),
(v) => libraryView.ActiveSort = SortKey.Name,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateSeparator();
siblingList = new List<GuiWidget>();
popupMenu.CreateBoolMenuItem(
"Ascending".Localize(),
() => libraryView.Ascending,
(v) => libraryView.Ascending = true,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateBoolMenuItem(
"Descending".Localize(),
() => !libraryView.Ascending,
(v) => libraryView.Ascending = false,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
return popupMenu;
}
public static GuiWidget CreateViewMenuButton(ThemeConfig theme,
LibraryListView libraryView,
Action<bool> showContainers,

View file

@ -106,49 +106,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
toolbar.OverflowButton.Name = "Print Library View Options";
toolbar.Padding = theme.ToolbarPadding;
toolbar.ExtendOverflowMenu = (popupMenu) =>
{
var siblingList = new List<GuiWidget>();
popupMenu.CreateBoolMenuItem(
"Date Created".Localize(),
() => libraryView.ActiveSort == SortKey.CreatedDate,
(v) => libraryView.ActiveSort = SortKey.CreatedDate,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateBoolMenuItem(
"Date Modified".Localize(),
() => libraryView.ActiveSort == SortKey.ModifiedDate,
(v) => libraryView.ActiveSort = SortKey.ModifiedDate,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateBoolMenuItem(
"Name".Localize(),
() => libraryView.ActiveSort == SortKey.Name,
(v) => libraryView.ActiveSort = SortKey.Name,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateSeparator();
siblingList = new List<GuiWidget>();
popupMenu.CreateBoolMenuItem(
"Ascending".Localize(),
() => libraryView.Ascending,
(v) => libraryView.Ascending = true,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
popupMenu.CreateBoolMenuItem(
"Descending".Localize(),
() => !libraryView.Ascending,
(v) => libraryView.Ascending = false,
useRadioStyle: true,
siblingRadioButtonList: siblingList);
};
toolbar.ExtendOverflowMenu = (popupMenu) => LibraryWidget.CreateSortingMenu(popupMenu, libraryView);
allControls.AddChild(toolbar);