diff --git a/dir_iterator/diriterator.cpp b/dir_iterator/diriterator.cpp index 2931929..76e8e34 100644 --- a/dir_iterator/diriterator.cpp +++ b/dir_iterator/diriterator.cpp @@ -20,15 +20,16 @@ #include -DirIterator::DirIterator (const QDir & dir) +DirIterator::DirIterator (const QDir & dir) : DirIteratorBase () { m_dir = dir; finish_init (); } -DirIterator::DirIterator (const QString & path) +DirIterator::DirIterator (const QString & path) : DirIteratorBase () { m_dir = QDir (path); + finish_init (); } DirIterator::~DirIterator () @@ -105,5 +106,3 @@ DirIterator::entry () return m_device; } - -#include "diriterator.moc" diff --git a/dir_iterator/diriterator.h b/dir_iterator/diriterator.h index 740dc75..ddca20b 100644 --- a/dir_iterator/diriterator.h +++ b/dir_iterator/diriterator.h @@ -24,10 +24,8 @@ #include -class DirIterator : public QObject, public virtual DirIteratorBase +class DirIterator : public DirIteratorBase { - Q_OBJECT - public: DirIterator (const QDir & dir); DirIterator (const QString & path); diff --git a/dir_iterator/diriteratorbase.cpp b/dir_iterator/diriteratorbase.cpp index 4d8114b..eb4c064 100644 --- a/dir_iterator/diriteratorbase.cpp +++ b/dir_iterator/diriteratorbase.cpp @@ -15,7 +15,10 @@ */ #include "diriteratorbase.h" +#include "diriterator.h" #include +#include "QFile" + #include @@ -35,3 +38,14 @@ DirIteratorBase::pixmapEntry () return p; } +DirIteratorBase * +DirIteratorBase::open(const QString &path) +{ + QDir dir(path); + if (!dir.exists ()) { + return 0; + } + + return new DirIterator (dir); +} + diff --git a/dir_iterator/diriteratorbase.h b/dir_iterator/diriteratorbase.h index 34c20da..bf06c33 100644 --- a/dir_iterator/diriteratorbase.h +++ b/dir_iterator/diriteratorbase.h @@ -15,8 +15,9 @@ */ #ifndef __DIRITERATORBASE_H__ -#define __DIRITERATIRBASE_H__ +#define __DIRITERATORBASE_H__ +#include #include #include #include @@ -33,11 +34,12 @@ public: virtual QPointer entry () = 0; + static DirIteratorBase *open(const QString &path); + // Included because I'm lazy, returns a QPixmap for the current entry. // If no pixmap can be createt for the current entry, an empty pixmap is // returned QPixmap pixmapEntry (); - }; #endif diff --git a/src/skin/skin.cpp b/src/skin/skin.cpp index e9c071c..67a8622 100644 --- a/src/skin/skin.cpp +++ b/src/skin/skin.cpp @@ -15,7 +15,7 @@ #include "skin.h" -#include "diriterator.h" +#include "diriteratorbase.h" #include #include @@ -676,9 +676,10 @@ Skin::handle_pledit_txt (QIODevice *device) bool Skin::setSkin (const QString& path) { - QDir dir(path); - if (!dir.exists ()) + DirIteratorBase *iter = DirIteratorBase::open(path); + if (iter == 0) { return false; + } m_path = path; @@ -699,8 +700,6 @@ Skin::setSkin (const QString& path) QPixmap p_numbers; QPixmap p_volume; - DirIterator *iter = new DirIterator(dir); - while (iter->hasNext ()) { QString entry = iter->next ().toLower (); if (entry.endsWith (".txt")) {