Hello community,

here is the log from the commit of package kactivities-stats for 
openSUSE:Factory checked in at 2019-09-23 12:20:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kactivities-stats (Old)
 and      /work/SRC/openSUSE:Factory/.kactivities-stats.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kactivities-stats"

Mon Sep 23 12:20:53 2019 rev:42 rq:730904 version:5.62.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kactivities-stats/kactivities-stats.changes      
2019-08-19 21:03:24.632911017 +0200
+++ 
/work/SRC/openSUSE:Factory/.kactivities-stats.new.7948/kactivities-stats.changes
    2019-09-23 12:21:40.485764903 +0200
@@ -1,0 +2,15 @@
+Sat Sep  7 20:36:27 UTC 2019 - Christophe Giboudeaux <[email protected]>
+
+- Update to 5.62.0
+  * New feature release
+  * For more details please see:
+  * https://www.kde.org/announcements/kde-frameworks-5.62.0.php
+- Changes since 5.61.0:
+  * Add Term::Type::files() and Term::Type::directories() to filter only 
directories or excluding them
+  * Add @since 5.62 for newly added setters
+  * Add proper logging using ECMQtDeclareLoggingCategory
+  * Add setter to Type, Activity, Agent and UrlFilter query fields
+  * Use special values constants in terms.cpp
+  * Allow date range filtering of resource events using Date Term
+
+-------------------------------------------------------------------

Old:
----
  kactivities-stats-5.61.0.tar.xz
  kactivities-stats-5.61.0.tar.xz.sig

New:
----
  kactivities-stats-5.62.0.tar.xz
  kactivities-stats-5.62.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kactivities-stats.spec ++++++
--- /var/tmp/diff_new_pack.Cx0hfY/_old  2019-09-23 12:21:41.029764814 +0200
+++ /var/tmp/diff_new_pack.Cx0hfY/_new  2019-09-23 12:21:41.033764813 +0200
@@ -17,7 +17,7 @@
 
 
 %define lname   libKF5ActivitiesStats1
-%define _tar_path 5.61
+%define _tar_path 5.62
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
@@ -25,7 +25,7 @@
 # Only needed for the package signature condition
 %bcond_without lang
 Name:           kactivities-stats
-Version:        5.61.0
+Version:        5.62.0
 Release:        0
 Summary:        KDE Plasma Activities support
 License:        LGPL-2.0-or-later
@@ -87,6 +87,7 @@
 %files -n %{lname}
 %license COPYING*
 %{_kf5_libdir}/libKF5ActivitiesStats.so.*
+%{_kf5_debugdir}/kactivities-stats.categories
 
 %files devel
 %{_kf5_libdir}/libKF5ActivitiesStats.so


++++++ kactivities-stats-5.61.0.tar.xz -> kactivities-stats-5.62.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/CMakeLists.txt 
new/kactivities-stats-5.62.0/CMakeLists.txt
--- old/kactivities-stats-5.61.0/CMakeLists.txt 2019-08-03 21:30:45.000000000 
+0200
+++ new/kactivities-stats-5.62.0/CMakeLists.txt 2019-09-07 14:32:27.000000000 
+0200
@@ -2,8 +2,8 @@
 
 cmake_minimum_required(VERSION 3.5)
 
-set(KF5_VERSION "5.61.0") # handled by release scripts
-set(KF5_DEP_VERSION "5.61.0") # handled by release scripts
+set(KF5_VERSION "5.62.0") # handled by release scripts
+set(KF5_DEP_VERSION "5.62.0") # handled by release scripts
 project (KActivitiesStats VERSION ${KF5_VERSION})
 
 set (REQUIRED_QT_VERSION 5.11.0)
@@ -20,7 +20,7 @@
 
 # Extra CMake stuff
 include (FeatureSummary)
-find_package (ECM 5.61.0  NO_MODULE)
+find_package (ECM 5.62.0  NO_MODULE)
 set_package_properties (ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL 
"https://projects.kde.org/projects/kdesupport/extra-cmake-modules";)
 feature_summary (WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
@@ -32,6 +32,7 @@
 include (GenerateExportHeader)
 include (ECMGenerateHeaders)
 include (ECMAddQch)
+include (ECMQtDeclareLoggingCategory)
 
 option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt 
Assistant, Qt Creator & KDevelop)" OFF)
 add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. 
Qt Assistant, Qt Creator & KDevelop)")
@@ -129,3 +130,6 @@
 # Write out the features
 feature_summary (WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
+install(FILES kactivities-stats.categories  DESTINATION  
${KDE_INSTALL_LOGGINGCATEGORIESDIR})
+install(FILES kactivities-stats.categories  DESTINATION ${KDE_INSTALL_CONFDIR})
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/README.md 
new/kactivities-stats-5.62.0/README.md
--- old/kactivities-stats-5.61.0/README.md      2019-08-03 21:30:45.000000000 
+0200
+++ new/kactivities-stats-5.62.0/README.md      2019-09-07 14:32:27.000000000 
+0200
@@ -16,14 +16,14 @@
 
 The library provides the following important classes:
 
-- `ResultSet` is a low level class that provides a forward iterator to the
+- `KActivities::Stats::ResultSet` is a low level class that provides a forward 
iterator to the
   list of results that match the specified query
-- `ResultWatcher` provides signals when a new resource that matches a query
+- `KActivities::Stats::ResultWatcher` provides signals when a new resource 
that matches a query
   arrives, or when an existing one is gone (usage statistics cleared or some
   for other reason)
-- `ResultModel` provides a Qt data model that shows the resources that
+- `KActivities::Stats::ResultModel` provides a Qt data model that shows the 
resources that
   match the specified query. This model should be subclassed to teach it
   to handle the different resource types that you want to show as the results.
 
-Queries are defined by the `Query` class using a simple range-like syntax.
+Queries are defined by the `KActivities::Stats::Query` class using a simple 
range-like syntax.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/autotests/CMakeLists.txt 
new/kactivities-stats-5.62.0/autotests/CMakeLists.txt
--- old/kactivities-stats-5.61.0/autotests/CMakeLists.txt       2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/autotests/CMakeLists.txt       2019-09-07 
14:32:27.000000000 +0200
@@ -18,6 +18,9 @@
    ResultSetQuickCheckTest.cpp
    ResultWatcherTest.cpp
 
+   # Generated by macro ecm_qt_declare_logging_category in src/CMakeLists.txt
+   ${CMAKE_BINARY_DIR}/src/kactivities-stats-logsettings.cpp
+
    ${KASTATS_CURRENT_ROOT_SOURCE_DIR}/src/utils/qsqlquery_iterator.cpp
    ${KASTATS_CURRENT_ROOT_SOURCE_DIR}/src/common/database/Database.cpp
    
${KASTATS_CURRENT_ROOT_SOURCE_DIR}/src/common/database/schema/ResourcesDatabaseSchema.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/autotests/QueryTest.cpp 
new/kactivities-stats-5.62.0/autotests/QueryTest.cpp
--- old/kactivities-stats-5.61.0/autotests/QueryTest.cpp        2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/autotests/QueryTest.cpp        2019-09-07 
14:32:27.000000000 +0200
@@ -302,16 +302,21 @@
     TEST_CHUNK(QStringLiteral("Testing the Date definition"))
     {
         auto query = Date::today();
-        QCOMPARE(query.value, QDate::currentDate());
+        QCOMPARE(query.start, QDate::currentDate());
     }
     {
         auto query = Date::yesterday();
         QDate date = QDate::currentDate();
-        QCOMPARE(query.value, date.addDays(-1));
+        QCOMPARE(query.start, date.addDays(-1));
     }
     {
         auto query = Date(QDate::fromString(QStringLiteral("2019-07-25")));
-        QCOMPARE(query.value, QDate::fromString(QStringLiteral("2019-07-25")));
+        QCOMPARE(query.start, QDate::fromString(QStringLiteral("2019-07-25")));
+    }
+    {
+        auto query = 
Date(QDate::fromString(QStringLiteral("2019-07-24,2019-07-25")));
+        QCOMPARE(query.start, QDate::fromString(QStringLiteral("2019-07-24")));
+        QCOMPARE(query.end, QDate::fromString(QStringLiteral("2019-07-25")));
     }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/autotests/ResultSetTest.cpp 
new/kactivities-stats-5.62.0/autotests/ResultSetTest.cpp
--- old/kactivities-stats-5.61.0/autotests/ResultSetTest.cpp    2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/autotests/ResultSetTest.cpp    2019-09-07 
14:32:27.000000000 +0200
@@ -158,6 +158,19 @@
 
         QCOMPARE(result.at(0).resource(), 
QStringLiteral("/path/high1_act1_gvim"));
     }
+
+    TEST_CHUNK(QStringLiteral("Getting the used resources filter by Date 
range"))
+    {
+        ResultSet result(UsedResources
+                        | HighScoredFirst
+                        | Agent::any()
+                        | Activity::any()
+                        | 
Date::fromString(QStringLiteral("2015-01-14,2015-01-15"))
+                        );
+
+        QCOMPARE(result.at(0).resource(), 
QStringLiteral("/path/high1_act1_gvim"));
+        QCOMPARE(result.at(1).resource(), 
QStringLiteral("/path/high2_act2_kate"));
+    }
 }
 
 void ResultSetTest::initTestCase()
@@ -208,12 +221,17 @@
 
     database->execQuery(
             QStringLiteral("INSERT INTO  ResourceEvent (usedActivity, 
initiatingAgent, targettedResource, start, end ) VALUES"
-             "('activity1' , 'gvim'                 , '/path/high1_act1_gvim' 
, '1421345799', '1421345799')")
+             // 15 january 2015
+             "  ('activity1' , 'gvim'                 , 
'/path/high1_act1_gvim' , '1421345799', '1421345799')"
+             // 14 january 2015
+             " , ('activity2' , 'kate'                 , 
'/path/high2_act2_kate' , '1421259377', '1421259377')"
+    )
     );
 
     database->execQuery(
             QStringLiteral("INSERT INTO  ResourceInfo (targettedResource, 
title, mimetype, autoTitle, autoMimetype) VALUES"
-             "('/path/high1_act1_gvim', 'high1_act1_gvim', 'text/plain', 1, 1 
)")
+             "('/path/high1_act1_gvim', 'high1_act1_gvim', 'text/plain', 1, 1 
) ,"
+             "('/path/high2_act2_kate', 'high2_act2_kate', 'text/plain', 1, 1 
)")
     );
 
     // Renaming the activity1 to the current acitivty
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kactivities-stats-5.61.0/kactivities-stats.categories 
new/kactivities-stats-5.62.0/kactivities-stats.categories
--- old/kactivities-stats-5.61.0/kactivities-stats.categories   1970-01-01 
01:00:00.000000000 +0100
+++ new/kactivities-stats-5.62.0/kactivities-stats.categories   2019-09-07 
14:32:27.000000000 +0200
@@ -0,0 +1 @@
+org.kde.kactivities.stats KActivities Stats DEFAULT_SEVERITY [WARNING] 
IDENTIFIER [KACTIVITIES_STATS_LOG]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/CMakeLists.txt 
new/kactivities-stats-5.62.0/src/CMakeLists.txt
--- old/kactivities-stats-5.61.0/src/CMakeLists.txt     2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/src/CMakeLists.txt     2019-09-07 
14:32:27.000000000 +0200
@@ -16,6 +16,12 @@
    ${KASTATS_CURRENT_ROOT_SOURCE_DIR}/src/utils/qsqlquery_iterator.cpp
    )
 
+ecm_qt_declare_logging_category(KActivitiesStats_LIB_SRCS
+                                HEADER kactivities-stats-logsettings.h
+                                IDENTIFIER KACTIVITIES_STATS_LOG
+CATEGORY_NAME kf5.kactivity.stat)
+
+
 qt5_add_dbus_interface (
    KActivitiesStats_LIB_SRCS
 
@@ -31,7 +37,6 @@
    )
 
 
-
 add_library (
    KF5ActivitiesStats SHARED
    ${KActivitiesStats_LIB_SRCS}
@@ -115,6 +120,7 @@
         MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
         LINK_QCHS
             Qt5Core_QCH
+            KF5Activities_QCH # while not in API symbols, some classes are 
referenced in comments
         BLANK_MACROS
             KACTIVITIESSTATS_EXPORT
             KACTIVITIESSTATS_DEPRECATED
@@ -148,4 +154,3 @@
    DESTINATION ${ECM_MKSPECS_INSTALL_DIR}
    )
 
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kactivities-stats-5.61.0/src/common/database/Database.cpp 
new/kactivities-stats-5.62.0/src/common/database/Database.cpp
--- old/kactivities-stats-5.61.0/src/common/database/Database.cpp       
2019-08-03 21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/src/common/database/Database.cpp       
2019-09-07 14:32:27.000000000 +0200
@@ -35,6 +35,8 @@
 #include <mutex>
 #include <map>
 
+#include "kactivities-stats-logsettings.h"
+
 namespace Common {
 
 namespace {
@@ -92,7 +94,7 @@
         m_open = m_database.open();
 
         if (!m_open) {
-            qWarning() << "KActivities: Database is not open: "
+            qCWarning(KACTIVITIES_STATS_LOG) << "KActivities: Database is not 
open: "
                        << m_database.connectionName()
                        << m_database.databaseName()
                        << m_database.lastError();
@@ -105,7 +107,7 @@
 
     ~QSqlDatabaseWrapper()
     {
-        qDebug() << "Closing SQL connection: " << m_connectionName;
+        qCDebug(KACTIVITIES_STATS_LOG) << "Closing SQL connection: " << 
m_connectionName;
     }
 
     QSqlDatabase &get()
@@ -202,9 +204,9 @@
     auto walResult = ptr->pragma(QStringLiteral("journal_mode = WAL"));
 
     if (walResult != QLatin1String("wal")) {
-        qWarning("KActivities: Database can not be opened in WAL mode. Check 
the "
+        qCWarning(KACTIVITIES_STATS_LOG) << "KActivities: Database can not be 
opened in WAL mode. Check the "
                  "SQLite version (required >3.7.0). And whether your 
filesystem "
-                 "supports shared memory");
+                 "supports shared memory";
 
         return nullptr;
     }
@@ -213,7 +215,7 @@
     // it reaches 400k, not 4M as is default
     ptr->setPragma(QStringLiteral("wal_autocheckpoint = 100"));
 
-    qDebug() << "KActivities: Database connection: " << 
ptr->d->database->connectionName()
+    qCDebug(KACTIVITIES_STATS_LOG) << "KActivities: Database connection: " << 
ptr->d->database->connectionName()
         << "\n    query_only:         " << 
ptr->pragma(QStringLiteral("query_only"))
         << "\n    journal_mode:       " << 
ptr->pragma(QStringLiteral("journal_mode"))
         << "\n    wal_autocheckpoint: " << 
ptr->pragma(QStringLiteral("wal_autocheckpoint"))
@@ -255,7 +257,7 @@
     lastExecutedQuery = query;
 
     if (!ignoreErrors && result.lastError().isValid()) {
-        qWarning() << "SQL: "
+        qCWarning(KACTIVITIES_STATS_LOG) << "SQL: "
                    << "\n    error: " << result.lastError()
                    << "\n    query: " << query;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/common/specialvalues.h 
new/kactivities-stats-5.62.0/src/common/specialvalues.h
--- old/kactivities-stats-5.61.0/src/common/specialvalues.h     2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/src/common/specialvalues.h     2019-09-07 
14:32:27.000000000 +0200
@@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/query.cpp 
new/kactivities-stats-5.62.0/src/query.cpp
--- old/kactivities-stats-5.61.0/src/query.cpp  2019-08-03 21:30:45.000000000 
+0200
+++ new/kactivities-stats-5.62.0/src/query.cpp  2019-09-07 14:32:27.000000000 
+0200
@@ -20,6 +20,7 @@
  */
 
 #include "query.h"
+#include "common/specialvalues.h"
 #include <QDate>
 #include <QDebug>
 
@@ -72,7 +73,7 @@
     QStringList     activities;
     QStringList     urlFilters;
     Terms::Order    ordering;
-    QDate           date;
+    QDate           start, end;
     int             limit;
     int             offset;
 };
@@ -114,7 +115,8 @@
            activities() == right.activities() &&
            selection()  == right.selection() &&
            urlFilters() == right.urlFilters() &&
-           date()       == right.date();
+           dateStart()  == right.dateStart() &&
+           dateEnd()    == right.dateEnd();
 }
 
 bool Query::operator!= (const Query &right) const
@@ -122,13 +124,19 @@
     return !(*this == right);
 }
 
-#define IMPLEMENT_QUERY_LIST_FIELD(WHAT, What, Default)                        
\
+#define IMPLEMENT_QUERY_LIST_FIELD(WHAT, What, Term, Default)                  
\
     void Query::add##WHAT(const QStringList &What)                             
\
     {                                                                          
\
         d->What << What;                                                       
\
         details::validate##WHAT(d->What);                                      
\
     }                                                                          
\
                                                                                
\
+    void Query::set##WHAT(const Terms::Term &What)                             
\
+    {                                                                          
\
+        d->What = What.values;                                                 
\
+        details::validate##WHAT(d->What);                                      
\
+    }                                                                          
\
+                                                                               
\
     QStringList Query::What() const                                            
\
     {                                                                          
\
         return d->What.size() ? d->What : Default;                             
\
@@ -139,10 +147,10 @@
         d->What.clear();                                                       
\
     }
 
-IMPLEMENT_QUERY_LIST_FIELD(Types,      types,      
QStringList(QStringLiteral(":any")))
-IMPLEMENT_QUERY_LIST_FIELD(Agents,     agents,     
QStringList(QStringLiteral(":current")))
-IMPLEMENT_QUERY_LIST_FIELD(Activities, activities, 
QStringList(QStringLiteral(":current")))
-IMPLEMENT_QUERY_LIST_FIELD(UrlFilters, urlFilters, 
QStringList(QStringLiteral("*")))
+IMPLEMENT_QUERY_LIST_FIELD(Types,      types,      Type,     
QStringList(ANY_TYPE_TAG))
+IMPLEMENT_QUERY_LIST_FIELD(Agents,     agents,     Agent,    
QStringList(CURRENT_AGENT_TAG))
+IMPLEMENT_QUERY_LIST_FIELD(Activities, activities, Activity, 
QStringList(CURRENT_ACTIVITY_TAG))
+IMPLEMENT_QUERY_LIST_FIELD(UrlFilters, urlFilters, Url,      
QStringList(QStringLiteral("*")))
 
 #undef IMPLEMENT_QUERY_LIST_FIELD
 
@@ -166,9 +174,20 @@
     d->offset = offset;
 }
 
-void Query::setDate(QDate date)
+void Query::setDate(const Terms::Date &date)
+{
+    d->start = date.start;
+    d->end = date.end;
+}
+
+void Query::setDateStart(QDate start)
 {
-    d->date = date;
+    d->start = start;
+}
+
+void Query::setDateEnd(QDate end)
+{
+    d->end = end;
 }
 
 Terms::Order Query::ordering() const
@@ -192,9 +211,14 @@
     return d->offset;
 }
 
-QDate Query::date() const
+QDate Query::dateStart() const
+{
+    return d->start;
+}
+
+QDate Query::dateEnd() const
 {
-    return d->date;
+    return d->end;
 }
 
 } // namespace Stats
@@ -213,7 +237,7 @@
         << ", " << Agent(query.agents())
         << ", " << Activity(query.activities())
         << ", " << Url(query.urlFilters())
-        << ", " << Date(query.date())
+        << ", " << Date(query.dateStart(), query.dateEnd())
         << ", " << query.ordering()
         << ", Limit: " << query.limit()
         << " }";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/query.h 
new/kactivities-stats-5.62.0/src/query.h
--- old/kactivities-stats-5.61.0/src/query.h    2019-08-03 21:30:45.000000000 
+0200
+++ new/kactivities-stats-5.62.0/src/query.h    2019-09-07 14:32:27.000000000 
+0200
@@ -41,6 +41,8 @@
 class QueryPrivate;
 
 /**
+ * @class KActivities::Stats::Query query.h <KActivities/Stats/Query>
+ *
  * The activities system tracks resources (documents, contacts, etc.)
  * that the user has used. It also allows linking resources to
  * specific activities (like bookmarks, favorites, etc.).
@@ -51,20 +53,20 @@
  *
  * It allows filtering the results depending on the resource type,
  * the agent (application that reported the usage event,
- * @see KActivities::ResourceInstance) and the activity the resource
+ * see KActivities::ResourceInstance) and the activity the resource
  * has been used in, or linked to. It also allows filtering
  * on the URL of the resource.
  *
  * While it can be explicitly instantiated, a preferred approach
  * is to use the pipe syntax like this:
  *
- * <code>
+ * @code
  * auto query = UsedResources
  *                 | RecentlyUsedFirst
  *                 | Agent::any()
  *                 | Type::any()
  *                 | Activity::current();
- * </code>
+ * @endcode
  */
 class KACTIVITIESSTATS_EXPORT Query {
 public:
@@ -89,7 +91,8 @@
     Terms::Order ordering() const;
     int offset() const;
     int limit() const;
-    QDate date() const;
+    QDate dateStart() const;
+    QDate dateEnd() const;
 
     void setSelection(Terms::Select selection);
 
@@ -97,10 +100,31 @@
     void addAgents(const QStringList &agents);
     void addActivities(const QStringList &activities);
     void addUrlFilters(const QStringList &urlFilters);
+    /**
+     * @since 5.62
+     */
+    void setTypes(const Terms::Type &types);
+    /**
+     * @since 5.62
+     */
+    void setAgents(const Terms::Agent &agents);
+    /**
+     * @since 5.62
+     */
+    void setActivities(const Terms::Activity &activities);
+    /**
+     * @since 5.62
+     */
+    void setUrlFilters(const Terms::Url &urlFilters);
     void setOrdering(Terms::Order ordering);
     void setOffset(int offset);
     void setLimit(int limit);
-    void setDate(QDate date);
+    /**
+     * @since 5.62
+     */
+    void setDate(const Terms::Date &date);
+    void setDateStart(QDate date);
+    void setDateEnd(QDate date);
 
     void clearTypes();
     void clearAgents();
@@ -155,7 +179,8 @@
 
     inline void addTerm(Terms::Date date)
     {
-        setDate(date.value);
+        setDateStart(date.start);
+        setDateEnd(date.end);
     }
 
 public:
@@ -174,7 +199,7 @@
     inline Query operator| (Query &&query, Term &&term)
     {
         query.addTerm(term);
-        return query;
+        return std::move(query);
     }
 
 private:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/resultmodel.cpp 
new/kactivities-stats-5.62.0/src/resultmodel.cpp
--- old/kactivities-stats-5.61.0/src/resultmodel.cpp    2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/src/resultmodel.cpp    2019-09-07 
14:32:27.000000000 +0200
@@ -46,13 +46,14 @@
 #include "resultwatcher.h"
 #include "cleaning.h"
 #include "kactivities/consumer.h"
+#include "kactivities-stats-logsettings.h"
 
 #include <common/specialvalues.h>
 
 #define MAX_CHUNK_LOAD_SIZE 50
 #define MAX_RELOAD_CACHE_SIZE 50
 
-#define QDBG qDebug() << "KActivitiesStats(" << (void*)this << ")"
+#define QDBG qCDebug(KACTIVITIES_STATS_LOG) << "KActivitiesStats(" << 
(void*)this << ")"
 
 namespace KActivities {
 namespace Stats {
@@ -109,7 +110,7 @@
                                             int position)
         {
             if (!m_orderingConfig.isValid()) {
-                qWarning() << "We can not reorder the results, no clientId was 
specified";
+                qCWarning(KACTIVITIES_STATS_LOG) << "We can not reorder the 
results, no clientId was specified";
                 return;
             }
 
@@ -192,14 +193,14 @@
         inline void debug() const
         {
             for (const auto& item: m_items) {
-                qDebug() << "Item: " << item;
+                qCDebug(KACTIVITIES_STATS_LOG) << "Item: " << item;
             }
         }
 
         void loadOrderingConfig(const QString &activityTag)
         {
             if (!m_configFile) {
-                qDebug() << "Nothing to load - the client id is empty";
+                qCDebug(KACTIVITIES_STATS_LOG) << "Nothing to load - the 
client id is empty";
                 return;
             }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/resultmodel.h 
new/kactivities-stats-5.62.0/src/resultmodel.h
--- old/kactivities-stats-5.61.0/src/resultmodel.h      2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/src/resultmodel.h      2019-09-07 
14:32:27.000000000 +0200
@@ -40,6 +40,8 @@
 class ResultModelPrivate;
 
 /**
+ * @class KActivities::Stats::ResultModel resultmodel.h 
<KActivities/Stats/ResultModel>
+ *
  * Provides a model which displays the resources matching
  * the specified Query.
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/resultset.cpp 
new/kactivities-stats-5.62.0/src/resultset.cpp
--- old/kactivities-stats-5.61.0/src/resultset.cpp      2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/src/resultset.cpp      2019-09-07 
14:32:27.000000000 +0200
@@ -28,8 +28,10 @@
 
 // Local
 #include <common/database/Database.h>
+#include <common/specialvalues.h>
 #include <utils/debug_and_return.h>
 #include <utils/qsqlquery_iterator.h>
+#include "kactivities-stats-logsettings.h"
 
 // Boost and STL
 #include <boost/range/algorithm/transform.hpp>
@@ -134,7 +136,7 @@
               : QString()));
 
         if (query.lastError().isValid()) {
-            qWarning() << "[Error at ResultSetPrivate::initQuery]: " << 
query.lastError();
+            qCWarning(KACTIVITIES_STATS_LOG) << "[Error at 
ResultSetPrivate::initQuery]: " << query.lastError();
         }
     }
 
@@ -174,14 +176,25 @@
 
     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 '\\'");
     }
 
-    QString dateClause(QDate date) const {
-        return QStringLiteral("DATE(re.start, 'unixepoch') = '") +
-                               date.toString(Qt::ISODate) + QStringLiteral("' 
");
+    QString dateClause(QDate start, QDate end) const {
+        if (end.isNull()) {
+            // only date filtering
+            return QStringLiteral("DATE(re.start, 'unixepoch') = '") +
+                    start.toString(Qt::ISODate) + QStringLiteral("' ");
+        } else {
+            // date range filtering
+            return QStringLiteral("DATE(re.start, 'unixepoch') >= '") +
+                    start.toString(Qt::ISODate) + QStringLiteral("' AND 
DATE(re.start, 'unixepoch') <= '") +
+                    end.toString(Qt::ISODate) + QStringLiteral("' ");
+        }
     }
 
     QString resourceEventJoinClause() const {
@@ -259,8 +272,8 @@
 
         QString dateColumn = QStringLiteral("1"), resourceEventJoin;
         // WHERE clause for access date filtering and ResourceEvent table Join
-        if (!queryDefinition.date().isNull()) {
-            dateColumn = dateClause(queryDefinition.date());
+        if (!queryDefinition.dateStart().isNull()) {
+            dateColumn = dateClause(queryDefinition.dateStart(), 
queryDefinition.dateEnd());
 
             resourceEventJoin = resourceEventJoinClause();
         }
@@ -501,7 +514,7 @@
         }
 
         result.setLinkedActivities(linkedActivities);
-        // qDebug() << result.resource() << "linked to activities" << 
result.linkedActivities();
+        // qDebug(KACTIVITIES_STATS_LOG) << result.resource() << "linked to 
activities" << result.linkedActivities();
 
         return result;
     }
@@ -515,7 +528,7 @@
     d->database = Database::instance(Database::ResourcesDatabase, 
Database::ReadOnly);
 
     if (!(d->database)) {
-        qWarning() << "KActivities ERROR: There is no database. This probably 
means "
+        qCWarning(KACTIVITIES_STATS_LOG) << "KActivities ERROR: There is no 
database. This probably means "
                       "that you do not have the Activity Manager running, or 
that "
                       "something else is broken on your system. Recent 
documents and "
                       "alike will not work!";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/resultset.h 
new/kactivities-stats-5.62.0/src/resultset.h
--- old/kactivities-stats-5.61.0/src/resultset.h        2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/src/resultset.h        2019-09-07 
14:32:27.000000000 +0200
@@ -34,6 +34,8 @@
 class ResultSet_IteratorPrivate;
 
 /**
+ * @class KActivities::Stats::ResultSet resultset.h 
<KActivities/Stats/ResultSet>
+ *
  * Class that can query the KActivities usage tracking mechanism
  * for resources.
  *
@@ -45,12 +47,12 @@
  * ResultSet is meant to be used when you just need to fetch a few results
  * like this:
  *
- * <code>
+ * @code
  * auto results = ResultSet(AllResources | Agent("org.kde.kate"));
  * for (const auto &result: results) {
  *     // ...
  * }
- * </code>
+ * @endcode
  */
 class KACTIVITIESSTATS_EXPORT ResultSet {
 public:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/resultwatcher.cpp 
new/kactivities-stats-5.62.0/src/resultwatcher.cpp
--- old/kactivities-stats-5.61.0/src/resultwatcher.cpp  2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/src/resultwatcher.cpp  2019-09-07 
14:32:27.000000000 +0200
@@ -32,6 +32,7 @@
 // Local
 #include <common/database/Database.h>
 #include <utils/debug_and_return.h>
+#include "kactivities-stats-logsettings.h"
 
 // Boost and STL
 #include <boost/range/algorithm/transform.hpp>
@@ -53,7 +54,7 @@
 
 #include <algorithm>
 
-#define QDBG qDebug() << "KActivitiesStats(" << (void*)this << ")"
+#define QDBG qCDebug(KACTIVITIES_STATS_LOG) << "KActivitiesStats(" << 
(void*)this << ")"
 
 namespace KActivities {
 namespace Stats {
@@ -101,7 +102,7 @@
     bool activityMatches(const QString &activity) const
     {
         #if DEBUG_MATCHERS
-        qDebug() << "Activity " << activity << "matching against"
+        qCDebug(KACTIVITIES_STATS_LOG) << "Activity " << activity << "matching 
against"
                  << query.activities();
         #endif
 
@@ -122,7 +123,7 @@
     bool agentMatches(const QString &agent) const
     {
         #if DEBUG_MATCHERS
-        qDebug() << "Agent " << agent << "matching against" << query.agents();
+        qCDebug(KACTIVITIES_STATS_LOG) << "Agent " << agent << "matching 
against" << query.agents();
         #endif
 
         return kamd::utils::debug_and_return(DEBUG_MATCHERS, " -> returning ",
@@ -142,7 +143,7 @@
     bool urlMatches(const QString &url) const
     {
         #if DEBUG_MATCHERS
-        qDebug() << "Url " << url << "matching against" << urlFilters;
+        qCDebug(KACTIVITIES_STATS_LOG) << "Url " << url << "matching against" 
<< urlFilters;
         #endif
 
         return kamd::utils::debug_and_return(DEBUG_MATCHERS, " -> returning ",
@@ -177,8 +178,8 @@
         });
 
         #if DEBUG_MATCHERS
-        qDebug() << "Type " << "...type..." << "matching against" << 
query.types();
-        qDebug() << "ANY_TYPE_TAG" << ANY_TYPE_TAG;
+        qCDebug(KACTIVITIES_STATS_LOG) << "Type " << "...type..." << "matching 
against" << query.types();
+        qCDebug(KACTIVITIES_STATS_LOG) << "ANY_TYPE_TAG" << ANY_TYPE_TAG;
         #endif
 
         return kamd::utils::debug_and_return(DEBUG_MATCHERS, " -> returning ",
@@ -206,7 +207,7 @@
                                     const QString &activity)
     {
         #if DEBUG_MATCHERS
-        qDebug() << "Resource has been linked: " << agent << resource << 
activity;
+        qCDebug(KACTIVITIES_STATS_LOG) << "Resource has been linked: " << 
agent << resource << activity;
         #endif
 
         // The used resources do not really care about the linked ones
@@ -224,7 +225,7 @@
                                         const QString &activity)
     {
         #if DEBUG_MATCHERS
-        qDebug() << "Resource unlinked: " << agent << resource << activity;
+        qCDebug(KACTIVITIES_STATS_LOG) << "Resource unlinked: " << agent << 
resource << activity;
         #endif
 
         // The used resources do not really care about the linked ones
@@ -380,7 +381,7 @@
 
     for (const auto &activity : activities) {
         for (const auto &agent : agents) {
-            qDebug() << "Unlink " << agent << resource << activity;
+            qCDebug(KACTIVITIES_STATS_LOG) << "Unlink " << agent << resource 
<< activity;
             d->linking->UnlinkResourceFromActivity(agent, resource.toString(),
                                                    activity);
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/resultwatcher.h 
new/kactivities-stats-5.62.0/src/resultwatcher.h
--- old/kactivities-stats-5.61.0/src/resultwatcher.h    2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/src/resultwatcher.h    2019-09-07 
14:32:27.000000000 +0200
@@ -34,6 +34,8 @@
 class ResultWatcherPrivate;
 
 /**
+ * @class KActivities::Stats::ResultWatcher resultwatcher.h 
<KActivities/Stats/ResultWatcher>
+ *
  * A very thin class that sends signals when new resources matching
  * a predefined query are available.
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/terms.cpp 
new/kactivities-stats-5.62.0/src/terms.cpp
--- old/kactivities-stats-5.61.0/src/terms.cpp  2019-08-03 21:30:45.000000000 
+0200
+++ new/kactivities-stats-5.62.0/src/terms.cpp  2019-09-07 14:32:27.000000000 
+0200
@@ -20,6 +20,8 @@
  */
 
 #include "terms.h"
+#include "common/specialvalues.h"
+
 #include <QDebug>
 
 namespace KActivities {
@@ -42,17 +44,19 @@
     }
 
 IMPLEMENT_TERM_CONSTRUCTORS(Type)
-IMPLEMENT_SPECIAL_TERM_VALUE(Type, any, QStringLiteral(":any"))
+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, QStringLiteral(":any"))
-IMPLEMENT_SPECIAL_TERM_VALUE(Agent, global, QStringLiteral(":global"))
-IMPLEMENT_SPECIAL_TERM_VALUE(Agent, current, QStringLiteral(":current"))
+IMPLEMENT_SPECIAL_TERM_VALUE(Agent, any,     ANY_AGENT_TAG)
+IMPLEMENT_SPECIAL_TERM_VALUE(Agent, global,  GLOBAL_AGENT_TAG)
+IMPLEMENT_SPECIAL_TERM_VALUE(Agent, current, CURRENT_AGENT_TAG)
 
 IMPLEMENT_TERM_CONSTRUCTORS(Activity)
-IMPLEMENT_SPECIAL_TERM_VALUE(Activity, any, QStringLiteral(":any"))
-IMPLEMENT_SPECIAL_TERM_VALUE(Activity, global, QStringLiteral(":global"))
-IMPLEMENT_SPECIAL_TERM_VALUE(Activity, current, QStringLiteral(":current"))
+IMPLEMENT_SPECIAL_TERM_VALUE(Activity, any,     ANY_ACTIVITY_TAG)
+IMPLEMENT_SPECIAL_TERM_VALUE(Activity, global,  GLOBAL_ACTIVITY_TAG)
+IMPLEMENT_SPECIAL_TERM_VALUE(Activity, current, CURRENT_ACTIVITY_TAG)
 
 IMPLEMENT_TERM_CONSTRUCTORS(Url)
 IMPLEMENT_SPECIAL_TERM_VALUE(Url, localFile, QStringLiteral("/*"))
@@ -77,7 +81,12 @@
 }
 
 Terms::Date::Date(QDate value)
-    : value(value)
+    : start(value)
+{
+}
+
+Terms::Date::Date(QDate start, QDate end)
+    : start(start), end(end)
 {
 }
 
@@ -92,10 +101,32 @@
     return Date(date.addDays(-1));
 }
 
+Terms::Date Terms::Date::currentWeek()
+{
+    auto start = QDate::currentDate();
+    auto end = start.addDays(-7);
+    return Date(start, end);
+}
+
+Terms::Date Terms::Date::previousWeek()
+{
+    auto start = QDate::currentDate().addDays(-7);
+    auto end = start.addDays(-7);
+    return Date(start, end);
+}
+
 Terms::Date Terms::Date::fromString(QString string)
 {
-    auto date = QDate::fromString(string, Qt::ISODate);
-    return Date(date);
+    auto splitted = string.split(QStringLiteral(","));
+    if (splitted.count() == 2) {
+        // date range case
+        auto start = QDate::fromString(splitted[0], Qt::ISODate);
+        auto end = QDate::fromString(splitted[1], Qt::ISODate);
+        return Date(start, end);
+    } else {
+        auto date = QDate::fromString(string, Qt::ISODate);
+        return Date(date);
+    }
 }
 
 Terms::Url Terms::Url::startsWith(const QString &prefix)
@@ -137,7 +168,8 @@
 
 QDEBUG_TERM_OUT(Limit,    _.value)
 QDEBUG_TERM_OUT(Offset,   _.value)
-QDEBUG_TERM_OUT(Date,     _.value)
+QDEBUG_TERM_OUT(Date,     _.end.isNull() ? _.start.toString(Qt::ISODate) :
+                          _.start.toString(Qt::ISODate) + QStringLiteral(",") 
+ _.end.toString(Qt::ISODate))
 
 #undef QDEBUG_TERM_OUT
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/src/terms.h 
new/kactivities-stats-5.62.0/src/terms.h
--- old/kactivities-stats-5.61.0/src/terms.h    2019-08-03 21:30:45.000000000 
+0200
+++ new/kactivities-stats-5.62.0/src/terms.h    2019-09-07 14:32:27.000000000 
+0200
@@ -38,6 +38,10 @@
 namespace KActivities {
 namespace Stats {
 
+/**
+ * @namespace KActivities::Stats::Terms
+ * Provides enums and strucss to use.for building queries with @c Query.
+ */
 namespace Terms {
     /**
      * Enumerator specifying the ordering in which the
@@ -61,6 +65,8 @@
     };
 
     /**
+     * @struct KActivities::Stats::Terms::Limit terms.h 
<KActivities/Stats/Terms>
+     *
      * How many items do you need?
      */
     struct KACTIVITIESSTATS_EXPORT Limit {
@@ -70,6 +76,8 @@
     };
 
     /**
+     * @struct KActivities::Stats::Terms::Offset terms.h 
<KActivities/Stats/Terms>
+     *
      * How many items to skip?
      * This can be specified only if limit is also set to a finite value.
      */
@@ -79,6 +87,8 @@
     };
 
     /**
+     * @struct KActivities::Stats::Terms::Type terms.h 
<KActivities/Stats/Terms>
+     *
      * Term to filter the resources according to their types
      */
     struct KACTIVITIESSTATS_EXPORT Type {
@@ -86,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<QString> types)
@@ -101,6 +119,8 @@
     };
 
     /**
+     * @struct KActivities::Stats::Terms::Agent terms.h 
<KActivities/Stats/Terms>
+     *
      * Term to filter the resources according the agent (application) which
      * accessed it
      */
@@ -134,6 +154,8 @@
     };
 
     /**
+     * @struct KActivities::Stats::Terms::Activity terms.h 
<KActivities/Stats/Terms>
+     *
      * Term to filter the resources according the activity in which they
      * were accessed
      */
@@ -167,6 +189,8 @@
     };
 
     /**
+     * @struct KActivities::Stats::Terms::Url terms.h <KActivities/Stats/Terms>
+     *
      * Url filtering.
      */
     struct KACTIVITIESSTATS_EXPORT Url {
@@ -205,14 +229,21 @@
     };
 
     /**
+     * @struct KActivities::Stats::Terms::Date terms.h 
<KActivities/Stats/Terms>
+     *
      * On which start access date do you want to filter ?
      */
     struct KACTIVITIESSTATS_EXPORT Date {
         Date(QDate value);
+        Date(QDate start, QDate end);
+
         static Date today();
         static Date yesterday();
+        static Date currentWeek();
+        static Date previousWeek();
         static Date fromString(QString);
-        QDate value;
+
+        QDate start, end;
     };
 
 } // namespace Terms
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kactivities-stats-5.61.0/tests/model/window.cpp 
new/kactivities-stats-5.62.0/tests/model/window.cpp
--- old/kactivities-stats-5.61.0/tests/model/window.cpp 2019-08-03 
21:30:45.000000000 +0200
+++ new/kactivities-stats-5.62.0/tests/model/window.cpp 2019-09-07 
14:32:27.000000000 +0200
@@ -358,7 +358,7 @@
         (
             textDate == QStringLiteral("today")     ? Date::today() :
             textDate == QStringLiteral("yesterday") ? Date::yesterday() :
-                                                      
Date(QDate::fromString(textDate, Qt::ISODate))
+                                                      
Date::fromString(textDate)
         ) |
 
         // And how many items


Reply via email to