Changeset 17 for lib/mpdparseutils.cpp
- Timestamp:
- 12/30/07 20:55:36 (4 years ago)
- File:
-
- 1 edited
-
lib/mpdparseutils.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lib/mpdparseutils.cpp
r7 r17 4 4 5 5 6 MPDStatus * MPDParseUtils::parseStatus(const QByteArray * const data)6 void MPDParseUtils::parseStatus(const QByteArray * const data, MPDStatus &destStatus) 7 7 { 8 MPDStatus *status = new MPDStatus;9 10 8 QList<QByteArray> lines = data->split('\n'); 11 9 QList<QByteArray> tokens; … … 15 13 16 14 if(tokens.at(0) == "volume") { 17 status->volume = tokens.at(1).toUInt();15 destStatus.volume = tokens.at(1).toUInt(); 18 16 } else if(tokens.at(0) == "repeat") { 19 17 if(tokens.at(1) == "1") { 20 status->repeat = true;18 destStatus.repeat = true; 21 19 } else { 22 status->repeat = false;20 destStatus.repeat = false; 23 21 } 24 22 } else if(tokens.at(0) == "random") { 25 23 if(tokens.at(1) == "1") { 26 status->random = "1";24 destStatus.random = "1"; 27 25 } else { 28 status->random = "0";26 destStatus.random = "0"; 29 27 } 30 28 } else if(tokens.at(0) == "playlist") { 31 status->playlist = tokens.at(1).toUInt();29 destStatus.playlist = tokens.at(1).toUInt(); 32 30 } else if(tokens.at(0) == "playlistlength") { 33 status->playlistlength = tokens.at(1).toInt();31 destStatus.playlistlength = tokens.at(1).toInt(); 34 32 } else if(tokens.at(0) == "playlistqueue") { 35 status->playlistqueue = tokens.at(1).toInt();33 destStatus.playlistqueue = tokens.at(1).toInt(); 36 34 } else if(tokens.at(0) == "xfade") { 37 status->xfade = tokens.at(1).toInt();35 destStatus.xfade = tokens.at(1).toInt(); 38 36 } else if(tokens.at(0) == "state") { 39 37 if(tokens.at(1).contains("play")) { 40 status->state = MPDStatus::State_Playing;38 destStatus.state = MPDStatus::State_Playing; 41 39 } else if(tokens.at(1).contains("stop")) { 42 status->state = MPDStatus::State_Stopped;40 destStatus.state = MPDStatus::State_Stopped; 43 41 } else { 44 status->state = MPDStatus::State_Paused;42 destStatus.state = MPDStatus::State_Paused; 45 43 } 46 44 } else if(tokens.at(0) == "song") { 47 status->song = tokens.at(1).toInt();45 destStatus.song = tokens.at(1).toInt(); 48 46 } else if(tokens.at(0) == "songid") { 49 status->song_id = tokens.at(1).toInt();47 destStatus.song_id = tokens.at(1).toInt(); 50 48 } else if(tokens.at(0) == "time") { 51 status->time_elapsed = tokens.at(1).toInt();52 status->time_total = tokens.at(2).toInt();49 destStatus.time_elapsed = tokens.at(1).toInt(); 50 destStatus.time_total = tokens.at(2).toInt(); 53 51 } else if(tokens.at(0) == "bitrate") { 54 status->bitrate = tokens.at(1).toUInt();52 destStatus.bitrate = tokens.at(1).toUInt(); 55 53 } else if(tokens.at(0) == "audio") { 56 54 } else if(tokens.at(0) == "updating_db") { 57 status->updating_db = tokens.at(1).toInt();55 destStatus.updating_db = tokens.at(1).toInt(); 58 56 } else if(tokens.at(0) == "error") { 59 status->error = tokens.at(1);57 destStatus.error = tokens.at(1); 60 58 } 61 59 } 62 63 return status;64 60 } 65 61 … … 77 73 song->file = tokens.at(1); 78 74 } else if(tokens.at(0) == "Time") { 75 song->time = tokens.at(1).toUInt(); 79 76 } else if(tokens.at(0) == "Album") { 80 song->album = tokens.at(1); 77 for(qint32 j = 1; j < tokens.size(); j++) { 78 if(j != 1 && j != tokens.size() - 1) 79 song->album += ":"; 80 song->album += tokens.at(j); 81 } 81 82 } else if(tokens.at(0) == "Artist") { 82 song->artist = tokens.at(1); 83 for(qint32 j = 1; j < tokens.size(); j++) { 84 if(j != 1 && j != tokens.size() - 1) 85 song->artist += ":"; 86 song->artist += tokens.at(j); 87 } 83 88 } else if(tokens.at(0) == "Title") { 84 song->title = tokens.at(1); 89 for(qint32 j = 1; j < tokens.size(); j++) { 90 if(j != 1 && j != tokens.size() - 1) 91 song->title += ":"; 92 song->title += tokens.at(j); 93 } 85 94 } else if(tokens.at(0) == "Track") { 95 song->track = tokens.at(1).toInt(); 86 96 } else if(tokens.at(0) == "Pos") { 87 97 } else if(tokens.at(0) == "Id") { … … 111 121 return songs; 112 122 } 123 124 QList<MusicLibraryItem *> * MPDParseUtils::parseLibraryItems(const QByteArray * const data) 125 { 126 QList<MusicLibraryItem *> *artists = new QList<MusicLibraryItem *>; 127 QByteArray currentItem; 128 MusicLibraryItem *artistItem, *albumItem, *songItem; 129 Song *currentSong; 130 bool found = false; 131 132 QList<QByteArray> lines = data->split('\n'); 133 134 for(qint32 i = 0; i < lines.size(); i++) { 135 currentItem += lines.at(i); 136 currentItem += "\n"; 137 if(i == lines.size() - 1 || lines.at(i + 1).startsWith("file:")) { 138 currentSong = parseSong(¤tItem); 139 currentItem.clear(); 140 141 if(currentSong->isEmpty()) { 142 delete currentSong; 143 continue; 144 } 145 146 currentSong->fillEmptyFields(); 147 148 // Check if artist already exists 149 for(qint32 i = 0; i < artists->size(); i++) { 150 if(artists->at(i)->data(0) == currentSong->artist) { 151 artistItem = artists->at(i); 152 found = true; 153 } 154 } 155 156 if(!found) { 157 artistItem = new MusicLibraryItem(currentSong->artist, MusicLibraryItem::Type_Artist); 158 artists->append(artistItem); 159 } 160 161 found = false; 162 163 // Check if album already exists 164 for(qint32 i = 0; i < artistItem->childCount(); i++) { 165 if(artistItem->child(i)->data(0) == currentSong->album) { 166 albumItem = artistItem->child(i); 167 found = true; 168 } 169 } 170 171 if(!found) { 172 albumItem = new MusicLibraryItem(currentSong->album, MusicLibraryItem::Type_Album, artistItem); 173 artistItem->appendChild(albumItem); 174 } 175 176 found = false; 177 178 // Add song to album (possibly in track order) 179 songItem = new MusicLibraryItem(currentSong->title, MusicLibraryItem::Type_Song, albumItem); 180 songItem->setFile(currentSong->file); 181 albumItem->appendChild(songItem); 182 183 delete currentSong; 184 } 185 } 186 187 return artists; 188 }
Note: See TracChangeset
for help on using the changeset viewer.
