#include #include #include #include #include #include "collectionfoldersview.h" CollectionFoldersView::CollectionFoldersView(QWidget *parent) : CollectionWidget(parent){ readSettings(); } void CollectionFoldersView::populate(){ model()->clear(); model()->setHorizontalHeaderLabels(headers()); QStandardItem *root = model()->invisibleRootItem(); QDir d(mCurrentFolder); QMimeDatabase db; QIcon songIcon(":/song.png"); QIcon otherIcon(":/belly_right_and_clear.png"); QIcon dirIcon(":/folder.png"); QFileInfoList fl = d.entryInfoList(QStringList() << "*", QDir::Files | QDir::Dirs | QDir::NoDot, QDir::Name | QDir::DirsFirst); for(const QFileInfo &fi : fl){ QStandardItem *cur = new QStandardItem; cur->setEditable(false); cur->setText(fi.fileName()); if(fi.isDir()){ cur->setIcon(dirIcon); }else if(fi.isFile()){ QMimeType mt = db.mimeTypeForFile(fi); if(mt.name().startsWith("audio")){ cur->setIcon(songIcon); cur->setData(Song, TypeRole); cur->setData(-1, IdRole); TagLib::FileRef file(fi.absoluteFilePath().toUtf8()); if(!file.isNull()){ QString artist = QString::fromStdWString(file.tag()->artist().toWString()); cur->setData(artist.toLower(), ArtistRole); QString album = QString::fromStdWString(file.tag()->album().toWString()); cur->setData(album.toLower(), AlbumRole); QString genre = QString::fromStdWString(file.tag()->genre().toWString()); cur->setData(genre.toLower(), GenreRole); QString title = QString::fromStdWString(file.tag()->title().toWString()); cur->setData(title.toLower(), TitleRole); } }else{ cur->setIcon(otherIcon); } } cur->setData(fi.absoluteFilePath(), FullPathRole); root->appendRow(cur); } } void CollectionFoldersView::readSettings(){ QSettings s; mCurrentFolder = s.value("folderdir", QDir::homePath()).toString(); }