Previous 199869 Revisions Next

r34263 Thursday 8th January, 2015 at 11:26:16 UTC by Fabio Priuli
(MESS) ui: converted barcode reader menu to use devctrl
base class so to avoid the need of an intermediate menu
where to select the reader to act on. nw.
[src/emu/ui]barcode.c barcode.h mainmenu.c

trunk/src/emu/ui/barcode.c
r242774r242775
22
33    ui/barcode.c
44
5    MESS's "barcode reader" control
5    "Barcode Reader" control
66
77    Copyright Nicola Salmoria and the MAME Team.
88    Visit http://mamedev.org for licensing and usage restrictions.
r242774r242775
1111
1212#include "emu.h"
1313#include "ui/ui.h"
14#include "ui/menu.h"
1514#include "ui/barcode.h"
1615
17
1816// itemrefs for key menu items
1917#define ITEMREF_NEW_BARCODE    ((void *) 0x0001)
20#define ITEMREF_ENTER          ((void *) 0x0002)
18#define ITEMREF_ENTER_BARCODE  ((void *) 0x0002)
19#define ITEMREF_SELECT_READER  ((void *) 0x0003)
2120
2221
2322/**************************************************
24
25 BARCODE INPUT MENU
26
23 
24 BARCODE READER MENU
25 
2726 **************************************************/
2827
2928
r242774r242775
3130//  ctor
3231//-------------------------------------------------
3332
34ui_menu_barcode_code::ui_menu_barcode_code(running_machine &machine, render_container *container, barcode_reader_device *reader)
35                  : ui_menu(machine, container)
33ui_menu_barcode_reader::ui_menu_barcode_reader(running_machine &machine, render_container *container, barcode_reader_device *device)
34                  : ui_menu_device_control<barcode_reader_device>(machine, container, device)
3635{
37   m_reader = reader;
3836}
3937
4038
r242774r242775
4240//  dtor
4341//-------------------------------------------------
4442
45ui_menu_barcode_code::~ui_menu_barcode_code()
43ui_menu_barcode_reader::~ui_menu_barcode_reader()
4644{
4745}
4846
r242774r242775
5048//  populate - populates the barcode input menu
5149//-------------------------------------------------
5250
53void ui_menu_barcode_code::populate()
51void ui_menu_barcode_reader::populate()
5452{
55   astring buffer;
56   const char *new_barcode;
53   if (current_device())
54   {     
55      astring buffer;
56      const char *new_barcode;
5757
58   // append the "New Barcode" item
59   if (get_selection() == ITEMREF_NEW_BARCODE)
60   {
61      buffer.cat(m_barcode_buffer);
62      new_barcode = buffer;
63   }
64   else
65   {
66      new_barcode = m_barcode_buffer;
67   }
58      // selected device
59      item_append(current_display_name().cstr(), "", current_display_flags(), ITEMREF_SELECT_READER);
6860
69   item_append("New Barcode:", new_barcode, 0, ITEMREF_NEW_BARCODE);
70
71   // finish up the menu
72   item_append(MENU_SEPARATOR_ITEM, NULL, 0, NULL);
73   item_append("Enter Code", NULL, 0, ITEMREF_ENTER);
74
75   customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
61      // append the "New Barcode" item
62      if (get_selection() == ITEMREF_NEW_BARCODE)
63      {
64         buffer.cat(m_barcode_buffer);
65         new_barcode = buffer;
66      }
67      else
68      {
69         new_barcode = m_barcode_buffer;
70      }
71     
72      item_append("New Barcode:", new_barcode, 0, ITEMREF_NEW_BARCODE);
73     
74      // finish up the menu
75      item_append(MENU_SEPARATOR_ITEM, NULL, 0, NULL);
76      item_append("Enter Code", NULL, 0, ITEMREF_ENTER_BARCODE);
77     
78      customtop = machine().ui().get_line_height() + 3.0f * UI_BOX_TB_BORDER;
79   }
7680}
7781
7882
r242774r242775
8084//  handle - manages inputs in the barcode input menu
8185//-------------------------------------------------
8286
83void ui_menu_barcode_code::handle()
87void ui_menu_barcode_reader::handle()
8488{
89   // rebuild the menu (so to update the selected device, if the user has pressed L or R)
90   reset(UI_MENU_RESET_REMEMBER_POSITION);
91   populate();
92
8593   // process the menu
86   const ui_menu_event *event = process(0);
94   const ui_menu_event *event = process(UI_MENU_PROCESS_LR_REPEAT);
8795
8896   // process the event
8997   if (event != NULL)
r242774r242775
9199      // handle selections
92100      switch (event->iptkey)
93101      {
102         case IPT_UI_LEFT:
103            if (event->itemref == ITEMREF_SELECT_READER)
104               previous();
105            break;
106           
107         case IPT_UI_RIGHT:
108            if (event->itemref == ITEMREF_SELECT_READER)
109               next();
110            break;
111
94112         case IPT_UI_SELECT:
95            if (event->itemref == ITEMREF_ENTER)
113            if (event->itemref == ITEMREF_ENTER_BARCODE)
96114            {
97115               astring tmp_file(m_barcode_buffer);
98116               //printf("code %s\n", m_barcode_buffer);
99               if (!m_reader->is_valid(tmp_file.len()))
117               if (!current_device()->is_valid(tmp_file.len()))
100118                  machine().ui().popup_time(5, "Barcode length invalid!");
101119               else
102120               {
103                  m_reader->write_code(tmp_file.cstr(), tmp_file.len());
121                  current_device()->write_code(tmp_file.cstr(), tmp_file.len());
104122                  // if sending was successful, reset char buffer
105123                  if (m_barcode_buffer[0] != '\0')
106124                     memset(m_barcode_buffer, '\0', ARRAY_LENGTH(m_barcode_buffer));
r242774r242775
134152      }
135153   }
136154}
137
138
139
140/**************************************************
141
142 READER MENU
143
144**************************************************/
145
146//-------------------------------------------------
147//  ctor
148//-------------------------------------------------
149
150ui_menu_barcode_reader::ui_menu_barcode_reader(running_machine &machine, render_container *container)
151                  : ui_menu(machine, container)
152{
153}
154
155//-------------------------------------------------
156//  dtor
157//-------------------------------------------------
158
159ui_menu_barcode_reader::~ui_menu_barcode_reader()
160{
161}
162
163
164//-------------------------------------------------
165//  populate - populates the barcode reader menu
166//-------------------------------------------------
167
168void ui_menu_barcode_reader::populate()
169{
170   astring buffer;
171
172   barcode_reader_device_iterator iter(machine().config().root_device());
173   for (const barcode_reader_device *bcreader = iter.first(); bcreader != NULL; bcreader = iter.next())
174   {
175      char label[0x400];
176      sprintf(label,"[%s (%s)]",bcreader->name(),bcreader->basetag());
177      item_append(label, NULL, 0, (void *)bcreader);
178   }
179}
180
181
182//-------------------------------------------------
183//  handle - manages inputs in the barcode reader menu
184//-------------------------------------------------
185
186void ui_menu_barcode_reader::handle()
187{
188   // process the menu
189   const ui_menu_event *event = process(0);
190
191   // process the event
192   if (event != NULL && event->iptkey == IPT_UI_SELECT)
193   {
194      if (event->itemref != NULL)
195      {
196         ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_barcode_code(machine(), container, (barcode_reader_device *)event->itemref)));
197      }
198
199   }
200}
trunk/src/emu/ui/barcode.h
r242774r242775
22
33    ui/barcode.h
44
5    MESS's "barcode reader" control
5    "Barcode Reader" control
66
77    Copyright Nicola Salmoria and the MAME Team.
88    Visit http://mamedev.org for licensing and usage restrictions.
r242774r242775
1515#define __UI_BARCODE_H__
1616
1717#include "machine/bcreader.h"
18#include "ui/devctrl.h"
1819
19class ui_menu_barcode_code : public ui_menu {
20class ui_menu_barcode_reader : public ui_menu_device_control<barcode_reader_device> {
2021public:
21   ui_menu_barcode_code(running_machine &machine, render_container *container, barcode_reader_device *reader);
22   virtual ~ui_menu_barcode_code();
22   ui_menu_barcode_reader(running_machine &machine, render_container *container, barcode_reader_device *device);
23   virtual ~ui_menu_barcode_reader();
2324   virtual void populate();
2425   virtual void handle();
2526
2627private:
27   barcode_reader_device *m_reader;
2828   char  m_barcode_buffer[20];
2929};
3030
3131
32class ui_menu_barcode_reader : public ui_menu {
33public:
34   ui_menu_barcode_reader(running_machine &machine, render_container *container);
35   virtual ~ui_menu_barcode_reader();
36   virtual void populate();
37   virtual void handle();
38};
39
4032#endif // __UI_BARCODE_H__
trunk/src/emu/ui/mainmenu.c
r242774r242775
229229         break;
230230
231231      case BARCODE_READ:
232         ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_barcode_reader(machine(), container)));
232         ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_barcode_reader(machine(), container, NULL)));
233233         break;
234234
235235      default:


Previous 199869 Revisions Next


© 1997-2024 The MAME Team