diff options
Diffstat (limited to 'src/core/model')
-rw-r--r-- | src/core/model/GpgKeyGroup.cpp | 14 | ||||
-rw-r--r-- | src/core/model/GpgKeyGroup.h | 7 | ||||
-rw-r--r-- | src/core/model/GpgKeyTreeModel.cpp | 39 | ||||
-rw-r--r-- | src/core/model/GpgKeyTreeModel.h | 7 |
4 files changed, 37 insertions, 30 deletions
diff --git a/src/core/model/GpgKeyGroup.cpp b/src/core/model/GpgKeyGroup.cpp index b572deac..13c0d542 100644 --- a/src/core/model/GpgKeyGroup.cpp +++ b/src/core/model/GpgKeyGroup.cpp @@ -28,7 +28,7 @@ #include "core/model/GpgKeyGroup.h" -#include <utility> +#include "core/function/gpg/GpgKeyGroupGetter.h" namespace GpgFrontend { @@ -50,13 +50,15 @@ auto GpgKeyGroup::Email() const -> QString { return email_; } auto GpgKeyGroup::Comment() const -> QString { return comment_; } -auto GpgKeyGroup::Fingerprint() const -> QString { return {}; } +auto GpgKeyGroup::Fingerprint() const -> QString { return ID(); } auto GpgKeyGroup::PublicKeyAlgo() const -> QString { return {}; } auto GpgKeyGroup::Algo() const -> QString { return {}; } -auto GpgKeyGroup::ExpirationTime() const -> QDateTime { return {}; }; +auto GpgKeyGroup::ExpirationTime() const -> QDateTime { + return QDateTime::fromSecsSinceEpoch(0); +}; auto GpgKeyGroup::CreationTime() const -> QDateTime { return creation_time_; }; @@ -75,7 +77,7 @@ auto GpgKeyGroup::IsExpired() const -> bool { return false; } auto GpgKeyGroup::IsRevoked() const -> bool { return false; } auto GpgKeyGroup::IsDisabled() const -> bool { - return key_ids_.isEmpty() || disabled_; + return getter_ == nullptr ? true : getter_->IsKeyGroupDisabled(ID()); } auto GpgKeyGroup::KeyType() const -> GpgAbstractKeyType { @@ -116,5 +118,7 @@ void GpgKeyGroup::SetKeyIds(QStringList key_ids) { key_ids_ = std::move(key_ids); } -void GpgKeyGroup::SetDisabled(bool disabled) { disabled_ = disabled; } +void GpgKeyGroup::SetKeyGroupGetter(GpgKeyGroupGetter *getter) { + getter_ = getter; +} } // namespace GpgFrontend
\ No newline at end of file diff --git a/src/core/model/GpgKeyGroup.h b/src/core/model/GpgKeyGroup.h index d3ae8e03..887fd13f 100644 --- a/src/core/model/GpgKeyGroup.h +++ b/src/core/model/GpgKeyGroup.h @@ -33,6 +33,8 @@ namespace GpgFrontend { +class GpgKeyGroupGetter; + /** * @brief * @@ -248,7 +250,7 @@ class GPGFRONTEND_CORE_EXPORT GpgKeyGroup : public GpgAbstractKey { * @brief Set the Disabled object * */ - void SetDisabled(bool); + void SetKeyGroupGetter(GpgKeyGroupGetter*); private: QString id_; @@ -257,7 +259,8 @@ class GPGFRONTEND_CORE_EXPORT GpgKeyGroup : public GpgAbstractKey { QString comment_; QStringList key_ids_; QDateTime creation_time_; - bool disabled_; + + GpgKeyGroupGetter* getter_ = nullptr; }; } // namespace GpgFrontend diff --git a/src/core/model/GpgKeyTreeModel.cpp b/src/core/model/GpgKeyTreeModel.cpp index a62878c9..92a0f77c 100644 --- a/src/core/model/GpgKeyTreeModel.cpp +++ b/src/core/model/GpgKeyTreeModel.cpp @@ -28,14 +28,12 @@ #include "GpgKeyTreeModel.h" -#include <utility> - #include "core/model/GpgKey.h" #include "core/utils/GpgUtils.h" namespace GpgFrontend { -GpgKeyTreeModel::GpgKeyTreeModel(int channel, const GpgKeyList &keys, +GpgKeyTreeModel::GpgKeyTreeModel(int channel, const GpgAbstractKeyPtrList &keys, Detector checkable_detector, QObject *parent) : QAbstractItemModel(parent), gpg_context_channel_(channel), @@ -165,13 +163,13 @@ auto GpgKeyTreeModel::GetGpgContextChannel() const -> int { return gpg_context_channel_; } -void GpgKeyTreeModel::setup_model_data(const GpgKeyList &keys) { +void GpgKeyTreeModel::setup_model_data(const GpgAbstractKeyPtrList &keys) { auto root = QSharedPointer<GpgKeyTreeItem>::create(nullptr, column_headers_); cached_items_.clear(); for (const auto &key : keys) { auto pi_key = create_gpg_key_tree_items(key); - root->AppendChild(pi_key); + if (pi_key != nullptr) root->AppendChild(pi_key); } std::swap(root_, root); @@ -197,36 +195,39 @@ auto GpgKeyTreeModel::GetAllCheckedKeyIds() -> KeyIdArgsList { return ret; } -auto GpgKeyTreeModel::create_gpg_key_tree_items(const GpgKey &key) +auto GpgKeyTreeModel::create_gpg_key_tree_items(const GpgAbstractKeyPtr &key) -> QSharedPointer<GpgKeyTreeItem> { QVariantList columns; columns << "/"; + if (key->KeyType() != GpgAbstractKeyType::kGPG_KEY) return nullptr; + + auto g_key = qSharedPointerDynamicCast<GpgKey>(key); + QString type; - type += key.IsPrivateKey() ? "pub/sec" : "pub"; - if (key.IsPrivateKey() && !key.IsHasMasterKey()) type += "#"; - if (key.IsHasCardKey()) type += "^"; + type += g_key->IsPrivateKey() ? "pub/sec" : "pub"; + if (g_key->IsPrivateKey() && !g_key->IsHasMasterKey()) type += "#"; + if (g_key->IsHasCardKey()) type += "^"; columns << type; - columns << key.UIDs().front().GetUID(); - columns << key.ID(); + columns << g_key->UIDs().front().GetUID(); + columns << g_key->ID(); - columns << GetUsagesByAbstractKey(&key); - columns << key.PublicKeyAlgo(); - columns << key.Algo(); - columns << QLocale().toString(key.CreationTime(), "yyyy-MM-dd"); + columns << GetUsagesByAbstractKey(key.get()); + columns << g_key->PublicKeyAlgo(); + columns << g_key->Algo(); + columns << QLocale().toString(g_key->CreationTime(), "yyyy-MM-dd"); - auto i_key = QSharedPointer<GpgKeyTreeItem>::create( - QSharedPointer<GpgKey>::create(key), columns); + auto i_key = QSharedPointer<GpgKeyTreeItem>::create(key, columns); i_key->SetEnable(true); i_key->SetCheckable(checkable_detector_(i_key->Key())); cached_items_.push_back(i_key); - for (const auto &s_key : key.SubKeys()) { + for (const auto &s_key : g_key->SubKeys()) { QVariantList columns; columns << "/"; columns << (s_key.IsHasCertCap() ? "primary" : "sub"); - columns << key.UIDs().front().GetUID(); + columns << g_key->UIDs().front().GetUID(); columns << s_key.ID(); columns << GetUsagesByAbstractKey(&s_key); columns << s_key.PublicKeyAlgo(); diff --git a/src/core/model/GpgKeyTreeModel.h b/src/core/model/GpgKeyTreeModel.h index 20b63e01..bc27d2bd 100644 --- a/src/core/model/GpgKeyTreeModel.h +++ b/src/core/model/GpgKeyTreeModel.h @@ -32,7 +32,6 @@ * @brief * */ -#include <utility> #include "core/model/GpgAbstractKey.h" #include "core/model/GpgKey.h" @@ -250,7 +249,7 @@ class GPGFRONTEND_CORE_EXPORT GpgKeyTreeModel : public QAbstractItemModel { * @param keys * @param parent */ - explicit GpgKeyTreeModel(int channel, const GpgKeyList &keys, + explicit GpgKeyTreeModel(int channel, const GpgAbstractKeyPtrList &keys, Detector checkable, QObject *parent = nullptr); /** @@ -372,7 +371,7 @@ class GPGFRONTEND_CORE_EXPORT GpgKeyTreeModel : public QAbstractItemModel { * @brief * */ - void setup_model_data(const GpgKeyList &keys); + void setup_model_data(const GpgAbstractKeyPtrList &keys); /** * @brief Create a gpg key tree items object @@ -380,7 +379,7 @@ class GPGFRONTEND_CORE_EXPORT GpgKeyTreeModel : public QAbstractItemModel { * @param key * @return QSharedPointer<GpgKeyTreeItem> */ - auto create_gpg_key_tree_items(const GpgKey &key) + auto create_gpg_key_tree_items(const GpgAbstractKeyPtr &key) -> QSharedPointer<GpgKeyTreeItem>; }; |