summaryrefslogtreecommitdiff
path: root/noncore/graphics/opie-eye/impl/dir/dir_lister.cpp
Side-by-side diff
Diffstat (limited to 'noncore/graphics/opie-eye/impl/dir/dir_lister.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/impl/dir/dir_lister.cpp53
1 files changed, 36 insertions, 17 deletions
diff --git a/noncore/graphics/opie-eye/impl/dir/dir_lister.cpp b/noncore/graphics/opie-eye/impl/dir/dir_lister.cpp
index d8b332a..ff33cf2 100644
--- a/noncore/graphics/opie-eye/impl/dir/dir_lister.cpp
+++ b/noncore/graphics/opie-eye/impl/dir/dir_lister.cpp
@@ -7,72 +7,91 @@
#include <lib/slavemaster.h>
/* OPIE */
#include <opie2/odebug.h>
#include <qpe/config.h>
#include <qpe/qpeapplication.h>
using namespace Opie::Core;
/* QT */
#include <qdir.h>
#include <qfileinfo.h>
-Dir_DirLister::Dir_DirLister( bool list )
+Dir_DirLister::Dir_DirLister( bool list,bool rec,int recdepth )
: PDirLister( "dir_dir_lister" )
{
m_allFiles = list;
+ m_recursive = rec;
+ m_recDepth = recdepth;
+ if (m_recDepth<1) m_recDepth = 1;
+ if (m_recDepth>10) m_recDepth = 10;
owarn << "All Files " << m_allFiles << "" << oendl;
SlaveHelper::slaveConnectSignals( this );
+ m_Filter = (m_allFiles?"*":"*.jpg;*.jpeg;*.JPG;*.PNG;*.GIF;*.BMP;*.png;*.bmp;*.gif");
}
QString Dir_DirLister::defaultPath()const {
return QPEApplication::documentDir();
}
QString Dir_DirLister::setStartPath( const QString& path ) {
m_currentDir.cd( path );
if (!m_currentDir.exists() )
m_currentDir.cd(defaultPath());
return m_currentDir.absPath();
}
QString Dir_DirLister::currentPath()const {
return m_currentDir.absPath();
}
QStringList Dir_DirLister::folders()const {
return m_currentDir.entryList( QDir::Dirs );
}
-QStringList Dir_DirLister::files()const {
- if ( m_allFiles )
- return m_currentDir.entryList( QDir::Files );
- else {
- QStringList out;
- QStringList list = m_currentDir.entryList( QDir::Files | QDir::Readable );
- for (QStringList::Iterator it = list.begin(); it != list.end();++it ) {
- QFileInfo inf( *it );
- QString ext = inf.extension(false).lower();
- if( ext == QString::fromLatin1("jpg") ||
- ext == QString::fromLatin1("jpeg" ) ||
- ext == QString::fromLatin1("png" ) ||
- ext == QString::fromLatin1("bmp" ) ||
- ext == QString::fromLatin1("gif" ) )
- out.append( *it );
+QStringList Dir_DirLister::recFiles(const QString&aPath,int currentDepth)const
+{
+ QStringList all;
+ if (currentDepth>m_recDepth) return all;
+
+ QString subPath;
+ subPath = aPath;
+ if (subPath.length()==0) {
+ subPath=".";
+ }
+ QDir checkDir(currentPath()+"/"+aPath);
+
+ QStringList p = checkDir.entryList( QDir::Dirs );
+ all+=checkDir.entryList(m_Filter,QDir::Files|QDir::Readable);
+ QStringList tmp;
+ for (unsigned i = 0; i < p.count();++i) {
+ if (p[i]=="." || p[i]=="..") continue;
+ tmp =recFiles(subPath+"/"+p[i],currentDepth+1);
+ for (unsigned j = 0; j < tmp.count();++j) {
+ all.append(p[i]+"/"+tmp[j]);
}
- return out;
}
+ return all;
+}
+
+QStringList Dir_DirLister::files()const
+{
+ if (m_recursive) {
+ odebug << "Startpfad: "<<m_currentDir.absPath()<<oendl;
+ return recFiles("",0);
+ }
+ return m_currentDir.entryList(m_Filter,QDir::Files|QDir::Readable);
}
void Dir_DirLister::deleteImage( const QString& fl) {
QFile::remove( fl );
}
void Dir_DirLister::thumbNail( const QString& str, int w, int h) {
SlaveMaster::self()->thumbNail( str, w, h );
}
QImage Dir_DirLister::image( const QString& str, Factor f, int m) {
return SlaveMaster::self()->image( str, f, m );