Akonadi

partfetcher.h
1/*
2 SPDX-FileCopyrightText: 2009 Stephen Kelly <steveire@gmail.com>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#pragma once
8
9#include <KJob>
10
11#include "akonadicore_export.h"
12
13#include <memory>
14
15class QModelIndex;
16
17namespace Akonadi
18{
19class Item;
20class PartFetcherPrivate;
21
22/**
23 * @short Convenience class for getting payload parts from an Akonadi Model.
24 *
25 * This class can be used to retrieve individual payload parts from an EntityTreeModel,
26 * and fetch them asynchronously from the Akonadi storage if necessary.
27 *
28 * The requested part is emitted though the partFetched signal.
29 *
30 * Example:
31 *
32 * @code
33 *
34 * const QModelIndex index = view->selectionModel()->currentIndex();
35 *
36 * PartFetcher *fetcher = new PartFetcher( index, Akonadi::MessagePart::Envelope );
37 * connect( fetcher, SIGNAL(result(KJob*)), SLOT(fetchResult(KJob*)) );
38 * fetcher->start();
39 *
40 * ...
41 *
42 * MyClass::fetchResult( KJob *job )
43 * {
44 * if ( job->error() ) {
45 * qDebug() << job->errorText();
46 * return;
47 * }
48 *
49 * PartFetcher *fetcher = qobject_cast<PartFetcher*>( job );
50 *
51 * const Item item = fetcher->item();
52 * // do something with the item
53 * }
54 *
55 * @endcode
56 *
57 * @author Stephen Kelly <steveire@gmail.com>
58 * @since 4.4
59 */
60class AKONADICORE_EXPORT PartFetcher : public KJob
61{
63
64public:
65 /**
66 * Creates a new part fetcher.
67 *
68 * @param index The index of the item to fetch the part from.
69 * @param partName The name of the payload part to fetch.
70 * @param parent The parent object.
71 */
72 PartFetcher(const QModelIndex &index, const QByteArray &partName, QObject *parent = nullptr);
73
74 /**
75 * Destroys the part fetcher.
76 */
77 ~PartFetcher() override;
78
79 /**
80 * Starts the fetch operation.
81 */
82 void start() override;
83
84 /**
85 * Returns the index of the item the part was fetched from.
86 */
87 QModelIndex index() const;
88
89 /**
90 * Returns the name of the part that has been fetched.
91 */
92 QByteArray partName() const;
93
94 /**
95 * Returns the item that contains the fetched payload part.
96 */
97 Item item() const;
98
99private:
100 /// @cond PRIVATE
101 Q_DECLARE_PRIVATE(Akonadi::PartFetcher)
102 std::unique_ptr<PartFetcherPrivate> const d_ptr;
103
104 /// @endcond
105};
106
107}
Represents a PIM item stored in Akonadi storage.
Definition item.h:100
Convenience class for getting payload parts from an Akonadi Model.
Definition partfetcher.h:61
Item item() const
Returns the item that contains the fetched payload part.
~PartFetcher() override
Destroys the part fetcher.
PartFetcher(const QModelIndex &index, const QByteArray &partName, QObject *parent=nullptr)
Creates a new part fetcher.
QByteArray partName() const
Returns the name of the part that has been fetched.
QModelIndex index() const
Returns the index of the item the part was fetched from.
KJob(QObject *parent=nullptr)
Q_SCRIPTABLE Q_NOREPLY void start()
Helper integration between Akonadi and Qt.
QObject(QObject *parent)
Q_OBJECTQ_OBJECT
QObject * parent() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 24 2025 11:49:57 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.