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() |
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 |
|
|
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) |
123 |
|
state.item = next; |
124 |
|
} |
125 |
|
|
104 |
– |
std::cerr << state.item << ' ' << state.top << ' ' << state.bottom << ' ' << cursor << std::endl; |
105 |
– |
|
126 |
|
return *this; |
127 |
|
} |
128 |
|
|
136 |
|
else |
137 |
|
--cursor; |
138 |
|
|
119 |
– |
std::cerr << state.item << ' ' << state.top << ' ' << state.bottom << ' ' << cursor << std::endl; |
120 |
– |
|
139 |
|
return *this; |
140 |
|
} |
141 |
|
|
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 |
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 |
|
} |