File indexing completed on 2024-05-12 05:22:15
0001 /* 0002 SPDX-FileCopyrightText: 2018 Daniel Vrátil <dvratil@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #pragma once 0008 0009 #include "accountstorage_p.h" 0010 0011 namespace KWallet 0012 { 0013 class Wallet; 0014 } 0015 0016 namespace KGAPI2 0017 { 0018 0019 class KWalletStorageFactory : public AccountStorageFactory 0020 { 0021 public: 0022 AccountStorage *create() const override; 0023 }; 0024 0025 class KWalletStorage : public AccountStorage 0026 { 0027 public: 0028 explicit KWalletStorage(); 0029 ~KWalletStorage() override; 0030 0031 void open(const std::function<void(bool)> &callback) override; 0032 bool opened() const override; 0033 0034 AccountPtr getAccount(const QString &apiKey, const QString &accountName) override; 0035 bool storeAccount(const QString &apiKey, const AccountPtr &account) override; 0036 void removeAccount(const QString &apiKey, const QString &accountName) override; 0037 0038 private: 0039 AccountPtr parseAccount(const QString &str) const; 0040 QString serializeAccount(const AccountPtr &account) const; 0041 0042 bool mWalletOpening = false; 0043 KWallet::Wallet *mWallet = nullptr; 0044 }; 0045 0046 }