magnatunedatabasehandler.cpp
来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· C++ 代码 · 共 573 行 · 第 1/2 页
CPP
573 行
MagnatuneAlbumList MagnatuneDatabaseHandler::getAlbumsByArtistId( int id, QString genre ){ QString genreSqlString; if ( genre.isEmpty() ) { genreSqlString = ""; } else { genreSqlString = " AND magnatune_albums.genre='" + genre + '\''; } CollectionDB *db = CollectionDB::instance(); QString queryString; queryString = "SELECT DISTINCT id, " "name, year, " "artist_id, genre, " "album_code, cover_url " "FROM magnatune_albums " "WHERE artist_id = '" + QString::number( id ) + '\''; queryString += genreSqlString; queryString += ';'; QStringList result = db->query( queryString ); MagnatuneAlbumList list; debug() << "Looking for Albums..." << endl; debug() << "Query string:" << queryString << endl; while ( result.size() > 0 ) { MagnatuneAlbum album; album.setId( result.front().toInt() ); result.pop_front(); album.setName( result.front() ); result.pop_front(); album.setLaunchDate( QDate( result.front().toInt(), 1, 1 ) ); result.pop_front(); album.setArtistId( result.front().toInt() ); result.pop_front(); album.setMp3Genre( result.front() ); result.pop_front(); album.setAlbumCode( result.front() ); result.pop_front(); album.setCoverURL( result.front() ); result.pop_front(); list.append( album ); } return list;}MagnatuneTrackList MagnatuneDatabaseHandler::getTracksByAlbumId( int id ){ CollectionDB *db = CollectionDB::instance(); QString queryString; queryString = "SELECT DISTINCT id, " "name, track_number, " "length, album_id, " "artist_id, preview_lofi, " "preview_hifi " "FROM magnatune_tracks " "WHERE album_id = '" + QString::number( id ) + "';"; QStringList result = db->query( queryString ); MagnatuneTrackList list; debug() << "Looking for tracks..." << endl; debug() << "Query string:" << queryString << endl; while ( result.size() > 0 ) { debug() << "track start" << endl; MagnatuneTrack track; track.setId( result.front().toInt() ); result.pop_front(); track.setName( result.front() ); result.pop_front(); track.setTrackNumber( result.front().toInt() ); result.pop_front(); track.setDuration( result.front().toInt() ); result.pop_front(); track.setAlbumId( result.front().toInt() ); result.pop_front(); track.setArtistId( result.front().toInt() ); result.pop_front(); track.setLofiURL( result.front() ); result.pop_front(); track.setHifiURL( result.front() ); result.pop_front(); list.append( track ); debug() << "track end" << endl; } return list;}QStringList MagnatuneDatabaseHandler::getAlbumGenres( ){ CollectionDB *db = CollectionDB::instance(); QString queryString; queryString = "SELECT DISTINCT genre " "FROM magnatune_albums " "ORDER BY genre;"; return db->query( queryString );}void MagnatuneDatabaseHandler::begin( ){ CollectionDB *db = CollectionDB::instance(); QString queryString = "BEGIN;"; db->query( queryString );}void MagnatuneDatabaseHandler::commit( ){ CollectionDB *db = CollectionDB::instance(); QString queryString = "COMMIT;"; db->query( queryString );}MagnatuneArtist MagnatuneDatabaseHandler::getArtistById( int id ){ CollectionDB *db = CollectionDB::instance(); QString queryString; queryString = "SELECT id, " "name, artist_page, " "description, photo_url " "FROM magnatune_artists " "WHERE id = '" + QString::number( id ) + "';"; QStringList result = db->query( queryString ); MagnatuneArtist artist; if ( result.size() == 5 ) { artist.setId( result.front().toInt() ); result.pop_front(); artist.setName( result.front() ); result.pop_front(); artist.setHomeURL( result.front() ); result.pop_front(); artist.setDescription( result.front() ); result.pop_front(); artist.setPhotoURL( result.front() ); result.pop_front(); } return artist;}MagnatuneAlbum MagnatuneDatabaseHandler::getAlbumById( int id ){ CollectionDB *db = CollectionDB::instance(); QString queryString; queryString = "SELECT id, " "name, year, " "artist_id, genre, " "album_code, cover_url " "FROM magnatune_albums " "WHERE id = '" + QString::number( id ) + "';"; QStringList result = db->query( queryString ); MagnatuneAlbum album; if ( result.size() == 7 ) { album.setId( result.front().toInt() ); result.pop_front(); album.setName( result.front() ); result.pop_front(); album.setLaunchDate( QDate( result.front().toInt(), 1, 1 ) ); result.pop_front(); album.setArtistId( result.front().toInt() ); result.pop_front(); album.setMp3Genre( result.front() ); result.pop_front(); album.setAlbumCode( result.front() ); result.pop_front(); album.setCoverURL( result.front() ); result.pop_front(); } return album;}MagnatuneTrackList MagnatuneDatabaseHandler::getTracksByArtistId( int id ){ MagnatuneAlbumList albums = getAlbumsByArtistId( id, "" ); MagnatuneAlbumList::iterator it; MagnatuneTrackList tracks; for ( it = albums.begin(); it != albums.end(); ++it ) { tracks += getTracksByAlbumId( ( *it ).getId() ); } return tracks;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?