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)
|
if (IconReader.MainPreload)
|
||||||
{
|
{
|
||||||
workerMainMenu.DoWork -= LoadMenu;
|
workerMainMenu.DoWork -= LoadMenu;
|
||||||
menus[0] = Create(menuData, Config.Path);
|
Create(menuData, Config.Path); // Level 0 Main Menu
|
||||||
menus[0].Loaded += (s, e) => ExecuteWatcherHistory();
|
|
||||||
|
|
||||||
IconReader.MainPreload = false;
|
IconReader.MainPreload = false;
|
||||||
if (showMenuAfterMainPreload)
|
if (showMenuAfterMainPreload)
|
||||||
|
@ -157,17 +156,7 @@ namespace SystemTrayMenu.Business
|
||||||
(menus[rowData.Level + 1] == null ||
|
(menus[rowData.Level + 1] == null ||
|
||||||
menus[rowData.Level + 1].RowDataParent != rowData))
|
menus[rowData.Level + 1].RowDataParent != rowData))
|
||||||
{
|
{
|
||||||
CreateAndShowLoadingMenu(rowData);
|
Create(new(rowData.Level + 1, rowData), rowData.Path); // Level 1+ Sub Menu (loading)
|
||||||
void CreateAndShowLoadingMenu(RowData rowDataParent)
|
|
||||||
{
|
|
||||||
MenuData menuDataLoading = new(rowDataParent.Level + 1)
|
|
||||||
{
|
|
||||||
RowDataParent = rowDataParent,
|
|
||||||
};
|
|
||||||
Menu menuLoading = Create(menuDataLoading, rowDataParent.Path);
|
|
||||||
menus[menuDataLoading.Level] = menuLoading;
|
|
||||||
ShowSubMenu(menuLoading);
|
|
||||||
}
|
|
||||||
|
|
||||||
BackgroundWorker? workerSubMenu = workersSubMenu.
|
BackgroundWorker? workerSubMenu = workersSubMenu.
|
||||||
Where(w => !w.IsBusy).FirstOrDefault();
|
Where(w => !w.IsBusy).FirstOrDefault();
|
||||||
|
@ -203,13 +192,7 @@ namespace SystemTrayMenu.Business
|
||||||
if (menuData.DirectoryState != MenuDataDirectoryState.Undefined &&
|
if (menuData.DirectoryState != MenuDataDirectoryState.Undefined &&
|
||||||
menus[0].IsUsable)
|
menus[0].IsUsable)
|
||||||
{
|
{
|
||||||
Menu menu = Create(menuData, menuData.RowDataParent.ResolvedPath);
|
Create(menuData, menuData.RowDataParent.ResolvedPath, userSearchText); // Level 1+ Sub Menu (completed)
|
||||||
menuData.RowDataParent.SubMenu = menu;
|
|
||||||
if (menus[0].IsUsable)
|
|
||||||
{
|
|
||||||
ShowSubMenu(menu);
|
|
||||||
menu.SetSearchText(userSearchText);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (closedLoadingMenu && menus[0].IsUsable)
|
else if (closedLoadingMenu && menus[0].IsUsable)
|
||||||
{
|
{
|
||||||
|
@ -359,7 +342,7 @@ namespace SystemTrayMenu.Business
|
||||||
|
|
||||||
internal static MenuData GetData(BackgroundWorker? worker, string path, int level)
|
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))
|
if (worker?.CancellationPending == true || string.IsNullOrEmpty(path))
|
||||||
{
|
{
|
||||||
return menuData;
|
return menuData;
|
||||||
|
@ -590,7 +573,7 @@ namespace SystemTrayMenu.Business
|
||||||
return (App.TaskbarLogo != null && App.TaskbarLogo.IsActive) || IsShellContextMenuOpen();
|
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);
|
Menu menu = new(menuData, path);
|
||||||
|
|
||||||
|
@ -677,6 +660,28 @@ namespace SystemTrayMenu.Business
|
||||||
|
|
||||||
menu.SetCounts(foldersCount, filesCount);
|
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;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,10 @@ namespace SystemTrayMenu.DataClasses
|
||||||
|
|
||||||
internal struct MenuData
|
internal struct MenuData
|
||||||
{
|
{
|
||||||
public MenuData(int level)
|
public MenuData(int level, RowData? rowDataParent)
|
||||||
{
|
{
|
||||||
Level = level;
|
Level = level;
|
||||||
|
RowDataParent = rowDataParent;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal List<RowData> RowDatas { get; set; } = new ();
|
internal List<RowData> RowDatas { get; set; } = new ();
|
||||||
|
@ -42,7 +43,7 @@ namespace SystemTrayMenu.DataClasses
|
||||||
|
|
||||||
internal int Level { get; }
|
internal int Level { get; }
|
||||||
|
|
||||||
internal RowData? RowDataParent { get; set; } = null;
|
internal RowData? RowDataParent { get; set; }
|
||||||
|
|
||||||
internal bool IsNetworkRoot { get; set; } = false;
|
internal bool IsNetworkRoot { get; set; } = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -442,7 +442,7 @@ namespace SystemTrayMenu.UserInterface
|
||||||
return textBoxSearch.Text;
|
return textBoxSearch.Text;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void SetSearchText(string userSearchText)
|
internal void SetSearchText(string? userSearchText)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(userSearchText))
|
if (!string.IsNullOrEmpty(userSearchText))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue