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 46 by douglas, 2008-03-06T19:47:57-08:00 vs.
Revision 49 by douglas, 2008-03-08T21:23:41-08:00

# Line 16 | Line 16 | MenuList::MenuItem::MenuItem(MenuList *l
16   {
17   }
18  
19 + MenuList::MusicItem::MusicItem(Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : audacious(audacious), append(append), library(library)
20 + {
21 + }
22 +
23   MenuList::MenuList(MenuList *parent, Display &display, size_t size) : parent(parent), display(display), cursor(0), list(size)
24   {
25   }
26  
27 + MenuList::MenuList(MenuList *parent) : parent(parent), display(parent->display), cursor(0), list(1)
28 + {
29 + }
30 +
31   MenuList::~MenuList()
32   {
33          _foreach (std::vector<MenuItem *>, item, list)
34                  delete *item;
35 +
36 +        if (parent != NULL && parent != this)
37 +                delete parent;
38   }
39  
40   MenuList *MenuList::Enter()
41   {
42 <        return list[state.item]->Select();
42 >        return Select(list[state.item]);
43   }
44  
45   MenuList *MenuList::Right()
# Line 36 | Line 47 | MenuList *MenuList::Right()
47          MenuItem *item(list[state.item]);
48  
49          if (dynamic_cast<SubItem *>(item))
50 <                return item->Select();
50 >                return Select(item);
51  
52          return this;
53   }
54  
55   MenuList *MenuList::Left()
56   {
57 +        MenuList *parent(this->parent);
58 +
59 +        if (parent != this)
60 +        {
61 +                this->parent = NULL;
62 +
63 +                delete this;
64 +        }
65 +
66          return parent;
67   }
68  
# Line 77 | Line 97 | void MenuList::Render()
97                                  display.Set(1, _index, value);
98                          }
99                          else
100 <                                display.Set(1, _index, std::string(18, ' '));
100 >                                display.Set(1, _index, std::string(19, ' '));
101 >
102 >                previous = this;
103          }
104          else
105                  _forall (size_t, index, state.top, size < state.bottom ? size : state.bottom)
# Line 101 | Line 123 | MenuList &MenuList::operator ++()
123                  state.item = next;
124          }
125  
104        std::cerr << state.item << ' ' << state.top << ' ' << state.bottom << ' ' << cursor << std::endl;
105
126          return *this;
127   }
128  
# Line 116 | Line 136 | MenuList &MenuList::operator --()
136                  else
137                          --cursor;
138  
119        std::cerr << state.item << ' ' << state.top << ' ' << state.bottom << ' ' << cursor << std::endl;
120
139          return *this;
140   }
141  
# Line 164 | Line 182 | TopList::ShuffleItem::operator bool() co
182          return audacious.IsRunning() ? audacious.IsShuffle() : false;
183   }
184  
185 < TopList::MusicItem::MusicItem(MenuList *list, Audacious::Audacious &audacious) : MenuItem(list), audacious(audacious)
185 > TopList::MusicItem::MusicItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), MenuList::MusicItem(audacious, append, library)
186   {
187   }
188  
189   MenuList *TopList::MusicItem::Select()
190   {
191 <        delete this;
174 <
175 <        return NULL;
191 >        return new ArtistList(list, audacious, append, library);
192   }
193  
194   TopList::MusicItem::operator std::string() const
# Line 180 | Line 196 | TopList::MusicItem::operator std::string
196          return _B("Music");
197   }
198  
199 < TopList::TopList(Display &display, Audacious::Audacious &audacious, bool &append) : MenuList(this, display, 3)
199 > TopList::TopList(Display &display, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuList(this, display, 3)
200   {
201          previous = NULL;
202          list[0] = new AppendItem(this, append);
203          list[1] = new ShuffleItem(this, audacious);
204 <        list[2] = new MusicItem(this, audacious);
204 >        list[2] = new MusicItem(this, audacious, append, library);
205 > }
206 >
207 > ArtistList::ArtistList(MenuList *parent, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuList(parent)
208 > {
209 >        list[0] = new AllItem(this, audacious, append, library);
210 > }
211 >
212 > ArtistList::AllItem::AllItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), MusicItem(audacious, append, library)
213 > {
214 > }
215 >
216 > MenuList *ArtistList::AllItem::Select()
217 > {
218 >        _L<std::string> songs;
219 >
220 >        _foreach (const _L<MusicLibrary::Song>, song, library.GetSongs())
221 >                songs.push_back(song->GetPath());
222 >
223 >        if (audacious.IsRunning())
224 >                audacious.Playlist(songs, append);
225 >
226 >        return NULL;
227 > }
228 >
229 > ArtistList::AllItem::operator std::string() const
230 > {
231 >        return _B("All Artists");
232   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines