diff options
| author | Andre Heinecke <[email protected]> | 2016-05-10 14:43:36 +0000 | 
|---|---|---|
| committer | Andre Heinecke <[email protected]> | 2016-05-10 14:43:36 +0000 | 
| commit | 34e5c5b33de3608bedc2826be27a06e6eec0ea44 (patch) | |
| tree | b04ce687c5dcb72d84af230e05335da0213bf6de /lang/qt/src/hierarchicalkeylistjob.h | |
| parent | Allow cc to detect missing cases in a switch. (diff) | |
| parent | Qt / Cpp: Fix make dist (diff) | |
| download | gpgme-34e5c5b33de3608bedc2826be27a06e6eec0ea44.tar.gz gpgme-34e5c5b33de3608bedc2826be27a06e6eec0ea44.zip  | |
Merge branch 'gpgmepp'
Diffstat (limited to 'lang/qt/src/hierarchicalkeylistjob.h')
| -rw-r--r-- | lang/qt/src/hierarchicalkeylistjob.h | 125 | 
1 files changed, 125 insertions, 0 deletions
diff --git a/lang/qt/src/hierarchicalkeylistjob.h b/lang/qt/src/hierarchicalkeylistjob.h new file mode 100644 index 00000000..2ec187d2 --- /dev/null +++ b/lang/qt/src/hierarchicalkeylistjob.h @@ -0,0 +1,125 @@ +/* +    hierarchicalkeylistjob.h + +    This file is part of qgpgme, the Qt API binding for gpgme +    Copyright (c) 2004 Klarälvdalens Datakonsult AB +    Copyright (c) 2016 Intevation GmbH + +    QGpgME is free software; you can redistribute it and/or +    modify it under the terms of the GNU General Public License as +    published by the Free Software Foundation; either version 2 of the +    License, or (at your option) any later version. + +    QGpgME 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 +    General Public License for more details. + +    You should have received a copy of the GNU General Public License +    along with this program; if not, write to the Free Software +    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +    In addition, as a special exception, the copyright holders give +    permission to link the code of this program with any edition of +    the Qt library by Trolltech AS, Norway (or with modified versions +    of Qt that use the same license as Qt), and distribute linked +    combinations including the two.  You must obey the GNU General +    Public License in all respects for all of the code used other than +    Qt.  If you modify this file, you may extend this exception to +    your version of the file, but you are not obligated to do so.  If +    you do not wish to do so, delete this exception statement from +    your version. +*/ + +#ifndef __KLEO_HIERARCHICALKEYLISTJOB_H__ +#define __KLEO_HIERARCHICALKEYLISTJOB_H__ + +#include "qgpgme_export.h" +#include "keylistjob.h" +#include "cryptobackend.h" + +#ifdef BUILDING_QGPGME +# include "keylistresult.h" +#else +#include <gpgme++/keylistresult.h> +#endif + +#include <QPointer> + +#include <set> + +namespace GpgME +{ +class Error; +class Key; +} + +namespace QGpgME +{ +class KeyListJob; +} + +namespace QGpgME +{ + +/** +   @short A convenience job that additionally fetches all available issuers. + +   To use a HierarchicalKeyListJob, pass it a CryptoBackend +   implementation, connect the progress() and result() signals to +   suitable slots and then start the keylisting with a call to +   start(). This call might fail, in which case the +   HierarchicalKeyListJob instance will have scheduled it's own +   destruction with a call to QObject::deleteLater(). + +   After result() is emitted, the HierarchicalKeyListJob will +   schedule its own destruction by calling QObject::deleteLater(). +*/ +class QGPGME_EXPORT HierarchicalKeyListJob : public KeyListJob +{ +    Q_OBJECT +public: +    explicit HierarchicalKeyListJob(const Protocol *protocol, +                                    bool remote = false, bool includeSigs = false, +                                    bool validating = false); +    ~HierarchicalKeyListJob(); + +    /** +       Starts the keylist operation. \a patterns is a list of patterns +       used to restrict the list of keys returned. Empty patterns are +       ignored. \a patterns must not be empty or contain only empty +       patterns; use the normal KeyListJob for a full listing. + +       The \a secretOnly parameter is ignored by +       HierarchicalKeyListJob and must be set to false. +    */ +    GpgME::Error start(const QStringList &patterns, bool secretOnly = false) Q_DECL_OVERRIDE; + +    GpgME::KeyListResult exec(const QStringList &patterns, bool secretOnly, +                              std::vector<GpgME::Key> &keys) Q_DECL_OVERRIDE; + +private Q_SLOTS: +    void slotResult(const GpgME::KeyListResult &); +    void slotNextKey(const GpgME::Key &key); +    /* from Job */ +    void slotCancel() Q_DECL_OVERRIDE; + +private: +    GpgME::Error startAJob(); + +private: +    const Protocol *const mProtocol; +    const bool mRemote; +    const bool mIncludeSigs; +    const bool mValidating; +    bool mTruncated; +    std::set<QString> mSentSet; // keys already sent (prevent duplicates even if the backend should return them) +    std::set<QString> mScheduledSet; // keys already scheduled (by starting a job for them) +    std::set<QString> mNextSet; // keys to schedule for the next iteraton +    GpgME::KeyListResult mIntermediateResult; +    QPointer<KeyListJob> mJob; +}; + +} + +#endif // __KLEO_HIERARCHICALKEYLISTJOB_H__  | 
