From 06f2d9a702300f1cd63dfe8bbaccdca6e75fe614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= Date: Mon, 19 Dec 2022 22:17:05 +0100 Subject: [PATCH] PowerControl: Simplify Next, Select and SelectNext --- PowerControl/Controller.cs | 26 +++++---- PowerControl/Menu/MenuItem.cs | 3 +- PowerControl/Menu/MenuItemWithOptions.cs | 26 ++++----- PowerControl/Menu/MenuRoot.cs | 73 +++++------------------- PowerControl/Menu/MenuSeparator.cs | 6 +- 5 files changed, 41 insertions(+), 93 deletions(-) diff --git a/PowerControl/Controller.cs b/PowerControl/Controller.cs index a3a185b..b55ad3e 100644 --- a/PowerControl/Controller.cs +++ b/PowerControl/Controller.cs @@ -107,7 +107,7 @@ namespace PowerControl { if (!RTSS.IsOSDForeground()) return; - rootMenu.Prev(); + rootMenu.Next(-1); setDismissTimer(); dismissNeptuneInput(); }, true); @@ -116,7 +116,7 @@ namespace PowerControl { if (!RTSS.IsOSDForeground()) return; - rootMenu.Next(); + rootMenu.Next(1); setDismissTimer(); dismissNeptuneInput(); }, true); @@ -125,7 +125,7 @@ namespace PowerControl { if (!RTSS.IsOSDForeground()) return; - rootMenu.SelectPrev(); + rootMenu.SelectNext(-1); setDismissTimer(); dismissNeptuneInput(); }); @@ -134,7 +134,7 @@ namespace PowerControl { if (!RTSS.IsOSDForeground()) return; - rootMenu.SelectNext(); + rootMenu.SelectNext(1); setDismissTimer(); dismissNeptuneInput(); }); @@ -156,9 +156,10 @@ namespace PowerControl GlobalHotKey.RegisterHotKey("VolumeUp", () => { if (neptuneDeviceState.buttons5.HasFlag(SDCButton5.BTN_QUICK_ACCESS)) - rootMenu.SelectNext("Brightness"); + rootMenu.Select("Brightness"); else - rootMenu.SelectNext("Volume"); + rootMenu.Select("Volume"); + rootMenu.SelectNext(1); setDismissTimer(); dismissNeptuneInput(); }); @@ -166,9 +167,10 @@ namespace PowerControl GlobalHotKey.RegisterHotKey("VolumeDown", () => { if (neptuneDeviceState.buttons5.HasFlag(SDCButton5.BTN_QUICK_ACCESS)) - rootMenu.SelectPrev("Brightness"); + rootMenu.Select("Brightness"); else - rootMenu.SelectPrev("Volume"); + rootMenu.Select("Volume"); + rootMenu.SelectNext(-1); setDismissTimer(); dismissNeptuneInput(); }); @@ -265,19 +267,19 @@ namespace PowerControl } else if (input.buttons0 == SDCButton0.BTN_DPAD_LEFT) { - rootMenu.SelectPrev(); + rootMenu.SelectNext(-1); } else if (input.buttons0 == SDCButton0.BTN_DPAD_RIGHT) { - rootMenu.SelectNext(); + rootMenu.SelectNext(1); } else if (input.buttons0 == SDCButton0.BTN_DPAD_UP) { - rootMenu.Prev(); + rootMenu.Next(-1); } else if (input.buttons0 == SDCButton0.BTN_DPAD_DOWN) { - rootMenu.Next(); + rootMenu.Next(1); } } diff --git a/PowerControl/Menu/MenuItem.cs b/PowerControl/Menu/MenuItem.cs index d75afee..c743add 100644 --- a/PowerControl/Menu/MenuItem.cs +++ b/PowerControl/Menu/MenuItem.cs @@ -32,7 +32,6 @@ namespace PowerControl.Menu public abstract void Update(); public abstract void Reset(); - public abstract void SelectNext(); - public abstract void SelectPrev(); + public abstract void SelectNext(int change); } } diff --git a/PowerControl/Menu/MenuItemWithOptions.cs b/PowerControl/Menu/MenuItemWithOptions.cs index 5389667..efbdc0e 100644 --- a/PowerControl/Menu/MenuItemWithOptions.cs +++ b/PowerControl/Menu/MenuItemWithOptions.cs @@ -160,26 +160,22 @@ namespace PowerControl.Menu scheduleApply(); } - public override void SelectNext() + public override void SelectNext(int change) { int index = Options.IndexOf(SelectedOption ?? ActiveOption); if (index < 0) - SelectIndex(0); // select first - else if (CycleOptions) - SelectIndex((index + 1) % Options.Count); - else - SelectIndex(index + 1); - } + { + if (change > 0) + SelectIndex(0); // select first + else + SelectIndex(Options.Count); // select last + return; + } - public override void SelectPrev() - { - int index = Options.IndexOf(SelectedOption ?? ActiveOption); - if (index < 0) - SelectIndex(Options.Count - 1); // select last - else if (CycleOptions) - SelectIndex((index - 1 + Options.Count) % Options.Count); + if (CycleOptions) + SelectIndex((index + change + Options.Count) % Options.Count); else - SelectIndex(index - 1); + SelectIndex(index + change); } private String optionText(Object option) diff --git a/PowerControl/Menu/MenuRoot.cs b/PowerControl/Menu/MenuRoot.cs index 1fd36d9..2fd80ec 100644 --- a/PowerControl/Menu/MenuRoot.cs +++ b/PowerControl/Menu/MenuRoot.cs @@ -76,18 +76,20 @@ namespace PowerControl.Menu return true; } - public void Prev() + public void Next(int change) { if (Show()) return; - int index = Items.IndexOf(Selected); - if (index < 0) - index = Items.Count; // select last item + int index = -1; + if (Selected is not null) + index = Items.IndexOf(Selected); + if (index < 0 && change < 0) + index = Items.Count; // Select last item if want to iterate down for (int i = 0; i < Items.Count; i++) { - index = (index - 1 + Items.Count) % Items.Count; + index = (index + change + Items.Count) % Items.Count; var item = Items[index]; if (item.Visible && item.Selectable) { @@ -98,74 +100,27 @@ namespace PowerControl.Menu } } - public void Next() - { - if (Show()) - return; - - int index = Items.IndexOf(Selected); - if (index < 0) - index = -1; // select first item - - for (int i = 0; i < Items.Count; i++) - { - index = (index + 1) % Items.Count; - var item = Items[index]; - if (item.Visible && item.Selectable) - { - Selected = item; - VisibleChanged(); - return; - } - } - } - - public override void SelectNext() + public override void SelectNext(int change) { if (Show()) return; if (Selected != null) { - Selected.SelectNext(); + Selected.SelectNext(change); VisibleChanged(); } } - public void SelectNext(String name) + public MenuItem? Select(String name) { - var item = this[name]; - if (item is null) - return; + Selected = this[name]; + if (Selected is null) + return null; Show(); - Selected = item; - item.SelectNext(); - VisibleChanged(); - } - - public override void SelectPrev() - { - if (Show()) - return; - - if (Selected != null) - { - Selected.SelectPrev(); - VisibleChanged(); - } - } - - public void SelectPrev(String name) - { - var item = this[name]; - if (item is null) - return; - - Show(); - Selected = item; - item.SelectPrev(); VisibleChanged(); + return Selected; } } } \ No newline at end of file diff --git a/PowerControl/Menu/MenuSeparator.cs b/PowerControl/Menu/MenuSeparator.cs index 77d0541..1702f98 100644 --- a/PowerControl/Menu/MenuSeparator.cs +++ b/PowerControl/Menu/MenuSeparator.cs @@ -23,11 +23,7 @@ namespace PowerControl.Menu return Color("---", Colors.Blue); } - public override void SelectNext() - { - } - - public override void SelectPrev() + public override void SelectNext(int change) { }