aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/model
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/model')
-rw-r--r--src/core/model/GpgKeyGroup.cpp14
-rw-r--r--src/core/model/GpgKeyGroup.h7
-rw-r--r--src/core/model/GpgKeyTreeModel.cpp39
-rw-r--r--src/core/model/GpgKeyTreeModel.h7
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>;
};