diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-12-13 18:14:00 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-12-13 18:14:00 +0000 |
| commit | 43ee25ac78884c3c579a555fee589f3677ea7f21 (patch) | |
| tree | 313df92c490392b1e501b2cc27bc220335f938fc /src/qmmpui/fileloader.cpp | |
| parent | 2d3e4370a6b7729a30b833aa72c79b6a9d2afdb6 (diff) | |
| download | qmmp-43ee25ac78884c3c579a555fee589f3677ea7f21.tar.gz qmmp-43ee25ac78884c3c579a555fee589f3677ea7f21.tar.bz2 qmmp-43ee25ac78884c3c579a555fee589f3677ea7f21.zip | |
moved playlist model to libqmmpui
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@679 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/fileloader.cpp')
| -rw-r--r-- | src/qmmpui/fileloader.cpp | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp new file mode 100644 index 000000000..ce5ccb56c --- /dev/null +++ b/src/qmmpui/fileloader.cpp @@ -0,0 +1,116 @@ +/*************************************************************************** + * Copyright (C) 2006 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include <qmmp/decoder.h> + +#include "fileloader.h" +#include "playlistitem.h" + +FileLoader::FileLoader(QObject *parent) + : QThread(parent),m_files_to_load(),m_directory() +{ + m_filters = Decoder::nameFilters(); + m_finished = false; +} + + +FileLoader::~FileLoader() +{ + qWarning("FileLoader::~FileLoader()"); +} + + +void FileLoader::addFiles(const QStringList &files) +{ + if (files.isEmpty ()) + return; + + foreach(QString s, files) + { + /*if (s.startsWith("http://") || Decoder::supports(s)) + {*/ + //emit newPlayListItem(new PlayListItem(s)); + QList <FileInfo *> playList = Decoder::createPlayList(s); + foreach(FileInfo *info, playList) + emit newPlayListItem(new PlayListItem(info)); + //} + if (m_finished) return; + } +} + + +void FileLoader::addDirectory(const QString& s) +{ + QList <FileInfo *> playList; + QDir dir(s); + dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); + dir.setSorting(QDir::Name); + QFileInfoList l = dir.entryInfoList(m_filters); + for (int i = 0; i < l.size(); ++i) + { + QFileInfo fileInfo = l.at(i); + QString suff = fileInfo.completeSuffix(); + list << fileInfo; + + /*if (Decoder::supports(fileInfo.absoluteFilePath ())) + {*/ + playList = Decoder::createPlayList(fileInfo.absoluteFilePath ()); + foreach(FileInfo *info, playList) + emit newPlayListItem(new PlayListItem(info)); + //emit newPlayListItem(new PlayListItem(fileInfo.absoluteFilePath ())); + //} + if (m_finished) return; + } + dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); + dir.setSorting(QDir::Name); + l.clear(); + l = dir.entryInfoList(); + if (l.size() > 0) + for (int i = 0; i < l.size(); ++i) + { + QFileInfo fileInfo = l.at(i); + addDirectory(fileInfo.absoluteFilePath ()); + if (m_finished) return; + } +} + +void FileLoader::run() +{ + if (!m_files_to_load.isEmpty()) + addFiles(m_files_to_load); + else if (!m_directory.isEmpty()) + addDirectory(m_directory); +} + +void FileLoader::setFilesToLoad(const QStringList & l) +{ + m_files_to_load = l; + m_directory = QString(); +} + +void FileLoader::setDirectoryToLoad(const QString & d) +{ + m_directory = d; + m_files_to_load.clear(); +} + +void FileLoader::finish() +{ + m_finished = true; +} |
