Warning, file /graphics/glaxnimate/src/gui/settings/api_credentials.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include <unordered_map>
0010 #include <QUrl>
0011 #include <KLocalizedString>
0012 
0013 #include "app/utils/qstring_hash.hpp"
0014 #include "app/settings/custom_settings_group.hpp"
0015 
0016 
0017 namespace glaxnimate::gui::settings {
0018 
0019 class ApiCredentials : public app::settings::CustomSettingsGroupBase
0020 {
0021 public:
0022     struct Credential
0023     {
0024         QString name;
0025         QString value = "";
0026         QString hidden_default = "";
0027     };
0028 
0029     struct Api
0030     {
0031         QUrl info_url;
0032         std::vector<Credential> credentials;
0033 
0034         QString credential(const QString& name) const;
0035     };
0036 
0037     ApiCredentials();
0038 
0039     QString slug() const override { return "api_credentials"; }
0040     QIcon icon() const override { return QIcon::fromTheme("dialog-password"); }
0041     QString label() const override { return i18n("API Credentials"); }
0042     bool has_visible_settings() const override { return !apis_.empty(); }
0043 
0044     QVariant get_variant(const QString& setting) const override;
0045 
0046     void load ( QSettings & settings ) override;
0047 
0048     void save ( QSettings & settings ) override;
0049 
0050     const Api& api(const QString& name) const
0051     {
0052         return apis_.at(name);
0053     }
0054 
0055     QWidget * make_widget ( QWidget * parent ) override;
0056 
0057 
0058 private:
0059     std::map<QString, Api> apis_;
0060 };
0061 
0062 } // namespace glaxnimate::gui::settings
0063