PlasmaActivitiesStats

terms.cpp
1/*
2 SPDX-FileCopyrightText: 2015, 2016 Ivan Cukic <ivan.cukic(at)kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#include "terms.h"
8#include "common/specialvalues.h"
9
10#include <QDebug>
11
12namespace KActivities
13{
14namespace Stats
15{
16// Term classes
17#define IMPLEMENT_TERM_CONSTRUCTORS(TYPE) \
18 Terms::TYPE::TYPE(QStringList values) \
19 : values(std::move(values)) \
20 { \
21 } \
22 \
23 Terms::TYPE::TYPE(QString value) \
24 : values(QStringList() << std::move(value)) \
25 { \
26 }
27
28#define IMPLEMENT_SPECIAL_TERM_VALUE(TYPE, VALUE_NAME, VALUE) \
29 Terms::TYPE Terms::TYPE::VALUE_NAME() \
30 { \
31 return Terms::TYPE(VALUE); \
32 }
33
34IMPLEMENT_TERM_CONSTRUCTORS(Type)
35IMPLEMENT_SPECIAL_TERM_VALUE(Type, any, ANY_TYPE_TAG)
36IMPLEMENT_SPECIAL_TERM_VALUE(Type, files, FILES_TYPE_TAG)
37IMPLEMENT_SPECIAL_TERM_VALUE(Type, directories, DIRECTORIES_TYPE_TAG)
38
39IMPLEMENT_TERM_CONSTRUCTORS(Agent)
40IMPLEMENT_SPECIAL_TERM_VALUE(Agent, any, ANY_AGENT_TAG)
41IMPLEMENT_SPECIAL_TERM_VALUE(Agent, global, GLOBAL_AGENT_TAG)
42IMPLEMENT_SPECIAL_TERM_VALUE(Agent, current, CURRENT_AGENT_TAG)
43
44IMPLEMENT_TERM_CONSTRUCTORS(Activity)
45IMPLEMENT_SPECIAL_TERM_VALUE(Activity, any, ANY_ACTIVITY_TAG)
46IMPLEMENT_SPECIAL_TERM_VALUE(Activity, global, GLOBAL_ACTIVITY_TAG)
47IMPLEMENT_SPECIAL_TERM_VALUE(Activity, current, CURRENT_ACTIVITY_TAG)
48
49IMPLEMENT_TERM_CONSTRUCTORS(Url)
50IMPLEMENT_SPECIAL_TERM_VALUE(Url, localFile, QStringLiteral("/*"))
51IMPLEMENT_SPECIAL_TERM_VALUE(Url,
52 file,
53 QStringList() << QStringLiteral("/*") << QStringLiteral("smb:*") << QStringLiteral("fish:*") << QStringLiteral("sftp:*")
54 << QStringLiteral("ftp:*"))
55
56#undef IMPLEMENT_TERM_CONSTRUCTORS
57#undef IMPLEMENT_SPECIAL_TERM_VALUE
58
59Terms::Limit::Limit(int value)
60 : value(value)
61{
62}
63
64Terms::Offset::Offset(int value)
65 : value(value)
66{
67}
68
69Terms::Date::Date(QDate value)
70 : start(std::move(value))
71{
72}
73
74Terms::Date::Date(QDate start, QDate end)
75 : start(std::move(start))
76 , end(std::move(end))
77{
78}
79
80Terms::Date Terms::Date::today()
81{
82 return Date(QDate::currentDate());
83}
84
85Terms::Date Terms::Date::yesterday()
86{
87 auto date = QDate::currentDate();
88 return Date(date.addDays(-1));
89}
90
91Terms::Date Terms::Date::currentWeek()
92{
94 auto end = start.addDays(-7);
95 return Date(start, end);
96}
97
98Terms::Date Terms::Date::previousWeek()
99{
100 auto start = QDate::currentDate().addDays(-7);
101 auto end = start.addDays(-7);
102 return Date(start, end);
103}
104
105Terms::Date Terms::Date::fromString(QString string)
106{
107 auto splitted = string.split(QStringLiteral(","));
108 if (splitted.count() == 2) {
109 // date range case
110 auto start = QDate::fromString(splitted[0], Qt::ISODate);
111 auto end = QDate::fromString(splitted[1], Qt::ISODate);
112 return Date(start, end);
113 } else {
114 auto date = QDate::fromString(string, Qt::ISODate);
115 return Date(date);
116 }
117}
118
120{
121 return Url(prefix + QStringLiteral("*"));
122}
123
125{
126 return Url(QStringLiteral("*") + infix + QStringLiteral("*"));
127}
128
129} // namespace Stats
130} // namespace KActivities
131
132namespace KAStats = KActivities::Stats;
133
134#define QDEBUG_TERM_OUT(TYPE, OUT) \
135 QDebug operator<<(QDebug dbg, const KAStats::Terms::TYPE &_) \
136 { \
137 using namespace KAStats::Terms; \
138 dbg.nospace() << #TYPE << ": " << (OUT); \
139 return dbg; \
140 }
141
142QDEBUG_TERM_OUT(Order,
143 _ == HighScoredFirst ? "HighScore"
144 : _ == RecentlyUsedFirst ? "RecentlyUsed"
145 : _ == RecentlyCreatedFirst ? "RecentlyCreated"
146 : "Alphabetical")
147
148QDEBUG_TERM_OUT(Select, _ == LinkedResources ? "LinkedResources" : _ == UsedResources ? "UsedResources" : "AllResources")
149
150QDEBUG_TERM_OUT(Type, _.values)
151QDEBUG_TERM_OUT(Agent, _.values)
152QDEBUG_TERM_OUT(Activity, _.values)
153QDEBUG_TERM_OUT(Url, _.values)
154
155QDEBUG_TERM_OUT(Limit, _.value)
156QDEBUG_TERM_OUT(Offset, _.value)
157QDEBUG_TERM_OUT(Date, _.end.isNull() ? _.start.toString(Qt::ISODate) : _.start.toString(Qt::ISODate) + QStringLiteral(",") + _.end.toString(Qt::ISODate))
158
159#undef QDEBUG_TERM_OUT
Q_SCRIPTABLE QString start(QString train="")
KIOCORE_EXPORT CopyJob * move(const QList< QUrl > &src, const QUrl &dest, JobFlags flags=DefaultFlags)
QDate addDays(qint64 ndays) const const
QDate currentDate()
QDate fromString(QStringView string, QStringView format, QCalendar cal)
Term to filter the resources according the activity in which they were accessed.
Definition terms.h:139
Term to filter the resources according the agent (application) which accessed it.
Definition terms.h:106
Term to filter the resources according to their types.
Definition terms.h:75
static Url startsWith(const QString &prefix)
Show only resources that start with the specified prefix.
Definition terms.cpp:119
static Url contains(const QString &infix)
Show resources that contain the specified infix.
Definition terms.cpp:124
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Apr 4 2025 12:01:22 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.