This file is indexed.

/usr/include/akonadi/itemmodifyjob.h is in kdepimlibs5-dev 4:4.13.0-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/*
    Copyright (c) 2006 - 2007 Volker Krause <vkrause@kde.org>

    This library is free software; you can redistribute it and/or modify it
    under the terms of the GNU Library General Public License as published by
    the Free Software Foundation; either version 2 of the License, or (at your
    option) any later version.

    This library is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
    License for more details.

    You should have received a copy of the GNU Library General Public License
    along with this library; see the file COPYING.LIB.  If not, write to the
    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
*/

#ifndef AKONADI_ITEMMODIFYJOB_H
#define AKONADI_ITEMMODIFYJOB_H

#include "akonadi_export.h"

#include <akonadi/item.h>
#include <akonadi/job.h>

namespace Akonadi {

class Collection;
class ItemModifyJobPrivate;

/**
 * @short Job that modifies an existing item in the Akonadi storage.
 *
 * This job is used to writing back items to the Akonadi storage, after
 * the user has changed them in any way.
 * For performance reasons either the full item (including the full payload)
 * can written back or only the meta data of the item.
 *
 * Example:
 *
 * @code
 *
 * // Fetch item with unique id 125
 * Akonadi::ItemFetchJob *fetchJob = new Akonadi::ItemFetchJob( Akonadi::Item( 125 ) );
 * connect( fetchJob, SIGNAL( result( KJob* ) ), SLOT( fetchFinished( KJob* ) ) );
 *
 * ...
 *
 * MyClass::fetchFinished( KJob *job )
 * {
 *   if ( job->error() )
 *     return;
 *
 *   Akonadi::ItemFetchJob *fetchJob = qobject_cast<Akonadi::ItemFetchJob*>( job );
 *
 *   Akonadi::Item item = fetchJob->items().first();
 *
 *   // Set a custom flag
 *   item.setFlag( "\GotIt" );
 *
 *   // Store back modified item
 *   Akonadi::ItemModifyJob *modifyJob = new Akonadi::ItemModifyJob( item );
 *   connect( modifyJob, SIGNAL( result( KJob* ) ), SLOT( modifyFinished( KJob* ) ) );
 * }
 *
 * MyClass::modifyFinished( KJob *job )
 * {
 *   if ( job->error() )
 *     qDebug() << "Error occurred";
 *   else
 *     qDebug() << "Item modified successfully";
 * }
 *
 * @endcode
 *
 * <h3>Conflict Resolution</h3>

 * When the job is executed, a check is made to ensure that the Item contained
 * in the job is not older than the version of the Item already held in the
 * Akonadi database. If it is older, a conflict resolution dialog is displayed
 * for the user to choose which version of the Item to use, unless
 * disableAutomaticConflictHandling() has been called to disable the dialog, or
 * disableRevisionCheck() has been called to disable version checking
 * altogether.
 *
 * The item version is checked by comparing the Item::revision() values in the
 * job and in the database. To ensure that two successive ItemModifyJobs for
 * the same Item work correctly, the revision number of the Item supplied to
 * the second ItemModifyJob should be set equal to the Item's revision number
 * on completion of the first ItemModifyJob. This can be obtained by, for
 * example, calling item().revision() in the job's result slot.
 *
 * @author Volker Krause <vkrause@kde.org>
 */
class AKONADI_EXPORT ItemModifyJob : public Job
{
  friend class ResourceBase;

  Q_OBJECT

  public:
    /**
     * Creates a new item modify job.
     *
     * @param item The modified item object to store.
     * @param parent The parent object.
     */
    explicit ItemModifyJob( const Item &item, QObject *parent = 0 );

    /**
     * Creates a new item modify job for bulk modifications.
     *
     * Using this is different from running a modification job per item.
     * Use this when applying the same change to a set of items, such as a
     * mass-change of item flags, not if you just want to store a bunch of
     * randomly modified items.
     *
     * Currently the following modifications are supported:
     * - flag changes
     *
     * @note Since this does not do payload modifications, it implies
     *       setIgnorePayload( true ) and disableRevisionCheck().
     * @param items The list of items to modify, must not be empty.
     * @since 4.6
     */
    explicit ItemModifyJob( const Item::List &items, QObject *parent = 0 );

    /**
     * Destroys the item modify job.
     */
    virtual ~ItemModifyJob();

    /**
     * Sets whether the payload of the modified item shall be
     * omitted from transmission to the Akonadi storage.
     * The default is @c false, however it can be set for
     * performance reasons.
     * @param ignore ignores payload if set as @c true
     */
    void setIgnorePayload( bool ignore );

    /**
     * Returns whether the payload of the modified item shall be
     * omitted from transmission to the Akonadi storage.
     */
    bool ignorePayload() const;

    /**
     * Sets whether the GID shall be updated either from the gid parameter or
     * by extracting it from the payload.
     * The default is @c false to avoid unecessarily update the GID,
     * as it should never change once set, and the ItemCreateJob already sets it.
     * @param update update the GID if set as @c true
     *
     * @note If disabled the GID will not be updated, but still be used for identification of the item.
     * @since 4.12
     */
    void setUpdateGid( bool update );

    /**
     * Returns wheter the GID should be updated.
     * @since 4.12
     */
    bool updateGid() const;

    /**
     * Disables the check of the revision number.
     *
     * @note If disabled, no conflict detection is available.
     */
    void disableRevisionCheck();

    /**
     * Returns the modified and stored item including the changed revision number.
     *
     * @note Use this method only when using the single item constructor.
     */
    Item item() const;

    /**
     * Returns the modified and stored items including the changed revision number.
     *
     * @since 4.6
     */
    Item::List items() const;

    /**
     * Disables the automatic handling of conflicts.
     *
     * By default the item modify job will bring up a dialog to resolve
     * a conflict that might happen when modifying an item.
     * Calling this method will avoid that and the job returns with an
     * error in case of a conflict.
     *
     * @since 4.6
     */
    void disableAutomaticConflictHandling();

  protected:
    virtual void doStart();
    virtual void doHandleResponse( const QByteArray &tag, const QByteArray &data );

  private:
    //@cond PRIVATE
    Q_DECLARE_PRIVATE( ItemModifyJob )

    Q_PRIVATE_SLOT( d_func(), void conflictResolved() )
    Q_PRIVATE_SLOT( d_func(), void conflictResolveError( const QString& ) )
    //@endcond
};

}

#endif