Mailcommon

filterlog.h
1 /*
2  SPDX-FileCopyrightText: 2003 Andreas Gungl <[email protected]>
3 
4  SPDX-License-Identifier: GPL-2.0-only
5 */
6 
7 #pragma once
8 
9 #include "mailcommon_export.h"
10 
11 #include <QObject>
12 #include <QStringList>
13 #include <memory>
14 namespace MailCommon
15 {
16 /**
17  * @short KMail Filter Log Collector.
18  *
19  * The filter log helps to collect log information about the
20  * filter process in KMail. It's implemented as singleton,
21  * so it's easy to direct pieces of information to a unique
22  * instance.
23  * It's possible to activate / deactivate logging. All
24  * collected log information can get thrown away, the
25  * next added log entry is the first one until another
26  * clearing.
27  * A signal is emitted whenever a new logentry is added,
28  * when the log was cleared or any log state was changed.
29  *
30  * @author Andreas Gungl <[email protected]>
31  */
32 class MAILCOMMON_EXPORT FilterLog : public QObject
33 {
34  Q_OBJECT
35 
36 public:
37  /**
38  * Destroys the filter log.
39  */
40  ~FilterLog() override;
41 
42  /**
43  * Returns the single global instance of the filter log.
44  */
45  static FilterLog *instance();
46 
47  /**
48  * Describes the type of content that will be logged.
49  */
50  enum ContentType {
51  Meta = 1, ///< Log all meta data.
52  PatternDescription = 2, ///< Log all pattern description.
53  RuleResult = 4, ///< Log all rule matching results.
54  PatternResult = 8, ///< Log all pattern matching results.
55  AppliedAction = 16 ///< Log all applied actions.
56  };
57 
58  /**
59  * Sets whether the filter log is currently @p active.
60  */
61  void setLogging(bool active);
62 
63  /**
64  * Returns whether the filter log is currently active.
65  */
66  bool isLogging() const;
67 
68  /**
69  * Sets the maximum @p size of the log in bytes.
70  */
71  void setMaxLogSize(long size = -1);
72 
73  /**
74  * Returns the maximum size of the log in bytes.
75  */
76  long maxLogSize() const;
77 
78  /**
79  * Sets whether a given content @p type will be @p enabled for logging.
80  */
81  void setContentTypeEnabled(ContentType type, bool enabled);
82 
83  /**
84  * Returns whether the given content @p type is enabled for logging.
85  */
86  bool isContentTypeEnabled(ContentType type) const;
87 
88  /**
89  * Adds the given log @p entry under the given content @p type to the log.
90  */
91  void add(const QString &entry, ContentType type);
92 
93  /**
94  * Adds a separator line to the log.
95  */
96  void addSeparator();
97 
98  /**
99  * Clears the log.
100  */
101  void clear();
102 
103  /**
104  * Returns the list of log entries.
105  */
106  QStringList logEntries() const;
107 
108  /**
109  * Saves the log to the file with the given @p fileName.
110  *
111  * @return @c true on success or @c false on failure.
112  */
113  bool saveToFile(const QString &fileName) const;
114 
115  /**
116  * Returns an escaped version of the log which can be used
117  * in a HTML document.
118  */
119  static QString recode(const QString &plain);
120 
121  /**
122  * Dumps the log to console. Used for debugging.
123  */
124  void dump();
125 
126 Q_SIGNALS:
127  /**
128  * This signal is emitted whenever a new @p entry has been added to the log.
129  */
130  void logEntryAdded(const QString &entry);
131 
132  /**
133  * This signal is emitted whenever the log has shrunk.
134  */
135  void logShrinked();
136 
137  /**
138  * This signal is emitted whenever the activity of the filter log has been changed.
139  */
140  void logStateChanged();
141 
142 private:
143  //@cond PRIVATE
144  FilterLog();
145 
146  class FilterLogPrivate;
147  std::unique_ptr<FilterLogPrivate> const d;
148  //@endcond
149 };
150 }
KMail Filter Log Collector.
Definition: filterlog.h:32
ContentType
Describes the type of content that will be logged.
Definition: filterlog.h:50
The filter dialog.
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Sat Oct 1 2022 04:00:53 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.