aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/function/gpg/GpgKeyGetter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/function/gpg/GpgKeyGetter.cpp')
-rw-r--r--src/core/function/gpg/GpgKeyGetter.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/core/function/gpg/GpgKeyGetter.cpp b/src/core/function/gpg/GpgKeyGetter.cpp
index 4a35d3cd..870e68b3 100644
--- a/src/core/function/gpg/GpgKeyGetter.cpp
+++ b/src/core/function/gpg/GpgKeyGetter.cpp
@@ -92,6 +92,22 @@ class GpgKeyGetter::Impl : public SingletonFunctionObject<GpgKeyGetter::Impl> {
return keys_list;
}
+ auto FetchGpgKeyList() -> GpgKeyList {
+ if (keys_search_cache_.empty()) {
+ FlushKeyCache();
+ }
+
+ auto keys_list = GpgKeyList{};
+ {
+ // get the lock
+ std::lock_guard<std::mutex> lock(keys_cache_mutex_);
+ for (const auto& key : keys_cache_) {
+ keys_list.push_back(key);
+ }
+ }
+ return keys_list;
+ }
+
auto FlushKeyCache() -> bool {
GF_CORE_LOG_DEBUG("flush key channel called, channel: {}", GetChannel());
@@ -165,6 +181,11 @@ class GpgKeyGetter::Impl : public SingletonFunctionObject<GpgKeyGetter::Impl> {
return keys_copy;
}
+ auto GetGpgKeyTableModel() -> QSharedPointer<GpgKeyTableModel> {
+ return SecureCreateQSharedObject<GpgKeyTableModel>(FetchGpgKeyList(),
+ nullptr);
+ }
+
private:
/**
* @brief Get the gpgme context object
@@ -248,4 +269,8 @@ auto GpgKeyGetter::GetKeysCopy(const KeyListPtr& keys) -> KeyListPtr {
auto GpgKeyGetter::FetchKey() -> KeyLinkListPtr { return p_->FetchKey(); }
+auto GpgKeyGetter::GetGpgKeyTableModel() -> QSharedPointer<GpgKeyTableModel> {
+ return p_->GetGpgKeyTableModel();
+}
+
} // namespace GpgFrontend