Time Machine dialog can now be toggled by pressing 'T'.

- Note that the dialog is currently empty
 - See src/gui/CommandDialog for example of how to fill this dialog box
This commit is contained in:
Stephen Anthony 2017-12-22 12:28:06 -03:30
parent cbb494d7ad
commit ad69e8900d
5 changed files with 57 additions and 10 deletions

View File

@ -71,7 +71,7 @@ class Event
MouseButtonLeftValue, MouseButtonRightValue, MouseButtonLeftValue, MouseButtonRightValue,
ChangeState, LoadState, SaveState, TakeSnapshot, Quit, ChangeState, LoadState, SaveState, TakeSnapshot, Quit,
PauseMode, MenuMode, CmdMenuMode, DebuggerMode, LauncherMode, PauseMode, OptionsMenuMode, CmdMenuMode, TimeMachineMode, DebuggerMode, LauncherMode,
Fry, VolumeDecrease, VolumeIncrease, Fry, VolumeDecrease, VolumeIncrease,
UIUp, UIDown, UILeft, UIRight, UIHome, UIEnd, UIPgUp, UIPgDown, UIUp, UIDown, UILeft, UIRight, UIHome, UIEnd, UIPgUp, UIPgDown,

View File

@ -1227,7 +1227,7 @@ bool EventHandler::eventStateChange(Event::Type type)
handled = false; handled = false;
break; break;
case Event::MenuMode: case Event::OptionsMenuMode:
if(myState == EventHandlerState::EMULATION) if(myState == EventHandlerState::EMULATION)
enterMenuMode(EventHandlerState::OPTIONSMENU); enterMenuMode(EventHandlerState::OPTIONSMENU);
else else
@ -1243,6 +1243,15 @@ bool EventHandler::eventStateChange(Event::Type type)
handled = false; handled = false;
break; break;
case Event::TimeMachineMode:
if(myState == EventHandlerState::EMULATION)
enterMenuMode(EventHandlerState::TIMEMACHINE);
else if(myState == EventHandlerState::TIMEMACHINE)
leaveMenuMode();
else
handled = false;
break;
case Event::DebuggerMode: case Event::DebuggerMode:
if(myState == EventHandlerState::EMULATION || myState == EventHandlerState::PAUSE) if(myState == EventHandlerState::EMULATION || myState == EventHandlerState::PAUSE)
enterDebugMode(); enterDebugMode();
@ -1688,8 +1697,9 @@ void EventHandler::setDefaultKeymap(Event::Type event, EventMode mode)
setDefaultKey( KBDK_F12, Event::TakeSnapshot ); setDefaultKey( KBDK_F12, Event::TakeSnapshot );
setDefaultKey( KBDK_BACKSPACE, Event::Fry ); setDefaultKey( KBDK_BACKSPACE, Event::Fry );
setDefaultKey( KBDK_PAUSE, Event::PauseMode ); setDefaultKey( KBDK_PAUSE, Event::PauseMode );
setDefaultKey( KBDK_TAB, Event::MenuMode ); setDefaultKey( KBDK_TAB, Event::OptionsMenuMode );
setDefaultKey( KBDK_BACKSLASH, Event::CmdMenuMode ); setDefaultKey( KBDK_BACKSLASH, Event::CmdMenuMode );
setDefaultKey( KBDK_T, Event::TimeMachineMode );
setDefaultKey( KBDK_GRAVE, Event::DebuggerMode ); setDefaultKey( KBDK_GRAVE, Event::DebuggerMode );
setDefaultKey( KBDK_ESCAPE, Event::LauncherMode ); setDefaultKey( KBDK_ESCAPE, Event::LauncherMode );
break; break;
@ -2228,8 +2238,9 @@ EventHandler::ActionList EventHandler::ourEmulActionList[kEmulActionListSize] =
{ Event::VolumeDecrease, "Decrease volume", "", false }, { Event::VolumeDecrease, "Decrease volume", "", false },
{ Event::VolumeIncrease, "Increase volume", "", false }, { Event::VolumeIncrease, "Increase volume", "", false },
{ Event::PauseMode, "Pause", "", false }, { Event::PauseMode, "Pause", "", false },
{ Event::MenuMode, "Enter options menu mode", "", false }, { Event::OptionsMenuMode, "Enter options menu UI", "", false },
{ Event::CmdMenuMode, "Toggle command menu mode", "", false }, { Event::CmdMenuMode, "Toggle command menu UI", "", false },
{ Event::TimeMachineMode, "Toggle time machine UI", "", false },
{ Event::DebuggerMode, "Toggle debugger mode", "", false }, { Event::DebuggerMode, "Toggle debugger mode", "", false },
{ Event::LauncherMode, "Enter ROM launcher", "", false }, { Event::LauncherMode, "Enter ROM launcher", "", false },
{ Event::Quit, "Quit", "", false }, { Event::Quit, "Quit", "", false },

View File

@ -457,7 +457,7 @@ class EventHandler
enum { enum {
kComboSize = 16, kComboSize = 16,
kEventsPerCombo = 8, kEventsPerCombo = 8,
kEmulActionListSize = 79 + kComboSize, kEmulActionListSize = 80 + kComboSize,
kMenuActionListSize = 14 kMenuActionListSize = 14
}; };

View File

@ -19,6 +19,7 @@
#include "Font.hxx" #include "Font.hxx"
#include "EventHandler.hxx" #include "EventHandler.hxx"
#include "FrameBuffer.hxx" #include "FrameBuffer.hxx"
#include "FBSurface.hxx"
#include "OSystem.hxx" #include "OSystem.hxx"
#include "Widget.hxx" #include "Widget.hxx"
#include "TimeMachineDialog.hxx" #include "TimeMachineDialog.hxx"
@ -29,11 +30,39 @@ TimeMachineDialog::TimeMachineDialog(OSystem& osystem, DialogContainer& parent,
: Dialog(osystem, parent) : Dialog(osystem, parent)
{ {
const GUI::Font& font = instance().frameBuffer().font(); const GUI::Font& font = instance().frameBuffer().font();
const int buttonWidth = font.getStringWidth("Right Diff B") + 20, const int buttonWidth = font.getStringWidth(" ") + 20,
buttonHeight = font.getLineHeight() + 6, // buttonHeight = font.getLineHeight() + 6,
rowHeight = font.getLineHeight() + 10; rowHeight = font.getLineHeight() + 10;
WidgetArray wid;
// Set real dimensions // Set real dimensions
_w = 3 * (buttonWidth + 5) + 20; _w = 10 * (buttonWidth + 5) + 20;
_h = 6 * rowHeight + 15; _h = 2 * rowHeight + 15;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TimeMachineDialog::center()
{
// Place on the bottom of the screen, centered horizontally
const GUI::Size& screen = instance().frameBuffer().screenSize();
const GUI::Rect& dst = surface().dstRect();
surface().setDstPos((screen.w - dst.width()) >> 1, screen.h - dst.height() - 10);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TimeMachineDialog::loadConfig()
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TimeMachineDialog::handleCommand(CommandSender* sender, int cmd,
int data, int id)
{
cerr << cmd << endl;
switch(cmd)
{
default:
Dialog::handleCommand(sender, cmd, data, 0);
}
} }

View File

@ -30,6 +30,13 @@ class TimeMachineDialog : public Dialog
TimeMachineDialog(OSystem& osystem, DialogContainer& parent, int max_w, int max_h); TimeMachineDialog(OSystem& osystem, DialogContainer& parent, int max_w, int max_h);
virtual ~TimeMachineDialog() = default; virtual ~TimeMachineDialog() = default;
private:
void loadConfig() override;
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
/** This dialog uses its own positioning, so we override Dialog::center() */
void center() override;
private: private:
// Following constructors and assignment operators not supported // Following constructors and assignment operators not supported
TimeMachineDialog() = delete; TimeMachineDialog() = delete;