mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-10-03 10:36:30 +13:00
Simplified post processing of Menu creation
This commit is contained in:
parent
176e9f896d
commit
3698d7e891
3 changed files with 31 additions and 25 deletions
|
@ -100,8 +100,7 @@ namespace SystemTrayMenu.Business
|
|||
if (IconReader.MainPreload)
|
||||
{
|
||||
workerMainMenu.DoWork -= LoadMenu;
|
||||
menus[0] = Create(menuData, Config.Path);
|
||||
menus[0].Loaded += (s, e) => ExecuteWatcherHistory();
|
||||
Create(menuData, Config.Path); // Level 0 Main Menu
|
||||
|
||||
IconReader.MainPreload = false;
|
||||
if (showMenuAfterMainPreload)
|
||||
|
@ -157,17 +156,7 @@ namespace SystemTrayMenu.Business
|
|||
(menus[rowData.Level + 1] == null ||
|
||||
menus[rowData.Level + 1].RowDataParent != rowData))
|
||||
{
|
||||
CreateAndShowLoadingMenu(rowData);
|
||||
void CreateAndShowLoadingMenu(RowData rowDataParent)
|
||||
{
|
||||
MenuData menuDataLoading = new(rowDataParent.Level + 1)
|
||||
{
|
||||
RowDataParent = rowDataParent,
|
||||
};
|
||||
Menu menuLoading = Create(menuDataLoading, rowDataParent.Path);
|
||||
menus[menuDataLoading.Level] = menuLoading;
|
||||
ShowSubMenu(menuLoading);
|
||||
}
|
||||
Create(new(rowData.Level + 1, rowData), rowData.Path); // Level 1+ Sub Menu (loading)
|
||||
|
||||
BackgroundWorker? workerSubMenu = workersSubMenu.
|
||||
Where(w => !w.IsBusy).FirstOrDefault();
|
||||
|
@ -203,13 +192,7 @@ namespace SystemTrayMenu.Business
|
|||
if (menuData.DirectoryState != MenuDataDirectoryState.Undefined &&
|
||||
menus[0].IsUsable)
|
||||
{
|
||||
Menu menu = Create(menuData, menuData.RowDataParent.ResolvedPath);
|
||||
menuData.RowDataParent.SubMenu = menu;
|
||||
if (menus[0].IsUsable)
|
||||
{
|
||||
ShowSubMenu(menu);
|
||||
menu.SetSearchText(userSearchText);
|
||||
}
|
||||
Create(menuData, menuData.RowDataParent.ResolvedPath, userSearchText); // Level 1+ Sub Menu (completed)
|
||||
}
|
||||
else if (closedLoadingMenu && menus[0].IsUsable)
|
||||
{
|
||||
|
@ -359,7 +342,7 @@ namespace SystemTrayMenu.Business
|
|||
|
||||
internal static MenuData GetData(BackgroundWorker? worker, string path, int level)
|
||||
{
|
||||
MenuData menuData = new(level);
|
||||
MenuData menuData = new(level, null);
|
||||
if (worker?.CancellationPending == true || string.IsNullOrEmpty(path))
|
||||
{
|
||||
return menuData;
|
||||
|
@ -590,7 +573,7 @@ namespace SystemTrayMenu.Business
|
|||
return (App.TaskbarLogo != null && App.TaskbarLogo.IsActive) || IsShellContextMenuOpen();
|
||||
}
|
||||
|
||||
private Menu Create(MenuData menuData, string path)
|
||||
private Menu Create(MenuData menuData, string path, string? userSearchText = null)
|
||||
{
|
||||
Menu menu = new(menuData, path);
|
||||
|
||||
|
@ -677,6 +660,28 @@ namespace SystemTrayMenu.Business
|
|||
|
||||
menu.SetCounts(foldersCount, filesCount);
|
||||
|
||||
if (menuData.Level == 0)
|
||||
{
|
||||
// Main Menu
|
||||
menus[0] = menu;
|
||||
menu.Loaded += (s, e) => ExecuteWatcherHistory();
|
||||
}
|
||||
else if (menuData.DirectoryState != MenuDataDirectoryState.Undefined)
|
||||
{
|
||||
// Sub Menu (completed)
|
||||
if (menus[0].IsUsable)
|
||||
{
|
||||
ShowSubMenu(menu);
|
||||
menu.SetSearchText(userSearchText);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sub Menu (loading)
|
||||
menus[menuData.Level] = menu;
|
||||
ShowSubMenu(menu);
|
||||
}
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,9 +31,10 @@ namespace SystemTrayMenu.DataClasses
|
|||
|
||||
internal struct MenuData
|
||||
{
|
||||
public MenuData(int level)
|
||||
public MenuData(int level, RowData? rowDataParent)
|
||||
{
|
||||
Level = level;
|
||||
RowDataParent = rowDataParent;
|
||||
}
|
||||
|
||||
internal List<RowData> RowDatas { get; set; } = new ();
|
||||
|
@ -42,7 +43,7 @@ namespace SystemTrayMenu.DataClasses
|
|||
|
||||
internal int Level { get; }
|
||||
|
||||
internal RowData? RowDataParent { get; set; } = null;
|
||||
internal RowData? RowDataParent { get; set; }
|
||||
|
||||
internal bool IsNetworkRoot { get; set; } = false;
|
||||
}
|
||||
|
|
|
@ -442,7 +442,7 @@ namespace SystemTrayMenu.UserInterface
|
|||
return textBoxSearch.Text;
|
||||
}
|
||||
|
||||
internal void SetSearchText(string userSearchText)
|
||||
internal void SetSearchText(string? userSearchText)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(userSearchText))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue