Changeset 49


Ignore:
Timestamp:
03/08/2008 21:23:41 (3 years ago)
Author:
douglas
Message:

Woo!

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • Audacious/Audacious.hpp

    r44 r49  
    4242                _tforeach (const Type_, item, list) 
    4343                { 
    44                         list_ = list_ ? std::realloc(list_, ++size) : std::malloc(++size); 
     44                        list_ = reinterpret_cast<char **>(list_ ? std::realloc(list_, ++size) : std::malloc(++size)); 
    4545                        list_[_index] = const_cast<char *>(item->c_str()); 
    4646                } 
  • DashInterface/MenuList.cpp

    r47 r49  
    1717} 
    1818 
     19MenuList::MusicItem::MusicItem(Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : audacious(audacious), append(append), library(library) 
     20{ 
     21} 
     22 
    1923MenuList::MenuList(MenuList *parent, Display &display, size_t size) : parent(parent), display(display), cursor(0), list(size) 
    2024{ 
     
    3640MenuList *MenuList::Enter() 
    3741{ 
    38         return list[state.item]->Select(); 
     42        return Select(list[state.item]); 
    3943} 
    4044 
     
    4448 
    4549        if (dynamic_cast<SubItem *>(item)) 
    46                 return item->Select(); 
     50                return Select(item); 
    4751 
    4852        return this; 
     
    9599                        else 
    96100                                display.Set(1, _index, std::string(19, ' ')); 
     101 
     102                previous = this; 
    97103        } 
    98104        else 
     
    177183} 
    178184 
    179 TopList::MusicItem::MusicItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), audacious(audacious), append(append), library(library) 
     185TopList::MusicItem::MusicItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), MenuList::MusicItem(audacious, append, library) 
    180186{ 
    181187} 
     
    204210} 
    205211 
    206 ArtistList::AllItem::AllItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), audacious(audacious), append(append), library(library) 
     212ArtistList::AllItem::AllItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library) : MenuItem(list), MusicItem(audacious, append, library) 
    207213{ 
    208214} 
     
    210216MenuList *ArtistList::AllItem::Select() 
    211217{ 
    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; 
    215227} 
    216228 
  • DashInterface/MenuList.hpp

    r47 r49  
    3838        } state, old; 
    3939 
    40 public: 
     40protected: 
    4141        struct MenuItem 
    4242        { 
     
    4444                MenuList *list; 
    4545 
    46         public: 
    4746                MenuItem(MenuList *list); 
    4847 
     48        public: 
    4949                virtual MenuList *Select() = 0; 
    5050                virtual operator std::string() const = 0; 
    5151        }; 
    5252 
     53private: 
     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 
     64protected: 
    5365        struct BoolItem 
    5466        { 
     
    5870        struct SubItem {}; 
    5971 
    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 
    6182        std::vector<MenuItem *> list; 
    6283 
     
    7495}; 
    7596 
    76 struct TopList : public MenuList 
     97class TopList : public MenuList 
    7798{ 
    7899        class AppendItem : public MenuItem, public BoolItem 
     
    100121        }; 
    101122 
    102         class MusicItem : public MenuItem, public SubItem 
     123        struct MusicItem : public MenuItem, public SubItem, public MenuList::MusicItem 
    103124        { 
    104                 Audacious::Audacious &audacious; 
    105                 bool &append; 
    106                 MusicLibrary::Library &library; 
    107  
    108         public: 
    109125                MusicItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library); 
    110126 
     
    113129        }; 
    114130 
     131public: 
    115132        TopList(Display &display, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library); 
    116133}; 
    117134 
    118 struct ArtistList : public MenuList 
     135class ArtistList : public MenuList 
    119136{ 
    120         class AllItem : public MenuItem 
     137        struct AllItem : public MenuItem, public MusicItem 
    121138        { 
    122                 Audacious::Audacious &audacious; 
    123                 bool &append; 
    124                 MusicLibrary::Library &library; 
    125  
    126         public: 
    127139                AllItem(MenuList *list, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library); 
    128140 
     
    131143        }; 
    132144 
    133         /*class ArtistItem : public MenuItem, public SubItem 
     145        /*struct ArtistItem : public MenuItem, public SubItem 
    134146        { 
    135147        };*/ 
    136148 
     149public: 
    137150        ArtistList(MenuList *parent, Audacious::Audacious &audacious, bool &append, MusicLibrary::Library &library); 
    138151}; 
    139152 
    140 struct AlbumList : public MenuList 
     153class AlbumList : public MenuList 
    141154{ 
    142         /*class AllItem : public MenuItem 
     155        /*struct AllItem : public MenuItem 
    143156        { 
    144157        }; 
    145158 
    146         class AlbumItem : public MenuItem, public SubItem 
     159        struct AlbumItem : public MenuItem, public SubItem 
    147160        { 
    148161        };*/ 
    149162 
     163public: 
    150164        AlbumList(MenuList *parent, Audacious::Audacious &audacious, bool &append); 
    151165}; 
    152166 
    153 struct SongList : public MenuList 
     167class SongList : public MenuList 
    154168{ 
    155         /*class AllItem : public MenuItem 
     169        /*struct AllItem : public MenuItem 
    156170        { 
    157171        }; 
    158172 
    159         class SongItem : public MenuItem 
     173        struct SongItem : public MenuItem 
    160174        { 
    161175        };*/ 
    162176 
     177public: 
    163178        SongList(MenuList *parent, Audacious::Audacious &audacious, bool &append); 
    164179}; 
  • MusicLibrary/MusicLibrary.cpp

    r47 r49  
    1212{ 
    1313 
    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"))) 
     14Library::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"))) 
    1515{ 
    1616} 
     
    3434_L<Song> Library::GetSongs() const 
    3535{ 
    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; 
    3743} 
    3844 
  • MusicLibrary/MusicLibrary.hpp

    r47 r49  
    2121{ 
    2222        SQLite3::Connection connection; 
    23         SQLite3::Statement artists; 
    24         SQLite3::Statement artistAlbums; 
     23        SQLite3::Statement artists, artistAlbums; 
    2524        SQLite3::Statement albumSongs; 
     25        SQLite3::Statement songs; 
    2626 
    2727public: 
  • MusicLibrary/Test.cpp

    r47 r49  
    1818                MusicLibrary::Library library; 
    1919 
    20                 _foreach (const _L<MusicLibrary::Artist>, artist, library.GetArtists()) 
     20                /*_foreach (const _L<MusicLibrary::Artist>, artist, library.GetArtists()) 
    2121                { 
    2222                        std::cout << artist->GetId() << ' ' << artist->GetName() << std::endl; 
     
    2929                                        std::cout << song->GetId() << ' ' << song->GetName() << ' ' << song->GetPath() << ' ' << song->GetTrack() << std::endl; 
    3030                        } 
    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; 
    3235        } 
    3336        catch (const std::exception &exception) 
Note: See TracChangeset for help on using the changeset viewer.