ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/cf.schmorp.de/dclient/src/backend/ndk/menu.cpp
Revision: 1.2
Committed: Mon Oct 18 06:54:03 2010 UTC (16 years ago) by sf-pippijn
Branch: MAIN
Changes since 1.1: +3 -1 lines
Log Message:
gcc 4.5; moved some code; background colour support

File Contents

# User Rev Content
1 sf-pippijn 1.1 #include <ndk++/menu.hh>
2 sf-pippijn 1.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     events ()->on_keyboard (slot (&menu::at_keyboard, this));
42    
43     add_item ("name1", "description1");
44     add_item ("name2", "description2");
45     add_item ("name3", "description3");
46     items_.emplace_back ();
47    
48     menu_.reset (new_menu ((ITEM **)&items_[0]));
49     int rows, columns;
50     scale_menu (menu_.get (), &rows, &columns);
51     resize (columns, rows);
52     move (130, 10);
53     set_menu_sub (menu_.get (), win ());
54    
55     visualize ();
56     }
57    
58     menu::~menu ()
59     {
60     }
61    
62     void
63     menu::add_item (char const *name, char const *description)
64     {
65     menu_ = nullptr;
66     items_.emplace_back (name, description);
67     }
68    
69     void
70     menu::draw ()
71     {
72     panel::draw ();
73     unpost_menu (menu_.get ());
74     post_menu (menu_.get ());
75     }
76    
77     ndk::event::result
78     menu::at_keyboard (keyboard const &ev)
79     {
80     event::result res;
81    
82     switch (ev.code ())
83     {
84     case key::up:
85     menu_driver (menu_.get (), REQ_UP_ITEM);
86     res = event::accepted;
87     break;
88    
89     case key::down:
90     menu_driver (menu_.get (), REQ_DOWN_ITEM);
91     res = event::accepted;
92     break;
93    
94     default:
95     res = event::ignored;
96     break;
97     }
98    
99 sf-pippijn 1.2 doupdate ();
100     //visualize ();
101 sf-pippijn 1.1 //if (res == event::accepted)
102     //refresh ();
103    
104     return res;
105     }