#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) , 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; 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 MediaLibrary::getMediaInformation(QDir dir) { QList 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; }