diff --git a/src/common/specialvalues.h b/src/common/specialvalues.h --- a/src/common/specialvalues.h +++ b/src/common/specialvalues.h @@ -31,6 +31,8 @@ #define CURRENT_AGENT_TAG QStringLiteral(":current") #define ANY_TYPE_TAG QStringLiteral(":any") +#define FILES_TYPE_TAG QStringLiteral(":files") +#define DIRECTORIES_TYPE_TAG QStringLiteral(":directories") #endif // SPECIALVALUES_H diff --git a/src/resultset.cpp b/src/resultset.cpp --- a/src/resultset.cpp +++ b/src/resultset.cpp @@ -28,6 +28,7 @@ // Local #include +#include #include #include #include "kactivities-stats-logsettings.h" @@ -175,7 +176,10 @@ QString mimetypeClause(const QString &mimetype) const { - if (mimetype == QLatin1String(":any") || mimetype == QLatin1String("*")) return QStringLiteral("1"); + if (mimetype == ANY_TYPE_TAG || mimetype == QLatin1String("*")) return QStringLiteral("1"); + + else if (mimetype == FILES_TYPE_TAG) return QStringLiteral("mimetype != 'inode/directory' AND mimetype != ''"); + else if (mimetype == DIRECTORIES_TYPE_TAG) return QStringLiteral("mimetype = 'inode/directory'"); return QStringLiteral("mimetype LIKE '") + Common::starPatternToLike(mimetype) + QStringLiteral("' ESCAPE '\\'"); } diff --git a/src/terms.h b/src/terms.h --- a/src/terms.h +++ b/src/terms.h @@ -96,6 +96,14 @@ * Show resources of any type */ static Type any(); + /** + * Show non-directory resources + */ + static Type files(); + /** + * Show directory resources aka folders + */ + static Type directories(); #ifdef Q_COMPILER_INITIALIZER_LISTS inline Type(std::initializer_list types) diff --git a/src/terms.cpp b/src/terms.cpp --- a/src/terms.cpp +++ b/src/terms.cpp @@ -44,7 +44,9 @@ } IMPLEMENT_TERM_CONSTRUCTORS(Type) -IMPLEMENT_SPECIAL_TERM_VALUE(Type, any, ANY_TYPE_TAG) +IMPLEMENT_SPECIAL_TERM_VALUE(Type, any, ANY_TYPE_TAG) +IMPLEMENT_SPECIAL_TERM_VALUE(Type, files, FILES_TYPE_TAG) +IMPLEMENT_SPECIAL_TERM_VALUE(Type, directories, DIRECTORIES_TYPE_TAG) IMPLEMENT_TERM_CONSTRUCTORS(Agent) IMPLEMENT_SPECIAL_TERM_VALUE(Agent, any, ANY_AGENT_TAG)