rosalina: move power off/reboot back, in a single menu entry this time

This commit is contained in:
TuxSH 2024-09-18 22:36:04 +02:00
parent 1c737d499f
commit 0a11d29d8b
4 changed files with 39 additions and 61 deletions

View File

@ -38,6 +38,8 @@ void RosalinaMenu_ProcessList(void);
void RosalinaMenu_SaveSettings(void); void RosalinaMenu_SaveSettings(void);
void RosalinaMenu_Cheats(void); void RosalinaMenu_Cheats(void);
void RosalinaMenu_PowerOffOrReboot(void);
void RosalinaMenu_ShowSystemInfo(); void RosalinaMenu_ShowSystemInfo();
bool rosalinaMenuShouldShowDebugInfo(void); bool rosalinaMenuShouldShowDebugInfo(void);

View File

@ -44,5 +44,3 @@ void SysConfigMenu_ToggleCardIfPower(void);
void SysConfigMenu_LoadConfig(void); void SysConfigMenu_LoadConfig(void);
void SysConfigMenu_AdjustVolume(void); void SysConfigMenu_AdjustVolume(void);
void SysConfigMenu_ChangeScreenBrightness(void); void SysConfigMenu_ChangeScreenBrightness(void);
void SysConfigMenu_PowerOff(void);
void SysConfigMenu_Reboot(void);

View File

@ -55,6 +55,7 @@ Menu rosalinaMenu = {
{ "System configuration...", MENU, .menu = &sysconfigMenu }, { "System configuration...", MENU, .menu = &sysconfigMenu },
{ "Miscellaneous options...", MENU, .menu = &miscellaneousMenu }, { "Miscellaneous options...", MENU, .menu = &miscellaneousMenu },
{ "Save settings", METHOD, .method = &RosalinaMenu_SaveSettings }, { "Save settings", METHOD, .method = &RosalinaMenu_SaveSettings },
{ "Power off / reboot", METHOD, .method = &RosalinaMenu_PowerOffOrReboot },
{ "System info", METHOD, .method = &RosalinaMenu_ShowSystemInfo }, { "System info", METHOD, .method = &RosalinaMenu_ShowSystemInfo },
{ "Credits", METHOD, .method = &RosalinaMenu_ShowCredits }, { "Credits", METHOD, .method = &RosalinaMenu_ShowCredits },
{ "Debug info", METHOD, .method = &RosalinaMenu_ShowDebugInfo, .visibility = &rosalinaMenuShouldShowDebugInfo }, { "Debug info", METHOD, .method = &RosalinaMenu_ShowDebugInfo, .visibility = &rosalinaMenuShouldShowDebugInfo },
@ -93,6 +94,42 @@ void RosalinaMenu_SaveSettings(void)
while(!(waitInput() & KEY_B) && !menuShouldExit); while(!(waitInput() & KEY_B) && !menuShouldExit);
} }
void RosalinaMenu_PowerOffOrReboot(void)
{
Draw_Lock();
Draw_ClearFramebuffer();
Draw_FlushFramebuffer();
Draw_Unlock();
do
{
Draw_Lock();
Draw_DrawString(10, 10, COLOR_TITLE, "Power Off / Reboot");
Draw_DrawString(10, 30, COLOR_WHITE, "Press A to power off.\nPress Y to reboot.\nPress B to go back.");
Draw_FlushFramebuffer();
Draw_Unlock();
u32 pressed = waitInputWithTimeout(1000);
if(pressed & KEY_Y)
{
menuLeave();
APT_HardwareResetAsync();
return;
}
else if(pressed & KEY_A)
{
// Soft shutdown
menuLeave();
srvPublishToSubscriber(0x203, 0);
return;
}
else if(pressed & KEY_B)
return;
}
while(!menuShouldExit);
}
void RosalinaMenu_ShowSystemInfo(void) void RosalinaMenu_ShowSystemInfo(void)
{ {
u32 kver = osGetKernelVersion(); u32 kver = osGetKernelVersion();

View File

@ -44,8 +44,6 @@ Menu sysconfigMenu = {
{ "Toggle Power Button", METHOD, .method=&SysConfigMenu_TogglePowerButton }, { "Toggle Power Button", METHOD, .method=&SysConfigMenu_TogglePowerButton },
{ "Toggle power to card slot", METHOD, .method=&SysConfigMenu_ToggleCardIfPower}, { "Toggle power to card slot", METHOD, .method=&SysConfigMenu_ToggleCardIfPower},
{ "Change screen brightness", METHOD, .method = &SysConfigMenu_ChangeScreenBrightness }, { "Change screen brightness", METHOD, .method = &SysConfigMenu_ChangeScreenBrightness },
{ "Power off", METHOD, .method = &SysConfigMenu_PowerOff },
{ "Reboot", METHOD, .method = &SysConfigMenu_Reboot },
{}, {},
} }
}; };
@ -591,60 +589,3 @@ void SysConfigMenu_ChangeScreenBrightness(void)
Draw_Unlock(); Draw_Unlock();
} }
void SysConfigMenu_PowerOff(void) // Soft shutdown.
{
Draw_Lock();
Draw_ClearFramebuffer();
Draw_FlushFramebuffer();
Draw_Unlock();
do
{
Draw_Lock();
Draw_DrawString(10, 10, COLOR_TITLE, "Power off");
Draw_DrawString(10, 30, COLOR_WHITE, "Press A to power off, press B to go back.");
Draw_FlushFramebuffer();
Draw_Unlock();
u32 pressed = waitInputWithTimeout(1000);
if(pressed & KEY_A)
{
menuLeave();
srvPublishToSubscriber(0x203, 0);
return;
}
else if(pressed & KEY_B)
return;
}
while(!menuShouldExit);
}
void SysConfigMenu_Reboot(void)
{
Draw_Lock();
Draw_ClearFramebuffer();
Draw_FlushFramebuffer();
Draw_Unlock();
do
{
Draw_Lock();
Draw_DrawString(10, 10, COLOR_TITLE, "Reboot");
Draw_DrawString(10, 30, COLOR_WHITE, "Press A to reboot, press B to go back.");
Draw_FlushFramebuffer();
Draw_Unlock();
u32 pressed = waitInputWithTimeout(1000);
if(pressed & KEY_A)
{
menuLeave();
APT_HardwareResetAsync();
return;
} else if(pressed & KEY_B)
return;
}
while(!menuShouldExit);
}