aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/fileloader.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-12-13 18:14:00 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-12-13 18:14:00 +0000
commit43ee25ac78884c3c579a555fee589f3677ea7f21 (patch)
tree313df92c490392b1e501b2cc27bc220335f938fc /src/qmmpui/fileloader.cpp
parent2d3e4370a6b7729a30b833aa72c79b6a9d2afdb6 (diff)
downloadqmmp-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.cpp116
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;
+}