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