aboutsummaryrefslogtreecommitdiff
path: root/src/fileloader.cpp
diff options
context:
space:
mode:
authorvovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38>2007-06-23 16:48:01 +0000
committervovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38>2007-06-23 16:48:01 +0000
commit2d622fd9bcb8da9dd3f3206e296cd6a701fc9d12 (patch)
treef92135e6cb831e46336dfd4ade47e03ef3a19ac5 /src/fileloader.cpp
parent4b6a6720805c585c89f44fd276b3ace8670514d9 (diff)
downloadqmmp-2d622fd9bcb8da9dd3f3206e296cd6a701fc9d12.tar.gz
qmmp-2d622fd9bcb8da9dd3f3206e296cd6a701fc9d12.tar.bz2
qmmp-2d622fd9bcb8da9dd3f3206e296cd6a701fc9d12.zip
moved into qmmp dir
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@12 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/fileloader.cpp')
-rw-r--r--src/fileloader.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/fileloader.cpp b/src/fileloader.cpp
new file mode 100644
index 000000000..fda8efdc1
--- /dev/null
+++ b/src/fileloader.cpp
@@ -0,0 +1,108 @@
+/***************************************************************************
+ * 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 <decoder.h>
+
+#include "fileloader.h"
+#include "mediafile.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 (Decoder::supports(s))
+ emit newMediaFile(new MediaFile(s));
+ if(m_finished) return;
+ }
+}
+
+
+void FileLoader::addDirectory(const QString& s)
+{
+ 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 ()))
+ emit newMediaFile(new MediaFile(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;
+}