move the subfolder list function to FileUtils

This commit is contained in:
Duncan Mac-Vicar P 2011-03-20 22:43:03 +01:00
parent 89361db55d
commit 25685de4fd
3 changed files with 42 additions and 38 deletions

View file

@ -1,3 +1,32 @@
#include "mirall/fileutils.h"
#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QFileInfoList>
namespace Mirall
{
QStringList FileUtils::subFoldersList(QString folder,
SubFolderListOptions options)
{
QDir dir(folder);
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
QFileInfoList list = dir.entryInfoList();
QStringList dirList;
for (int i = 0; i < list.size(); ++i) {
QFileInfo fileInfo = list.at(i);
dirList << fileInfo.absoluteFilePath();
if (options & SubFolderRecursive )
dirList << subFoldersList(fileInfo.absoluteFilePath(), options);
}
return dirList;
}
/*
Copyright (c) 2009 John Schember <john@nachtimwald.com>
@ -19,17 +48,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE
*/
#include "mirall/fileutils.h"
#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QFileInfoList>
namespace Mirall
{
bool FileUtils::removeDir(const QString &path)
{
bool result = true;

View file

@ -2,7 +2,7 @@
#ifndef MIRALL_FILEUTILS_H
#define MIRALL_FILEUTILS_H
#include <QString>
#include <QStringList>
namespace Mirall
{
@ -10,9 +10,19 @@ namespace Mirall
class FileUtils
{
public:
enum SubFolderListOption {
SubFolderNoOptions = 0x0,
SubFolderRecursive = 0x1,
};
Q_DECLARE_FLAGS(SubFolderListOptions, SubFolderListOption)
static QStringList subFoldersList(QString folder,
SubFolderListOptions options = SubFolderNoOptions );
static bool removeDir(const QString &path);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(FileUtils::SubFolderListOptions)
}
#endif

View file

@ -12,6 +12,7 @@
#include "mirall/inotify.h"
#include "mirall/folderwatcher.h"
#include "mirall/fileutils.h"
static const uint32_t standard_event_mask =
IN_CLOSE_WRITE | IN_ATTRIB | IN_MOVE | IN_CREATE | IN_DELETE | IN_DELETE_SELF | IN_MOVE_SELF | IN_UNMOUNT | IN_ONLYDIR | IN_DONT_FOLLOW;
@ -22,31 +23,6 @@ static const uint32_t standard_event_mask =
namespace Mirall {
enum SubFolderListOption {
SubFolderNoOptions = 0x0,
SubFolderRecursive = 0x1,
};
Q_DECLARE_FLAGS(SubFolderListOptions, SubFolderListOption)
Q_DECLARE_OPERATORS_FOR_FLAGS(SubFolderListOptions)
// Forgive me using a bool as a flag
static QStringList subFoldersList(QString folder,
SubFolderListOptions options = SubFolderNoOptions )
{
QDir dir(folder);
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
QFileInfoList list = dir.entryInfoList();
QStringList dirList;
for (int i = 0; i < list.size(); ++i) {
QFileInfo fileInfo = list.at(i);
dirList << fileInfo.absoluteFilePath();
if (options & SubFolderRecursive )
dirList << subFoldersList(fileInfo.absoluteFilePath(), options);
}
return dirList;
}
FolderWatcher::FolderWatcher(const QString &root, QObject *parent)
: QObject(parent),
@ -80,7 +56,7 @@ void FolderWatcher::slotAddFolderRecursive(const QString &path)
_inotify->addPath(path);
QStringList watchedFolders(_inotify->directories());
//qDebug() << "currently watching " << watchedFolders;
QStringListIterator subfoldersIt(subFoldersList(path, SubFolderRecursive));
QStringListIterator subfoldersIt(FileUtils::subFoldersList(path, FileUtils::SubFolderRecursive));
while (subfoldersIt.hasNext()) {
QDir folder (subfoldersIt.next());
if (folder.exists() && !watchedFolders.contains(folder.path())) {