Changeset 49
- Timestamp:
- 03/08/2008 21:23:41 (3 years ago)
- Files:
-
- 6 edited
-
Audacious/Audacious.hpp (modified) (1 diff)
-
DashInterface/MenuList.cpp (modified) (7 diffs)
-
DashInterface/MenuList.hpp (modified) (7 diffs)
-
MusicLibrary/MusicLibrary.cpp (modified) (2 diffs)
-
MusicLibrary/MusicLibrary.hpp (modified) (1 diff)
-
MusicLibrary/Test.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Audacious/Audacious.hpp
r44 r49 42 42 _tforeach (const Type_, item, list) 43 43 { 44 list_ = list_ ? std::realloc(list_, ++size) : std::malloc(++size);44 list_ = reinterpret_cast<char **>(list_ ? std::realloc(list_, ++size) : std::malloc(++size)); 45 45 list_[_index] = const_cast<char *>(item->c_str()); 46 46 } -
DashInterface/MenuList.cpp
r47 r49 17 17 } 18 18 19 MenuList::MusicItem::MusicItem(Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : audacious(audacious), append(append), library(library) 20 { 21 } 22 19 23 MenuList::MenuList(MenuList *parent, Display &display, size_t size) : parent(parent), display(display), cursor(0), list(size) 20 24 { … … 36 40 MenuList *MenuList::Enter() 37 41 { 38 return list[state.item]->Select();42 return Select(list[state.item]); 39 43 } 40 44 … … 44 48 45 49 if (dynamic_cast<SubItem *>(item)) 46 return item->Select();50 return Select(item); 47 51 48 52 return this; … … 95 99 else 96 100 display.Set(1, _index, std::string(19, ' ')); 101 102 previous = this; 97 103 } 98 104 else … … 177 183 } 178 184 179 TopList::MusicItem::MusicItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), audacious(audacious), append(append), library(library)185 TopList::MusicItem::MusicItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), MenuList::MusicItem(audacious, append, library) 180 186 { 181 187 } … … 204 210 } 205 211 206 ArtistList::AllItem::AllItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), audacious(audacious), append(append), library(library)212 ArtistList::AllItem::AllItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), MusicItem(audacious, append, library) 207 213 { 208 214 } … … 210 216 MenuList *ArtistList::AllItem::Select() 211 217 { 212 std::cerr << _B("All Artists!") << std::endl; 213 214 return list; 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; 215 227 } 216 228 -
DashInterface/MenuList.hpp
r47 r49 38 38 } state, old; 39 39 40 p ublic:40 protected: 41 41 struct MenuItem 42 42 { … … 44 44 MenuList *list; 45 45 46 public:47 46 MenuItem(MenuList *list); 48 47 48 public: 49 49 virtual MenuList *Select() = 0; 50 50 virtual operator std::string() const = 0; 51 51 }; 52 52 53 private: 54 inline MenuList *Select(MenuItem *item) 55 { 56 MenuList *list(item->Select()); 57 58 if (list == NULL) 59 delete this; 60 61 return list; 62 } 63 64 protected: 53 65 struct BoolItem 54 66 { … … 58 70 struct SubItem {}; 59 71 60 protected: 72 struct MusicItem 73 { 74 protected: 75 Audacious::Audacious &audacious; 76 bool &append; 77 MusicLibrary::Library &library; 78 79 MusicItem(Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library); 80 }; 81 61 82 std::vector<MenuItem *> list; 62 83 … … 74 95 }; 75 96 76 structTopList : public MenuList97 class TopList : public MenuList 77 98 { 78 99 class AppendItem : public MenuItem, public BoolItem … … 100 121 }; 101 122 102 class MusicItem : public MenuItem, public SubItem123 struct MusicItem : public MenuItem, public SubItem, public MenuList::MusicItem 103 124 { 104 Audacious::Audacious &audacious;105 bool &append;106 MusicLibrary::Library &library;107 108 public:109 125 MusicItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library); 110 126 … … 113 129 }; 114 130 131 public: 115 132 TopList(Display &display, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library); 116 133 }; 117 134 118 structArtistList : public MenuList135 class ArtistList : public MenuList 119 136 { 120 class AllItem : public MenuItem137 struct AllItem : public MenuItem, public MusicItem 121 138 { 122 Audacious::Audacious &audacious;123 bool &append;124 MusicLibrary::Library &library;125 126 public:127 139 AllItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library); 128 140 … … 131 143 }; 132 144 133 /* classArtistItem : public MenuItem, public SubItem145 /*struct ArtistItem : public MenuItem, public SubItem 134 146 { 135 147 };*/ 136 148 149 public: 137 150 ArtistList(MenuList *parent, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library); 138 151 }; 139 152 140 structAlbumList : public MenuList153 class AlbumList : public MenuList 141 154 { 142 /* classAllItem : public MenuItem155 /*struct AllItem : public MenuItem 143 156 { 144 157 }; 145 158 146 classAlbumItem : public MenuItem, public SubItem159 struct AlbumItem : public MenuItem, public SubItem 147 160 { 148 161 };*/ 149 162 163 public: 150 164 AlbumList(MenuList *parent, Audacious::Audacious &audacious, bool &append); 151 165 }; 152 166 153 structSongList : public MenuList167 class SongList : public MenuList 154 168 { 155 /* classAllItem : public MenuItem169 /*struct AllItem : public MenuItem 156 170 { 157 171 }; 158 172 159 classSongItem : public MenuItem173 struct SongItem : public MenuItem 160 174 { 161 175 };*/ 162 176 177 public: 163 178 SongList(MenuList *parent, Audacious::Audacious &audacious, bool &append); 164 179 }; -
MusicLibrary/MusicLibrary.cpp
r47 r49 12 12 { 13 13 14 Library::Library() : connection(_B(_MusicLibrary_)), artists(connection.Prepare(_B("select id, name from artist order by name"))), artistAlbums(connection.Prepare(_B("select id, name, year from album where artist = ? order by year, name"))), albumSongs(connection.Prepare(_B("select id, name, path, track from song where album = ? order by track, path"))) 14 Library::Library() : connection(_B(_MusicLibrary_)), artists(connection.Prepare(_B("select id, name from artist order by name"))), artistAlbums(connection.Prepare(_B("select id, name, year from album where artist = ? order by year, name"))), albumSongs(connection.Prepare(_B("select id, name, path, track from song where album = ? order by track, path"))), songs(connection.Prepare(_B("select song.id, song.name, path, album, track from artist join album on (artist.id = album.artist) join song on (album.id = song.album) order by artist.name, year, album.name, track, path"))) 15 15 { 16 16 } … … 34 34 _L<Song> Library::GetSongs() const 35 35 { 36 return _L<Song>(); 36 SQLite3::Results results(songs.Execute()); 37 _L<Song> songs; 38 39 while (results.MoveNext()) 40 songs.push_back(Song(this, results.Get<int>(0), results.Get<std::string>(1), results.Get<std::string>(2), results.Get<int>(3), results.Get<int>(4))); 41 42 return songs; 37 43 } 38 44 -
MusicLibrary/MusicLibrary.hpp
r47 r49 21 21 { 22 22 SQLite3::Connection connection; 23 SQLite3::Statement artists; 24 SQLite3::Statement artistAlbums; 23 SQLite3::Statement artists, artistAlbums; 25 24 SQLite3::Statement albumSongs; 25 SQLite3::Statement songs; 26 26 27 27 public: -
MusicLibrary/Test.cpp
r47 r49 18 18 MusicLibrary::Library library; 19 19 20 _foreach (const _L<MusicLibrary::Artist>, artist, library.GetArtists())20 /*_foreach (const _L<MusicLibrary::Artist>, artist, library.GetArtists()) 21 21 { 22 22 std::cout << artist->GetId() << ' ' << artist->GetName() << std::endl; … … 29 29 std::cout << song->GetId() << ' ' << song->GetName() << ' ' << song->GetPath() << ' ' << song->GetTrack() << std::endl; 30 30 } 31 } 31 }*/ 32 33 _foreach (const _L<MusicLibrary::Song>, song, library.GetSongs()) 34 std::cout << song->GetId() << ' ' << song->GetName() << ' ' << song->GetPath() << ' ' << song->GetTrack() << std::endl; 32 35 } 33 36 catch (const std::exception &exception)
Note: See TracChangeset
for help on using the changeset viewer.
