101 lines
2.8 KiB
C++
101 lines
2.8 KiB
C++
#include "medialibrary.h"
|
|
|
|
|
|
MediaLibrary *MediaLibrary::_instance = 0;
|
|
|
|
MediaLibrary *MediaLibrary::getInstance() {
|
|
|
|
if (_instance == 0) {
|
|
_instance = new MediaLibrary();
|
|
Q_CHECK_PTR(_instance);
|
|
}
|
|
return _instance;
|
|
}
|
|
|
|
MediaLibrary::MediaLibrary(QObject *parent) :
|
|
QObject(parent)
|
|
// ,m_media(new QList<MediaFolder>)
|
|
, m_pathmedia()
|
|
{
|
|
// initMediaLibrary();
|
|
qDebug("Init MediaLibrary");
|
|
}
|
|
|
|
/** Initializes the media library and the media information
|
|
* from the path to media in m_pathmedia
|
|
*/
|
|
|
|
void MediaLibrary::initMediaLibrary() {
|
|
QDir dir;
|
|
if (!dir.cd(m_pathmedia)) {
|
|
qWarning("initMediaLibrary| Can not cd to the path: ");
|
|
qWarning(m_pathmedia.toAscii().constData());
|
|
return;
|
|
}
|
|
m_media = new QList<MediaFolder>;
|
|
dir.setFilter(QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot);
|
|
QFileInfoList filelist = dir.entryInfoList();
|
|
dir.setFilter(QDir::Files);
|
|
QFileInfo fileInfo;
|
|
struct MediaFolder mediai;
|
|
for (int i = 0; i < filelist.size(); ++i) {
|
|
fileInfo = filelist.at(i);
|
|
QString name = fileInfo.absoluteFilePath();
|
|
dir.cd(fileInfo.baseName());
|
|
mediai.m_Id = i;
|
|
mediai.m_Name = name;
|
|
mediai.m_ElementCount = dir.count();
|
|
mediai.m_MediaInformation = getMediaInformation(dir);
|
|
dir.cdUp();
|
|
m_media->append(mediai);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This set every media file included in one library/folder
|
|
*/
|
|
QList<MediaFile> MediaLibrary::getMediaInformation(QDir dir)
|
|
{
|
|
QList<MediaFile> mediaList;
|
|
MediaFile mediainf;
|
|
dir.setFilter(QDir::Files);
|
|
QFileInfoList filelist = dir.entryInfoList();
|
|
QFileInfo fileInfo;
|
|
for (int i = 0; i < filelist.size(); ++i) {
|
|
fileInfo = filelist.at(i);
|
|
// Update the data base with the new file
|
|
mediainf.Number = i;
|
|
mediainf.MediaName = fileInfo.absoluteFilePath();
|
|
mediainf.MediaLength = 1000; // ¿?¿?¿?¿?
|
|
mediaList.append(mediainf);
|
|
}
|
|
return mediaList;
|
|
}
|
|
|
|
/** Selects one media path from the library
|
|
*
|
|
*/
|
|
|
|
QString MediaLibrary::requestNewFile(int folder, int file){
|
|
QString newfile;
|
|
if (m_pathmedia.isNull()) {
|
|
qWarning("Path not set yet");
|
|
return newfile;
|
|
}
|
|
if (m_media == NULL) {
|
|
qWarning("media not setup");
|
|
return newfile;
|
|
}
|
|
if (folder < m_media->size()) {
|
|
if (file < m_media->at(folder).m_MediaInformation.size()) {
|
|
newfile = m_media->at(folder).m_MediaInformation.at(file).MediaName;
|
|
} else {
|
|
qDebug("MediaLibrary::requestNewFile(): Requested file is greater than files in library");
|
|
}
|
|
} else {
|
|
qDebug("MediaLibrary::requestNewFile(): Requested folder is greater than media libraries");
|
|
}
|
|
return newfile;
|
|
}
|
|
|
|
|