blob: 4f1ad84e719f4b0369ed76a4e4e0c4ce768c9b0c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#include <QSettings>
#include <QStandardItem>
#include <QDir>
#include <QMimeDatabase>
#include <taglib/fileref.h>
#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();
}
|