diff options
author | saturneric <[email protected]> | 2024-06-02 20:03:59 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-06-02 20:03:59 +0000 |
commit | e7694f9a0729cb88064eda6623c99070f5a46dc0 (patch) | |
tree | 39c5339991212dc4eaf653ec3e016b8daa79fbb7 /src/core/function/gpg/GpgKeyGetter.cpp | |
parent | fix: cannot show version in about tab (diff) | |
download | GpgFrontend-e7694f9a0729cb88064eda6623c99070f5a46dc0.tar.gz GpgFrontend-e7694f9a0729cb88064eda6623c99070f5a46dc0.zip |
feat: rewrite key list structure and logic
Diffstat (limited to 'src/core/function/gpg/GpgKeyGetter.cpp')
-rw-r--r-- | src/core/function/gpg/GpgKeyGetter.cpp | 25 |
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 |