1/*
2 Copyright (c) 2011 Christian Mollekopf <chrigi_1@fastmail.fm>
3
4 This library is free software; you can redistribute it and/or modify it
5 under the terms of the GNU Library General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or (at your
7 option) any later version.
8
9 This library is distributed in the hope that it will be useful, but WITHOUT
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12 License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to the
16 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17 02110-1301, USA.
18 */
19
20#ifndef AKONADI_ENTITYDELETEDATTRIBUTE_H
21#define AKONADI_ENTITYDELETEDATTRIBUTE_H
22
23#include "akonadi_export.h"
24
25#include <akonadi/attribute.h>
26
27#include <akonadi/collection.h>
28
29namespace Akonadi
30{
31
32/**
33 * @short An Attribute that marks that an entity was marked as deleted
34 *
35 * This class represents the attribute of all hidden items. The hidden
36 * items shouldn't be displayed in UI applications (unless in some kind
37 * of "debug" mode).
38 *
39 * Example:
40 *
41 * @code
42 *
43 * @endcode
44 *
45 * @author Christian Mollekopf <chrigi_1@fastmail.fm>
46 * @see Akonadi::Attribute
47 * @since 4.8
48 */
49class AKONADI_EXPORT EntityDeletedAttribute : public Attribute
50{
51public:
52 /**
53 * Creates a new entity deleted attribute.
54 */
55 EntityDeletedAttribute();
56
57 /**
58 * Destroys the entity deleted attribute.
59 */
60 ~EntityDeletedAttribute();
61 /**
62 * Sets the collection used to restore items which have been moved to trash using a TrashJob
63 * If the Resource is set on the collection, the resource root will be used as fallback during the restore operation.
64 */
65 void setRestoreCollection(const Collection &col);
66
67 /**
68 * Returns the original collection of an item that has been moved to trash using a TrashJob
69 */
70 Collection restoreCollection() const;
71
72 /**
73 * Returns the resource of the restoreCollection
74 */
75 QString restoreResource() const;
76
77 /**
78 * Reimplemented from Attribute
79 */
80 QByteArray type() const;
81
82 /**
83 * Reimplemented from Attribute
84 */
85 EntityDeletedAttribute *clone() const;
86
87 /**
88 * Reimplemented from Attribute
89 */
90 QByteArray serialized() const;
91
92 /**
93 * Reimplemented from Attribute
94 */
95 void deserialize(const QByteArray &data);
96
97private:
98 //@cond PRIVATE
99 class EntityDeletedAttributePrivate;
100 EntityDeletedAttributePrivate *const d_ptr;
101 Q_DECLARE_PRIVATE(EntityDeletedAttribute)
102 //@endcond
103};
104
105}
106
107#endif
108