ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/truck/DashInterface/MenuList.cpp
(Generate patch)

Comparing DashInterface/MenuList.cpp (file contents):
Revision 42 by douglas, 2008-03-06T13:04:20-08:00 vs.
Revision 44 by douglas, 2008-03-06T15:21:03-08:00

# Line 16 | Line 16 | MenuList::MenuItem::MenuItem(MenuList *l
16   {
17   }
18  
19 < MenuList::MenuList(MenuList *parent, Display &display, size_t size) : parent(parent), display(display), list(size)
19 > MenuList::MenuList(MenuList *parent, Display &display, size_t size) : parent(parent), display(display), cursor(0), list(size)
20   {
21   }
22  
# Line 48 | Line 48 | MenuList *MenuList::Left()
48  
49   void MenuList::Render()
50   {
51 +        display.SetCursorPosition(19, cursor);
52 +
53          if (this != previous || state != old)
54          {
55 < #               define Cursor(index) (state.cursor == index ? _B("\x1f") : _B(" "))
56 <
57 <                display.Set(0, 0, (state.bottom != 0 ? '\x1a' : ' ') + Cursor(0));
58 <                display.Set(0, 1, '\x12' + Cursor(1));
57 <                display.Set(0, 2, '\x13' + Cursor(2));
58 <                display.Set(0, 3, (state.top < list.size() ? '\x1b' : ' ') + Cursor(3));
59 <
60 < #               undef Cursor
55 >                display.Set(0, 0, (state.bottom != 0 ? '\x1a' : ' '));
56 >                display.Set(0, 1, '\x12');
57 >                display.Set(0, 2, '\x13');
58 >                display.Set(0, 3, (state.top < list.size() ? '\x1b' : ' '));
59  
60                  _forall (size_t, index, state.bottom, state.top)
61                  {
62                          MenuItem *item(list[index]);
63                          std::string value(*item);
64  
65 <                        value.resize(17, ' ');
65 >                        value.resize(18, ' ');
66  
67                          if (BoolItem *item_ = dynamic_cast<BoolItem *>(item))
68                                  value += (*item_ ? '\x94' : '\xcf');
# Line 73 | Line 71 | void MenuList::Render()
71                          else
72                                  value += ' ';
73  
74 <                        display.Set(2, _index, value);
74 >                        display.Set(1, _index, value);
75                  }
76          }
77          else
80        {
81                if (state.cursor != old.cursor)
82                {
83                        display.Set(1, old.cursor, _B(" "));
84                        display.Set(1, state.cursor, _B("\x1f"));
85                }
86
78                  _forall (size_t, index, state.bottom, state.top)
79                          if (BoolItem *item = dynamic_cast<BoolItem *>(list[index]))
80                                  display.Set(19, _index, (*item ? _B("\x94") : _B("\xcf")));
90        }
81   }
82  
83   MenuList &MenuList::operator ++()
84   {
85 +        old = state;
86 +
87          size_t next(state.item + 1);
88  
89          if (next != list.size())
# Line 99 | Line 91 | MenuList &MenuList::operator ++()
91                  if (next == state.bottom)
92                          ++state.top, ++state.bottom;
93                  else
94 <                        ++state.cursor;
94 >                        ++cursor;
95  
96                  state.item = next;
97          }
# Line 109 | Line 101 | MenuList &MenuList::operator ++()
101  
102   MenuList &MenuList::operator --()
103   {
104 +        old = state;
105 +
106          if (state.item != 0)
107                  if (state.item-- == state.top)
108                          --state.top, --state.bottom;
109                  else
110 <                        --state.cursor;
110 >                        --cursor;
111  
112          return *this;
113   }
# Line 161 | Line 155 | TopList::ShuffleItem::operator bool() co
155          return audacious.IsRunning() ? audacious.IsShuffle() : false;
156   }
157  
158 < TopList::TopList(Audacious::Audacious &audacious, Display &display, bool &append) : MenuList(this, display, 3)
158 > TopList::MusicItem::MusicItem(MenuList *list, Audacious::Audacious &audacious) : MenuItem(list), audacious(audacious)
159 > {
160 > }
161 >
162 > MenuList *TopList::MusicItem::Select()
163 > {
164 >        delete this;
165 >
166 >        return NULL;
167 > }
168 >
169 > TopList::MusicItem::operator std::string() const
170 > {
171 >        return _B("Music");
172 > }
173 >
174 > TopList::TopList(Display &display, Audacious::Audacious &audacious, bool &append) : MenuList(this, display, 3)
175   {
176          previous = NULL;
177          list[0] = new AppendItem(this, append);
178          list[1] = new ShuffleItem(this, audacious);
179 +        list[2] = new MusicItem(this, audacious);
180   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines