Akonadi

cachepolicy.h
1 /*
2  SPDX-FileCopyrightText: 2008 Volker Krause <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "akonadicore_export.h"
10 
11 #include <QSharedDataPointer>
12 #include <QStringList>
13 
14 namespace Akonadi
15 {
16 class CachePolicyPrivate;
17 
18 /**
19  * @short Represents the caching policy for a collection.
20  *
21  * There is one cache policy per collection. It can either specify that all
22  * properties of the policy of the parent collection will be inherited (the
23  * default) or specify the following values:
24  *
25  * - The item parts that should be permanently kept locally and are downloaded
26  * during a collection sync (e.g. full mail vs. just the headers).
27  * - A minimum time for which non-permanently cached item parts have to be kept
28  * (0 - infinity).
29  * - Whether or not a collection sync is triggered on demand, i.e. as soon
30  * as it is accessed by a client.
31  * - An optional time interval for regular collection sync (aka interval
32  * mail check).
33  *
34  * Syncing means fetching updates from the Akonadi database. The cache policy
35  * does not affect updates of the Akonadi database from the backend, since
36  * backend updates will normally immediately trigger the resource to update the
37  * Akonadi database.
38  *
39  * The cache policy applies only to reading from the collection. Writing to the
40  * collection is independent of cache policy - all updates are written to the
41  * backend as soon as the resource can schedule this.
42  *
43  * @code
44  *
45  * Akonadi::CachePolicy policy;
46  * policy.setCacheTimeout( 30 );
47  * policy.setIntervalCheckTime( 20 );
48  *
49  * Akonadi::Collection collection = ...
50  * collection.setCachePolicy( policy );
51  *
52  * @endcode
53  *
54  * @todo Do we also need a size limit for the cache as well?
55  * @todo on a POP3 account, is should not be possible to change locally cached parts, find a solution for that
56  *
57  * @author Volker Krause <[email protected]>
58  */
59 class AKONADICORE_EXPORT CachePolicy
60 {
61 public:
62  /**
63  * Creates an empty cache policy.
64  */
65  CachePolicy();
66 
67  /**
68  * Creates a cache policy from an @p other cache policy.
69  */
70  CachePolicy(const CachePolicy &other);
71 
72  /**
73  * Destroys the cache policy.
74  */
75  ~CachePolicy();
76 
77  /**
78  * Returns whether it inherits cache policy from the parent collection.
79  */
80  bool inheritFromParent() const;
81 
82  /**
83  * Sets whether the cache policy should be inherited from the parent collection.
84  */
85  void setInheritFromParent(bool inherit);
86 
87  /**
88  * Returns the parts to permanently cache locally.
89  */
90  Q_REQUIRED_RESULT QStringList localParts() const;
91 
92  /**
93  * Specifies the parts to permanently cache locally.
94  */
95  void setLocalParts(const QStringList &parts);
96 
97  /**
98  * Returns the cache timeout for non-permanently cached parts in minutes;
99  * -1 means indefinitely.
100  */
101  Q_REQUIRED_RESULT int cacheTimeout() const;
102 
103  /**
104  * Sets cache timeout for non-permanently cached parts.
105  * @param timeout Timeout in minutes, -1 for indefinitely.
106  */
107  void setCacheTimeout(int timeout);
108 
109  /**
110  * Returns the interval check time in minutes, -1 for never.
111  */
112  Q_REQUIRED_RESULT int intervalCheckTime() const;
113 
114  /**
115  * Sets interval check time.
116  * @param time Check time interval in minutes, -1 for never.
117  */
118  void setIntervalCheckTime(int time);
119 
120  /**
121  * Returns whether the collection will be synced automatically when necessary,
122  * i.e. as soon as it is accessed by a client.
123  */
124  Q_REQUIRED_RESULT bool syncOnDemand() const;
125 
126  /**
127  * Sets whether the collection shall be synced automatically when necessary,
128  * i.e. as soon as it is accessed by a client.
129  * @param enable If @c true the collection is synced.
130  */
131  void setSyncOnDemand(bool enable);
132 
133  /**
134  * @internal.
135  * @param other other cache policy
136  */
137  CachePolicy &operator=(const CachePolicy &other);
138 
139  /**
140  * @internal
141  * @param other other cache policy
142  */
143  Q_REQUIRED_RESULT bool operator==(const CachePolicy &other) const;
144 
145 private:
146  /// @cond PRIVATE
148  /// @endcond
149 };
150 
151 }
152 
153 /**
154  * Allows a cache policy to be output for debugging purposes.
155  */
156 AKONADICORE_EXPORT QDebug operator<<(QDebug, const Akonadi::CachePolicy &);
157 
QDataStream & operator<<(QDataStream &out, const KDateTime &dateTime)
Represents the caching policy for a collection.
Definition: cachepolicy.h:59
Helper integration between Akonadi and Qt.
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Thu Jun 30 2022 03:51:45 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.