QList<FooTrack> FooPlaylistPlsFormat::convert(QString data, QString path) const { QTextStream stream(&data, QIODevice::ReadOnly); QString line; QList<FooTrack> tracksList; while (!stream.atEnd()) { line = stream.readLine(); if (!line.isEmpty()) { QStringList lineList = line.split('='); QString filePath; if(lineList.at(0).toUpper().startsWith("FILE")) { filePath = lineList.at(1); } QFileInfo trackInfo(line); QFileInfo playlistInfo(path); if (trackInfo.isRelative()) { filePath = playlistInfo.absoluteDir().absolutePath() + trackInfo.filePath(); } FooTrack track(filePath); line = stream.readLine(); lineList = line.split('='); QString lenght; QString title; if(lineList.at(0).toUpper().startsWith("TITLE")) { title = lineList.at(1); } line = stream.readLine(); lineList = line.split('='); if(lineList.at(0).toUpper().startsWith("LENGTH")) { lenght = lineList.at(1); } track.setLenght(lenght.toInt()); track.setTitle(title); } } return tracksList; }
int handleCurrentSong(FILE * fp, unsigned int * permission, int argArrayLength, char ** argArray) { int song = getPlaylistCurrentSong(); if(song >= 0) { return playlistInfo(fp, song); } else return 0; }
void PlaylistsModel::fetchMore(const QModelIndex &index) { if (!index.isValid()) { return; } Item *item=static_cast<Item *>(index.internalPointer()); if (item->isPlaylist() && !static_cast<PlaylistItem *>(item)->loaded) { static_cast<PlaylistItem *>(item)->loaded=true; emit playlistInfo(static_cast<PlaylistItem *>(item)->name); } }
QList<Fooaudio::FooTrack> FooaudioPlaylistM3uFormat::convert(QString data, QString path) const { QTextStream stream(&data, QIODevice::ReadOnly); QString line; QList<Fooaudio::FooTrack> tracksList; while (!stream.atEnd()) { line = stream.readLine(); if (!line.isEmpty() && line.toUpper().startsWith("#EXTINF:")) { line.remove(0,line.indexOf(':')+1); QStringList lineList = line.split(","); QString lenght = lineList.at(0); QString title = lineList.at(1); line = stream.readLine(); QFileInfo trackInfo(line); QFileInfo playlistInfo(path); if (trackInfo.isRelative()) { line = playlistInfo.absoluteDir().absolutePath() + trackInfo.filePath(); } Fooaudio::FooTrack track(line); track.setLenght(lenght.toInt()); track.setTitle(title); } } return tracksList; }
QVariant PlaylistsModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) { switch (role) { case Cantata::Role_TitleText: return title(); case Cantata::Role_SubText: return descr(); case Qt::DecorationRole: return icon(); } return QVariant(); } #ifndef ENABLE_UBUNTU if (Qt::TextAlignmentRole==role) { return alignments[index.column()]; } #endif Item *item=static_cast<Item *>(index.internalPointer()); if (item->isPlaylist()) { PlaylistItem *pl=static_cast<PlaylistItem *>(item); switch(role) { #ifdef ENABLE_UBUNTU case Cantata::Role_Image: return QString(); #endif case Cantata::Role_ListImage: return false; case Cantata::Role_IsCollection: return true; case Cantata::Role_CollectionId: return pl->key; case Cantata::Role_Key: return 0; case Cantata::Role_SongWithRating: case Cantata::Role_Song: { QVariant var; var.setValue<Song>(Song()); return var; } case Cantata::Role_AlbumDuration: return pl->totalTime(); case Cantata::Role_SongCount: if (!pl->loaded) { pl->loaded=true; emit playlistInfo(pl->name); } return pl->songs.count(); case Cantata::Role_CurrentStatus: case Cantata::Role_Status: return (int)GroupedView::State_Default; case Qt::FontRole: if (multiCol) { QFont font; font.setBold(true); return font; } return QVariant(); case Cantata::Role_TitleText: case Cantata::Role_MainText: case Qt::DisplayRole: if (multiCol) { switch (index.column()) { case COL_TITLE: return pl->visibleName(); case COL_ARTIST: case COL_ALBUM: return QVariant(); case COL_LENGTH: if (!pl->loaded) { pl->loaded=true; emit playlistInfo(pl->name); } return pl->loaded && !pl->isSmartPlaylist ? Utils::formatTime(pl->totalTime()) : QVariant(); case COL_YEAR: case COL_GENRE: return QVariant(); default: break; } } return pl->visibleName(); case Qt::ToolTipRole: if (!Settings::self()->infoTooltips()) { return QVariant(); } if (!pl->loaded) { pl->loaded=true; emit playlistInfo(pl->name); } return 0==pl->songs.count() ? pl->visibleName() : pl->visibleName()+"\n"+Plurals::tracksWithDuration(pl->songs.count(), Utils::formatTime(pl->totalTime())); #ifndef ENABLE_UBUNTU case Qt::DecorationRole: return multiCol ? QVariant() : (pl->isSmartPlaylist ? Icons::self()->dynamicRuleIcon : Icons::self()->playlistListIcon); #endif case Cantata::Role_SubText: if (!pl->loaded) { pl->loaded=true; emit playlistInfo(pl->name); } if (pl->isSmartPlaylist) { return i18n("Smart Playlist"); } return Plurals::tracksWithDuration(pl->songs.count(), Utils::formatTime(pl->totalTime())); case Cantata::Role_TitleActions: return true; default: return ActionModel::data(index, role); } } else { SongItem *s=static_cast<SongItem *>(item); switch (role) { #ifdef ENABLE_UBUNTU case Cantata::Role_Image: return QString(); #endif case Cantata::Role_ListImage: return true; case Cantata::Role_IsCollection: return false; case Cantata::Role_CollectionId: return s->parent->key; case Cantata::Role_Key: return s->key; case Cantata::Role_CoverSong: case Cantata::Role_SongWithRating: case Cantata::Role_Song: { QVariant var; var.setValue<Song>(*s); return var; } case Cantata::Role_AlbumDuration: { quint32 d=s->time; for (int i=index.row()+1; i<s->parent->songs.count(); ++i) { const SongItem *song = s->parent->songs.at(i); if (song->key!=s->key) { break; } d+=song->time; } if (index.row()>1) { for (int i=index.row()-1; i<=0; ++i) { const SongItem *song = s->parent->songs.at(i); if (song->key!=s->key) { break; } d+=song->time; } } return d; } case Cantata::Role_SongCount:{ quint32 count=1; for (int i=index.row()+1; i<s->parent->songs.count(); ++i) { const SongItem *song = s->parent->songs.at(i); if (song->key!=s->key) { break; } count++; } if (index.row()>1) { for (int i=index.row()-1; i<=0; ++i) { const SongItem *song = s->parent->songs.at(i); if (song->key!=s->key) { break; } count++; } } return count; } case Cantata::Role_CurrentStatus: case Cantata::Role_Status: return (int)GroupedView::State_Default; case Qt::DisplayRole: if (multiCol) { switch (index.column()) { case COL_TITLE: return s->trackAndTitleStr(false); case COL_ARTIST: return s->artist.isEmpty() ? Song::unknown() : s->artist; case COL_ALBUM: if (s->isStream() && s->album.isEmpty()) { QString n=s->name(); if (!n.isEmpty()) { return n; } } return s->album; case COL_LENGTH: return Utils::formatTime(s->time); case COL_YEAR: if (s->year <= 0) { return QVariant(); } return s->year; case COL_GENRE: return s->displayGenre(); case COL_COMPOSER: return s->composer(); case COL_PERFORMER: return s->performer(); default: break; } } return s->entryName(); case Qt::ToolTipRole: if (!Settings::self()->infoTooltips()) { return QVariant(); } return s->toolTip(); #ifndef ENABLE_UBUNTU case Qt::DecorationRole: return multiCol ? QVariant() : (s->title.isEmpty() ? Icons::self()->streamIcon : Icons::self()->audioListIcon); #endif case Cantata::Role_MainText: return s->title.isEmpty() ? s->file : s->title; case Cantata::Role_SubText: return s->artist+QLatin1String(" - ")+s->displayAlbum()+QLatin1String(" - ")+Utils::formatTime(s->time); default: return ActionModel::data(index, role); } } return QVariant(); }