summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend/mame/ui/tapectrl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/mame/ui/tapectrl.cpp')
-rw-r--r--src/frontend/mame/ui/tapectrl.cpp50
1 files changed, 27 insertions, 23 deletions
diff --git a/src/frontend/mame/ui/tapectrl.cpp b/src/frontend/mame/ui/tapectrl.cpp
index 1517554efd9..c302577cc63 100644
--- a/src/frontend/mame/ui/tapectrl.cpp
+++ b/src/frontend/mame/ui/tapectrl.cpp
@@ -38,6 +38,8 @@ namespace ui {
menu_tape_control::menu_tape_control(mame_ui_manager &mui, render_container &container, cassette_image_device *device)
: menu_device_control<cassette_image_device>(mui, container, device)
{
+ set_process_flags(PROCESS_LR_REPEAT);
+ set_heading(_("Tape Control"));
}
@@ -54,7 +56,7 @@ menu_tape_control::~menu_tape_control()
// populate - populates the main tape control menu
//-------------------------------------------------
-void menu_tape_control::populate(float &customtop, float &custombottom)
+void menu_tape_control::populate()
{
if (current_device())
{
@@ -92,20 +94,22 @@ void menu_tape_control::populate(float &customtop, float &custombottom)
TAPECMD_SLIDER);
// pause or stop
- item_append(_("Pause/Stop"), "", 0, TAPECMD_STOP);
+ item_append(_("Pause/Stop"), 0, TAPECMD_STOP);
// play
- item_append(_("Play"), "", 0, TAPECMD_PLAY);
+ item_append(_("Play"), 0, TAPECMD_PLAY);
// record
- item_append(_("Record"), "", 0, TAPECMD_RECORD);
+ item_append(_("Record"), 0, TAPECMD_RECORD);
// rewind
- item_append(_("Rewind"), "", 0, TAPECMD_REWIND);
+ item_append(_("Rewind"), 0, TAPECMD_REWIND);
// fast forward
- item_append(_("Fast Forward"), "", 0, TAPECMD_FAST_FORWARD);
+ item_append(_("Fast Forward"), 0, TAPECMD_FAST_FORWARD);
}
+
+ item_append(menu_item_type::SEPARATOR);
}
}
@@ -114,47 +118,47 @@ void menu_tape_control::populate(float &customtop, float &custombottom)
// handle - main tape control menu
//-------------------------------------------------
-void menu_tape_control::handle()
+bool menu_tape_control::handle(event const *ev)
{
- // rebuild the menu (so to update the selected device, if the user has pressed L or R, and the tape counter)
- repopulate(reset_options::REMEMBER_POSITION);
-
// process the menu
- const event *event = process(PROCESS_LR_REPEAT);
- if (event != nullptr)
+ if (ev)
{
- switch(event->iptkey)
+ switch (ev->iptkey)
{
case IPT_UI_LEFT:
- if (event->itemref == TAPECMD_SLIDER)
+ if (ev->itemref == TAPECMD_SLIDER)
current_device()->seek(-1, SEEK_CUR);
- else if (event->itemref == TAPECMD_SELECT)
+ else if (ev->itemref == TAPECMD_SELECT)
previous();
break;
case IPT_UI_RIGHT:
- if (event->itemref == TAPECMD_SLIDER)
+ if (ev->itemref == TAPECMD_SLIDER)
current_device()->seek(+1, SEEK_CUR);
- else if (event->itemref == TAPECMD_SELECT)
+ else if (ev->itemref == TAPECMD_SELECT)
next();
break;
case IPT_UI_SELECT:
- if (event->itemref == TAPECMD_STOP)
+ if (ev->itemref == TAPECMD_STOP)
current_device()->change_state(CASSETTE_STOPPED, CASSETTE_MASK_UISTATE);
- else if (event->itemref == TAPECMD_PLAY)
+ else if (ev->itemref == TAPECMD_PLAY)
current_device()->change_state(CASSETTE_PLAY, CASSETTE_MASK_UISTATE);
- else if (event->itemref == TAPECMD_RECORD)
+ else if (ev->itemref == TAPECMD_RECORD)
current_device()->change_state(CASSETTE_RECORD, CASSETTE_MASK_UISTATE);
- else if (event->itemref == TAPECMD_REWIND)
+ else if (ev->itemref == TAPECMD_REWIND)
current_device()->seek(-30, SEEK_CUR);
- else if (event->itemref == TAPECMD_FAST_FORWARD)
+ else if (ev->itemref == TAPECMD_FAST_FORWARD)
current_device()->seek(30, SEEK_CUR);
- else if (event->itemref == TAPECMD_SLIDER)
+ else if (ev->itemref == TAPECMD_SLIDER)
current_device()->seek(0, SEEK_SET);
break;
}
}
+
+ // hacky way to update the tape counter by repopulating every frame
+ reset(reset_options::REMEMBER_POSITION);
+ return false;
}