PowerControl: MenuRoot update VisibleChanged and Render() to accept nulls

This commit is contained in:
Kamil Trzciński 2022-12-19 22:08:54 +01:00
parent bbc4cf8200
commit 130a6fb745
5 changed files with 22 additions and 32 deletions

View file

@ -60,10 +60,7 @@ namespace PowerControl
rootMenu.Visible = false;
rootMenu.Update();
rootMenu.CreateMenu(contextMenu.Items);
rootMenu.VisibleChanged = delegate ()
{
updateOSD();
};
rootMenu.VisibleChanged += delegate { updateOSD(); };
contextMenu.Items.Add(new ToolStripSeparator());
if (startupManager.IsAvailable)

View file

@ -17,7 +17,7 @@ namespace PowerControl.Menu
White
}
public String Name { get; set; }
public String Name { get; set; } = "";
public bool Visible { get; set; } = true;
public bool Selectable { get; set; }
@ -26,7 +26,7 @@ namespace PowerControl.Menu
return String.Format("<C{1}>{0}<C>", text, (int)index);
}
public abstract string Render(MenuItem selected);
public abstract string Render(MenuItem? selected);
public abstract void CreateMenu(ToolStripItemCollection collection);
public abstract void Update();

View file

@ -198,7 +198,7 @@ namespace PowerControl.Menu
return text;
}
public override string Render(MenuItem selected)
public override string Render(MenuItem? selected)
{
string output = "";

View file

@ -5,13 +5,15 @@ namespace PowerControl.Menu
public class MenuRoot : MenuItem
{
public IList<MenuItem> Items { get; set; } = new List<MenuItem>();
public MenuItem? Selected;
public event Action VisibleChanged;
public MenuItem Selected;
public MenuRoot()
{
VisibleChanged += delegate { };
}
public delegate void VisibleChangedDelegate();
public VisibleChangedDelegate? VisibleChanged;
public MenuItem this[String name]
public MenuItem? this[String name]
{
get
{
@ -29,6 +31,7 @@ namespace PowerControl.Menu
foreach (var item in Items)
item.CreateMenu(collection);
}
public override void Update()
{
foreach (var item in Items)
@ -39,12 +42,10 @@ namespace PowerControl.Menu
{
foreach (var item in Items)
item.Reset();
if (VisibleChanged != null)
VisibleChanged();
VisibleChanged();
}
public override string Render(MenuItem parentSelected)
public override string Render(MenuItem? parentSelected)
{
var sb = new StringBuilder();
@ -71,9 +72,7 @@ namespace PowerControl.Menu
Visible = true;
Update();
if (VisibleChanged != null)
VisibleChanged();
VisibleChanged();
return true;
}
@ -93,8 +92,7 @@ namespace PowerControl.Menu
if (item.Visible && item.Selectable)
{
Selected = item;
if (VisibleChanged != null)
VisibleChanged();
VisibleChanged();
return;
}
}
@ -116,8 +114,7 @@ namespace PowerControl.Menu
if (item.Visible && item.Selectable)
{
Selected = item;
if (VisibleChanged != null)
VisibleChanged();
VisibleChanged();
return;
}
}
@ -131,8 +128,7 @@ namespace PowerControl.Menu
if (Selected != null)
{
Selected.SelectNext();
if (VisibleChanged != null)
VisibleChanged();
VisibleChanged();
}
}
@ -145,8 +141,7 @@ namespace PowerControl.Menu
Show();
Selected = item;
item.SelectNext();
if (VisibleChanged != null)
VisibleChanged();
VisibleChanged();
}
public override void SelectPrev()
@ -157,8 +152,7 @@ namespace PowerControl.Menu
if (Selected != null)
{
Selected.SelectPrev();
if (VisibleChanged != null)
VisibleChanged();
VisibleChanged();
}
}
@ -171,8 +165,7 @@ namespace PowerControl.Menu
Show();
Selected = item;
item.SelectPrev();
if (VisibleChanged != null)
VisibleChanged();
VisibleChanged();
}
}
}

View file

@ -18,7 +18,7 @@ namespace PowerControl.Menu
collection.Add(toolStripItem);
}
public override string Render(MenuItem selected)
public override string Render(MenuItem? selected)
{
return Color("---", Colors.Blue);
}