#include <id3v2tag.h>
#include <mpeg/id3v2/frames/attachedpictureframe.h>
+using namespace SomePlayer::DataObjects;
+
CoverFinder::CoverFinder(QObject *parent) :
QObject(parent)
{
}
}
}
- emit found(_defaultCover);
return false;
}
return false;
}
-void CoverFinder::find(QFileInfo filePath) {
- QtConcurrent::run(this, &CoverFinder::_async_find, filePath);
+void CoverFinder::find(Track track) {
+ QFileInfo filePath(track.source());
+ QtConcurrent::run(this, &CoverFinder::_async_find, filePath, track.metadata().artist(), track.metadata().album());
}
-bool CoverFinder::_async_find(QFileInfo filePath) {
- if (!_find(filePath.absolutePath()))
- return _extract(filePath.absoluteFilePath());
+bool CoverFinder::_async_find(QFileInfo filePath, QString artist, QString album) {
+ if (!_find(filePath.absolutePath()) && !_tfind(artist, album) && !_extract(filePath.absoluteFilePath())) {
+ emit found(_defaultCover);
+ return false;
+ }
return true;
}
+
+bool CoverFinder::_tfind(QString artist, QString album) {
+ QString aname = artist.toLower();
+ aname.replace("/", "");
+ QString aaname = aname+" - "+album;
+ aaname.replace("/", "");
+ QString fname1 = QDir::homePath()+"/.covers/"+aaname+".jpg";
+ QString fname2 = QDir::homePath()+"/.covers/"+aname+".jpg";
+ if (QFile::exists(fname1)) {
+ emit found(QImage(fname1));
+ return true;
+ } else if (QFile::exists(fname2)) {
+ emit found(QImage(fname2));
+ return true;
+ }
+ return false;
+}
#include <QImage>
#include <QFileInfo>
#include "someplayer.h"
+#include "track.h"
+
+using SomePlayer::DataObjects::Track;
class CoverFinder : public QObject
{
void found(QImage);
public slots:
- void find(QFileInfo filePath);
+ void find(Track track);
QImage &defaultCover();
private:
- bool _async_find(QFileInfo filePath);
+ bool _async_find(QFileInfo filePath, QString artist, QString album);
bool _find(QString path);
bool _extract(QString file);
+ bool _tfind(QString artist, QString album);
private:
QImage _defaultCover;
_cover->setMinimumSize(300, 300);
_cover->setMaximumSize(300, 300);
_cover->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- _cover->setScaledContents(true);
+// _cover->setScaledContents(true);
_cover->setPixmap(QPixmap::fromImage(_coverfinder->defaultCover()));
connect(ui->libraryButton, SIGNAL(clicked()), this, SLOT(_library()));
ui->seekSlider->setMinimum(0);
ui->seekSlider->setMaximum(track.metadata().length());
_tick(0, track.metadata().length());
- _coverfinder->find(QFileInfo(track.source()));
+ _coverfinder->find(track);
}
void PlayerForm::_tick(int done, int all) {
}
void PlayerForm::_display_cover(QImage image) {
- QPixmap p = QPixmap::fromImage(image);
+ QPixmap p = QPixmap::fromImage(image).scaled(_cover->width(), _cover->height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
_cover->setPixmap(p);
}