File indexing completed on 2024-05-19 05:17:28

0001 // SPDX-FileCopyrightText: 2023 Claudio Cambra <claudio.cambra@kde.org>
0002 // SPDX-License-Identifier: LGPL-2.0-or-later
0003 
0004 #pragma once
0005 
0006 #include <QObject>
0007 
0008 #include "identity.h"
0009 #include "identitymanager.h"
0010 
0011 namespace KIdentityManagementQuick
0012 {
0013 class IdentityEditorBackend : public QObject
0014 {
0015     Q_OBJECT
0016 
0017     Q_PROPERTY(Mode mode READ mode WRITE setMode NOTIFY modeChanged)
0018     Q_PROPERTY(KIdentityManagementCore::Identity identity READ identity WRITE setIdentity NOTIFY identityChanged NOTIFY modeChanged)
0019     Q_PROPERTY(uint identityUoid READ identityUoid WRITE setIdentityUoid NOTIFY identityChanged)
0020 
0021 public:
0022     enum Mode { CreateMode, EditMode };
0023     Q_ENUM(Mode);
0024 
0025     explicit IdentityEditorBackend() = default;
0026 
0027     [[nodiscard]] Mode mode() const;
0028     void setMode(Mode mode);
0029 
0030     [[nodiscard]] KIdentityManagementCore::Identity identity() const;
0031     void setIdentity(const KIdentityManagementCore::Identity &identity);
0032 
0033     [[nodiscard]] uint identityUoid() const;
0034     void setIdentityUoid(uint identityUoid);
0035 
0036     Q_INVOKABLE void saveIdentity(const KIdentityManagementCore::Identity &modifiedIdentity);
0037 
0038     Q_INVOKABLE void addEmailAlias(const QString &alias);
0039     Q_INVOKABLE void modifyEmailAlias(const QString &originalAlias, const QString &modifiedAlias);
0040     Q_INVOKABLE void removeEmailAlias(const QString &alias);
0041 
0042 Q_SIGNALS:
0043     void modeChanged();
0044     void identityChanged();
0045 
0046 private:
0047     KIdentityManagementCore::IdentityManager *const mIdentityManager = KIdentityManagementCore::IdentityManager::self();
0048     KIdentityManagementCore::Identity mIdentity;
0049     Mode mMode = CreateMode;
0050 };
0051 }