diff --git a/src/kleo/keyfiltermanager.h b/src/kleo/keyfiltermanager.h index 9955e595d..f1f360978 100644 --- a/src/kleo/keyfiltermanager.h +++ b/src/kleo/keyfiltermanager.h @@ -1,80 +1,80 @@ /* keyfiltermanager.h This file is part of libkleopatra, the KDE keymanagement library SPDX-FileCopyrightText: 2004 Klarälvdalens Datakonsult AB SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include "kleo_export.h" #include -#include +#include #include #include #include namespace GpgME { class Key; } class QAbstractItemModel; class QModelIndex; class QFont; class QColor; class QIcon; namespace Kleo { class KLEO_EXPORT KeyFilterManager : public QObject { Q_OBJECT public: enum ModelRoles { FilterIdRole = Qt::UserRole, FilterMatchContextsRole, }; protected: explicit KeyFilterManager(QObject *parent = nullptr); ~KeyFilterManager() override; public: static KeyFilterManager *instance(); /** * Adds the rule that keys must match @p protocol to all filters. */ void alwaysFilterByProtocol(GpgME::Protocol protocol); const std::shared_ptr &filterMatching(const GpgME::Key &key, KeyFilter::MatchContexts contexts) const; std::vector> filtersMatching(const GpgME::Key &key, KeyFilter::MatchContexts contexts) const; QAbstractItemModel *model() const; const std::shared_ptr &keyFilterByID(const QString &id) const; const std::shared_ptr &fromModelIndex(const QModelIndex &mi) const; QModelIndex toModelIndex(const std::shared_ptr &kf) const; void reload(); QFont font(const GpgME::Key &key, const QFont &baseFont) const; QColor bgColor(const GpgME::Key &key) const; QColor fgColor(const GpgME::Key &key) const; QIcon icon(const GpgME::Key &key) const; class Private; private: std::unique_ptr d; static KeyFilterManager *mSelf; }; } diff --git a/src/models/keylistmodel.h b/src/models/keylistmodel.h index d36fcd4c5..326c827e7 100644 --- a/src/models/keylistmodel.h +++ b/src/models/keylistmodel.h @@ -1,132 +1,133 @@ /* -*- mode: c++; c-basic-offset:4 -*- models/keylistmodel.h This file is part of libkleopatra, the KDE keymanagement library SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB SPDX-FileCopyrightText: 2021 g10 Code GmbH SPDX-FileContributor: Ingo Klöcker SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include #include "kleo_export.h" #include "keylist.h" #include "keylistmodelinterface.h" + #include #include namespace GpgME { class Key; } namespace Kleo { class KLEO_EXPORT AbstractKeyListModel : public QAbstractItemModel, public KeyListModelInterface { Q_OBJECT public: enum ItemType { // clang-format off Keys = 0x01, Groups = 0x02, All = Keys | Groups, // clang-format on }; Q_DECLARE_FLAGS(ItemTypes, ItemType) explicit AbstractKeyListModel(QObject *parent = nullptr); ~AbstractKeyListModel() override; static AbstractKeyListModel *createFlatKeyListModel(QObject *parent = nullptr); static AbstractKeyListModel *createHierarchicalKeyListModel(QObject *parent = nullptr); GpgME::Key key(const QModelIndex &idx) const override; std::vector keys(const QList &indexes) const override; KeyGroup group(const QModelIndex &idx) const override; using QAbstractItemModel::index; QModelIndex index(const GpgME::Key &key) const override; QModelIndex index(const GpgME::Key &key, int col) const; QList indexes(const std::vector &keys) const override; QModelIndex index(const KeyGroup &group) const override; QModelIndex index(const KeyGroup &group, int col) const; Q_SIGNALS: void rowAboutToBeMoved(const QModelIndex &old_parent, int old_row); void rowMoved(const QModelIndex &new_parent, int new_row); public Q_SLOTS: void setKeys(const std::vector &keys); /* Set this to set all or only secret keys from the keycache. */ void useKeyCache(bool value, Kleo::KeyList::Options options); QModelIndex addKey(const GpgME::Key &key); QList addKeys(const std::vector &keys); void removeKey(const GpgME::Key &key); void setGroups(const std::vector &groups); QModelIndex addGroup(const Kleo::KeyGroup &group); bool removeGroup(const Kleo::KeyGroup &group); void clear(Kleo::AbstractKeyListModel::ItemTypes types = All); public: int columnCount(const QModelIndex &pidx) const override; QVariant headerData(int section, Qt::Orientation o, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; /** * defines which information is displayed in tooltips * see Kleo::Formatting::ToolTipOption */ int toolTipOptions() const; void setToolTipOptions(int opts); /** * Set the keys to use for KeyListModelInterface::Remark column * to obtain remarks from this keys signature notations. * Needs at least GpgME 1.14 to work properly. Remarks are * joined by a semicolon and a space. */ void setRemarkKeys(const std::vector &remarkKeys); std::vector remarkKeys() const; protected: bool modelResetInProgress(); private: QVariant data(const GpgME::Key &key, int column, int role) const; QVariant data(const KeyGroup &group, int column, int role) const; virtual GpgME::Key doMapToKey(const QModelIndex &index) const = 0; virtual QModelIndex doMapFromKey(const GpgME::Key &key, int column) const = 0; virtual QList doAddKeys(const std::vector &keys) = 0; virtual void doRemoveKey(const GpgME::Key &key) = 0; virtual KeyGroup doMapToGroup(const QModelIndex &index) const = 0; virtual QModelIndex doMapFromGroup(const KeyGroup &group, int column) const = 0; virtual void doSetGroups(const std::vector &groups) = 0; virtual QModelIndex doAddGroup(const KeyGroup &group) = 0; virtual bool doSetGroupData(const QModelIndex &index, const KeyGroup &group) = 0; virtual bool doRemoveGroup(const KeyGroup &group) = 0; virtual void doClear(ItemTypes types) = 0; private: class Private; QScopedPointer const d; }; } Q_DECLARE_OPERATORS_FOR_FLAGS(Kleo::AbstractKeyListModel::ItemTypes) diff --git a/src/ui/keyselectioncombo.h b/src/ui/keyselectioncombo.h index 9c0488b35..4c52a1dc4 100644 --- a/src/ui/keyselectioncombo.h +++ b/src/ui/keyselectioncombo.h @@ -1,72 +1,73 @@ /* This file is part of Kleopatra, the KDE keymanager SPDX-FileCopyrightText: 2016 Klarälvdalens Datakonsult AB SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include #include #include "kleo_export.h" -#include + +#include #include namespace GpgME { class Key; } namespace Kleo { class KeyFilter; class KeySelectionComboPrivate; class KLEO_EXPORT KeySelectionCombo : public QComboBox { Q_OBJECT public: explicit KeySelectionCombo(QWidget *parent = nullptr); explicit KeySelectionCombo(bool secretOnly, QWidget *parent = nullptr); ~KeySelectionCombo() override; void setKeyFilter(const std::shared_ptr &kf); std::shared_ptr keyFilter() const; void setIdFilter(const QString &id); QString idFilter() const; void refreshKeys(); GpgME::Key currentKey() const; void setCurrentKey(const GpgME::Key &key); void setCurrentKey(const QString &fingerprint); void setDefaultKey(const QString &fingerprint); void setDefaultKey(const QString &fingerprint, GpgME::Protocol proto); QString defaultKey() const; QString defaultKey(GpgME::Protocol proto) const; void prependCustomItem(const QIcon &icon, const QString &text, const QVariant &data); void appendCustomItem(const QIcon &icon, const QString &text, const QVariant &data); void prependCustomItem(const QIcon &icon, const QString &text, const QVariant &data, const QString &toolTip); void appendCustomItem(const QIcon &icon, const QString &text, const QVariant &data, const QString &toolTip); void removeCustomItem(const QVariant &data); Q_SIGNALS: void customItemSelected(const QVariant &data); void currentKeyChanged(const GpgME::Key &key); void keyListingFinished(); protected: virtual void init(); private: std::unique_ptr const d; }; }