1 /*
2    SPDX-FileCopyrightText: 2020-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include "sieveeditorsavepasswordjob.h"
8 #include "sieveeditor_debug.h"
9 #include <qt5keychain/keychain.h>
10 
11 using namespace QKeychain;
12 
SieveEditorSavePasswordJob(QObject * parent)13 SieveEditorSavePasswordJob::SieveEditorSavePasswordJob(QObject *parent)
14     : QObject(parent)
15 {
16 }
17 
~SieveEditorSavePasswordJob()18 SieveEditorSavePasswordJob::~SieveEditorSavePasswordJob()
19 {
20 }
21 
canStart() const22 bool SieveEditorSavePasswordJob::canStart() const
23 {
24     return !mName.isEmpty() && !mPassword.isEmpty() && !mKey.isEmpty();
25 }
26 
start()27 void SieveEditorSavePasswordJob::start()
28 {
29     if (!canStart()) {
30         if (mName.isEmpty()) {
31             qCWarning(SIEVEEDITOR_LOG) << "Error missing mName";
32         }
33         if (mKey.isEmpty()) {
34             qCWarning(SIEVEEDITOR_LOG) << "Error missing mKey";
35         }
36         if (mPassword.isEmpty()) {
37             qCWarning(SIEVEEDITOR_LOG) << "Error missing mName";
38         }
39         deleteLater();
40         return;
41     }
42     auto writeJob = new WritePasswordJob(mName, this);
43     connect(writeJob, &Job::finished, this, &SieveEditorSavePasswordJob::slotPasswordWritten);
44     writeJob->setKey(mKey);
45     writeJob->setTextData(mPassword);
46     writeJob->start();
47 }
48 
slotPasswordWritten(QKeychain::Job * baseJob)49 void SieveEditorSavePasswordJob::slotPasswordWritten(QKeychain::Job *baseJob)
50 {
51     if (baseJob->error()) {
52         qCWarning(SIEVEEDITOR_LOG) << "Error writing password using QKeychain:" << baseJob->errorString();
53     }
54     deleteLater();
55 }
56 
name() const57 QString SieveEditorSavePasswordJob::name() const
58 {
59     return mName;
60 }
61 
setName(const QString & name)62 void SieveEditorSavePasswordJob::setName(const QString &name)
63 {
64     mName = name;
65 }
66 
key() const67 QString SieveEditorSavePasswordJob::key() const
68 {
69     return mKey;
70 }
71 
setKey(const QString & key)72 void SieveEditorSavePasswordJob::setKey(const QString &key)
73 {
74     mKey = key;
75 }
76 
password() const77 QString SieveEditorSavePasswordJob::password() const
78 {
79     return mPassword;
80 }
81 
setPassword(const QString & password)82 void SieveEditorSavePasswordJob::setPassword(const QString &password)
83 {
84     mPassword = password;
85 }
86