PowerControl: Simplify Next, Select and SelectNext

This commit is contained in:
Kamil Trzciński 2022-12-19 22:17:05 +01:00
parent 130a6fb745
commit 06f2d9a702
5 changed files with 41 additions and 93 deletions

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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)

View file

@ -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;
}
}
}

View file

@ -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)
{
}