Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[nemo-filemanager] Add filters to fileCount method. Contributes to JB…
…#47502
  • Loading branch information
Alexey Tatarov committed Oct 14, 2019
1 parent 294b003 commit 84b556c
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 11 deletions.
12 changes: 6 additions & 6 deletions src/plugin/diskusage.cpp
Expand Up @@ -55,20 +55,20 @@ void DiskUsageWorker::submit(QStringList paths, QJSValue *callback)
emit finished(calculate(paths), callback);
}

void DiskUsageWorker::startCounting(const QString &path, QJSValue *callback, bool recursive)
void DiskUsageWorker::startCounting(const QString &path, QJSValue *callback, DiskUsage::Filter filter, bool recursive)
{
emit countingFinished(counting(path, recursive), callback);
emit countingFinished(counting(path, filter, recursive), callback);
}

int DiskUsageWorker::counting(const QString &path, bool recursive)
int DiskUsageWorker::counting(const QString &path, DiskUsage::Filter filter, bool recursive)
{
m_stopCounting = false;

QFileInfo fileinfo(path);
if (!fileinfo.isDir() || !fileinfo.exists())
return 0;

QDir::Filters filters = (QDir::Files | QDir::NoDotAndDotDot);
QDir::Filters filters = static_cast<QDir::Filter>(filter | QDir::NoDotAndDotDot);
QDirIterator it(path, filters, recursive ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags);
int counter = 0;

Expand Down Expand Up @@ -250,7 +250,7 @@ void DiskUsage::calculate(const QStringList &paths, QJSValue callback)
emit submit(paths, cb, QPrivateSignal());
}

void DiskUsage::fileCount(const QString &path, QJSValue callback, bool recursive)
void DiskUsage::fileCount(const QString &path, QJSValue callback, DiskUsage::Filter filter, bool recursive)
{
QJSValue *cb = nullptr;

Expand All @@ -259,7 +259,7 @@ void DiskUsage::fileCount(const QString &path, QJSValue callback, bool recursive
}

setStatus(DiskUsage::Counting);
emit startCounting(path, cb, recursive, QPrivateSignal());
emit startCounting(path, cb, filter, recursive, QPrivateSignal());
}

void DiskUsage::finished(QVariantMap usage, QJSValue *callback)
Expand Down
14 changes: 11 additions & 3 deletions src/plugin/diskusage.h
Expand Up @@ -37,6 +37,7 @@
#include <QVariant>
#include <QJSValue>
#include <QScopedPointer>
#include <QDir>

#include <filemanagerglobal.h>

Expand All @@ -58,17 +59,24 @@ class FILEMANAGER_EXPORT DiskUsage: public QObject
explicit DiskUsage(QObject *parent = nullptr);
virtual ~DiskUsage();

enum Status{
enum Status {
Idle,
Calculating,
Counting
};
Q_ENUM(Status)

enum Filter {
Files = QDir::Files,
Dirs = QDir::Dirs,
AllEntries = QDir::AllEntries
};
Q_ENUM(Filter)

// Calculate the disk usage of the given paths, then call
// callback with a QVariantMap (mapping paths to usages in bytes)
Q_INVOKABLE void calculate(const QStringList &paths, QJSValue callback);
Q_INVOKABLE void fileCount(const QString &path, QJSValue callback, bool recursive = false);
Q_INVOKABLE void fileCount(const QString &path, QJSValue callback, DiskUsage::Filter filter, bool recursive = false);
QVariantMap result() const;

signals:
Expand All @@ -78,7 +86,7 @@ class FILEMANAGER_EXPORT DiskUsage: public QObject

signals:
void submit(QStringList paths, QJSValue *callback, QPrivateSignal);
void startCounting(const QString &path, QJSValue *callback, bool recursive, QPrivateSignal);
void startCounting(const QString &path, QJSValue *callback, DiskUsage::Filter filter, bool recursive, QPrivateSignal);

private slots:
void finished(QVariantMap usage, QJSValue *callback);
Expand Down
5 changes: 3 additions & 2 deletions src/plugin/diskusage_p.h
Expand Up @@ -36,6 +36,7 @@
#include <QObject>
#include <QVariant>
#include <QJSValue>
#include <diskusage.h>

class DiskUsageWorker : public QObject
{
Expand All @@ -50,7 +51,7 @@ class DiskUsageWorker : public QObject

public slots:
void submit(QStringList paths, QJSValue *callback);
void startCounting(const QString &path, QJSValue *callback, bool recursive);
void startCounting(const QString &path, QJSValue *callback, DiskUsage::Filter filter, bool recursive);

signals:
void finished(QVariantMap usage, QJSValue *callback);
Expand All @@ -61,7 +62,7 @@ public slots:
quint64 calculateSize(QString directory, QString *expandedPath, bool androidHomeExists);
quint64 calculateRpmSize(const QString &glob);
quint64 calculateApkdSize(const QString &rest);
int counting(const QString &path, bool recursive);
int counting(const QString &path, DiskUsage::Filter filter, bool recursive);

bool m_quit;
bool m_stopCounting;
Expand Down
1 change: 1 addition & 0 deletions src/plugin/plugin.cpp
Expand Up @@ -70,6 +70,7 @@ class Q_DECL_EXPORT NemoFileManagerPlugin : public QQmlExtensionPlugin
qmlRegisterSingletonType<FileEngine>(uri, 1, 0, "FileEngine", engine_api_factory);

qRegisterMetaType<FileEngine::Error>("FileEngine::Error");
qRegisterMetaType<DiskUsage::Filter>("DiskUsage::Filter");
}
};

Expand Down
10 changes: 10 additions & 0 deletions src/plugin/plugins.qmltypes
Expand Up @@ -21,6 +21,14 @@ Module {
"Counting": 2
}
}
Enum {
name: "Filter"
values: {
"Files": 2,
"Dirs": 1,
"AllEntries": 7
}
}
Property { name: "working"; type: "bool"; isReadonly: true }
Property { name: "result"; type: "QVariantMap"; isReadonly: true }
Property { name: "status"; type: "Status" }
Expand All @@ -42,12 +50,14 @@ Module {
name: "fileCount"
Parameter { name: "path"; type: "string" }
Parameter { name: "callback"; type: "QJSValue" }
Parameter { name: "filter"; type: "Filter" }
Parameter { name: "recursive"; type: "bool" }
}
Method {
name: "fileCount"
Parameter { name: "path"; type: "string" }
Parameter { name: "callback"; type: "QJSValue" }
Parameter { name: "filter"; type: "Filter" }
}
}
Component {
Expand Down

0 comments on commit 84b556c

Please sign in to comment.