ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/cf.schmorp.de/dclient/src/backend/ndk/menu.cpp
Revision: 1.4
Committed: Sun Oct 24 20:31:51 2010 UTC (16 years ago) by sf-pippijn
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +2 -2 lines
Log Message:
use EV and plain sockets instead of asio

File Contents

# User Rev Content
1 sf-pippijn 1.4 #include <ndk/menu.hh>
2     #include <ndk/application.hh>
3 sf-pippijn 1.1
4     using ndk::menu;
5    
6     menu::item::item (char const *name, char const *description)
7     : item_ (new_item ("name", "description"))
8     {
9     }
10    
11     menu::item::item ()
12     : item_ (nullptr)
13     {
14     }
15    
16     menu::item::item (item &&other)
17     : item_ (other.item_)
18     {
19     other.item_ = nullptr;
20     }
21    
22     menu::item &
23     menu::item::operator = (item &&rhs)
24     {
25     item_ = rhs.item_;
26     rhs.item_ = nullptr;
27     return *this;
28     }
29    
30     menu::item::~item ()
31     {
32     if (item_)
33     free_item (item_);
34     }
35    
36    
37     menu::menu (panel *parent)
38     : panel (parent)
39     , menu_ (nullptr, free_menu)
40     {
41 sf-pippijn 1.3 #if 0
42 sf-pippijn 1.1 events ()->on_keyboard (slot (&menu::at_keyboard, this));
43    
44     add_item ("name1", "description1");
45     add_item ("name2", "description2");
46     add_item ("name3", "description3");
47     items_.emplace_back ();
48    
49     menu_.reset (new_menu ((ITEM **)&items_[0]));
50     int rows, columns;
51     scale_menu (menu_.get (), &rows, &columns);
52     resize (columns, rows);
53     move (130, 10);
54     set_menu_sub (menu_.get (), win ());
55    
56     visualize ();
57 sf-pippijn 1.3 #endif
58 sf-pippijn 1.1 }
59    
60     menu::~menu ()
61     {
62     }
63    
64     void
65     menu::add_item (char const *name, char const *description)
66     {
67     menu_ = nullptr;
68     items_.emplace_back (name, description);
69     }
70    
71     void
72     menu::draw ()
73     {
74     panel::draw ();
75 sf-pippijn 1.3
76     if (!menu_)
77     return;
78    
79 sf-pippijn 1.1 unpost_menu (menu_.get ());
80     post_menu (menu_.get ());
81     }
82    
83     ndk::event::result
84     menu::at_keyboard (keyboard const &ev)
85     {
86     event::result res;
87    
88     switch (ev.code ())
89     {
90     case key::up:
91     menu_driver (menu_.get (), REQ_UP_ITEM);
92     res = event::accepted;
93     break;
94    
95     case key::down:
96     menu_driver (menu_.get (), REQ_DOWN_ITEM);
97     res = event::accepted;
98     break;
99    
100     default:
101     res = event::ignored;
102     break;
103     }
104    
105 sf-pippijn 1.2 doupdate ();
106     //visualize ();
107 sf-pippijn 1.1 //if (res == event::accepted)
108     //refresh ();
109    
110     return res;
111     }