summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-04-13 09:26:16 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-04-13 09:26:16 +0200
commit634772c6da51c1d69f804bd45bbedaeb88789cd6 (patch)
treeb5fca65f645b528c3981983f1651a3708c8ccac9
parent53d3bc5fae42612984f7e1c606dd6fc7ef1ccd2c (diff)
downloadkube-634772c6da51c1d69f804bd45bbedaeb88789cd6.tar.gz
kube-634772c6da51c1d69f804bd45bbedaeb88789cd6.zip
Identity Support
-rw-r--r--accounts/maildir/maildirsettings.cpp33
-rw-r--r--accounts/maildir/maildirsettings.h6
-rw-r--r--accounts/maildir/package/contents/ui/MaildirAccountSettings.qml16
-rw-r--r--accounts/maildir/tests/settingstest.cpp13
4 files changed, 65 insertions, 3 deletions
diff --git a/accounts/maildir/maildirsettings.cpp b/accounts/maildir/maildirsettings.cpp
index fa30851c..e47b834f 100644
--- a/accounts/maildir/maildirsettings.cpp
+++ b/accounts/maildir/maildirsettings.cpp
@@ -82,6 +82,18 @@ void MaildirSettings::setAccountIdentifier(const QByteArray &id)
82 [](int errorCode, const QString &errorMessage) { 82 [](int errorCode, const QString &errorMessage) {
83 qWarning() << "Failed to find the maildir resource: " << errorMessage; 83 qWarning() << "Failed to find the maildir resource: " << errorMessage;
84 }).exec(); 84 }).exec();
85
86 //FIXME this assumes that we only ever have one identity per account
87 Sink::Store::fetchOne<Sink::ApplicationDomain::Identity>(Sink::Query::PropertyFilter("account", QVariant::fromValue(id)))
88 .then<void, Sink::ApplicationDomain::Identity>([this](const Sink::ApplicationDomain::Identity &identity) {
89 mIdentityIdentifier = identity.identifier();
90 mUsername = identity.getProperty("username").toString();
91 mEmailAddress = identity.getProperty("address").toString();
92 emit identityChanged();
93 },
94 [](int errorCode, const QString &errorMessage) {
95 qWarning() << "Failed to find the identity resource: " << errorMessage;
96 }).exec();
85} 97}
86 98
87QByteArray MaildirSettings::accountIdentifier() const 99QByteArray MaildirSettings::accountIdentifier() const
@@ -207,6 +219,27 @@ void MaildirSettings::save()
207 }) 219 })
208 .exec(); 220 .exec();
209 } 221 }
222
223 if (!mIdentityIdentifier.isEmpty()) {
224 Sink::ApplicationDomain::Identity identity(mMailtransportIdentifier);
225 identity.setProperty("username", mUsername);
226 identity.setProperty("address", mEmailAddress);
227 Sink::Store::modify(identity).then<void>([](){}, [](int errorCode, const QString &errorMessage) {
228 qWarning() << "Error while modifying identity: " << errorMessage;
229 })
230 .exec();
231 } else {
232 auto identity = Sink::ApplicationDomain::ApplicationDomainType::createEntity<Sink::ApplicationDomain::Identity>();
233 mIdentityIdentifier = identity.identifier();
234 identity.setProperty("account", mAccountIdentifier);
235 identity.setProperty("username", mUsername);
236 identity.setProperty("address", mEmailAddress);
237 Sink::Store::create(identity).then<void>([]() {},
238 [](int errorCode, const QString &errorMessage) {
239 qWarning() << "Error while creating identity: " << errorMessage;
240 })
241 .exec();
242 }
210} 243}
211 244
212void MaildirSettings::remove() 245void MaildirSettings::remove()
diff --git a/accounts/maildir/maildirsettings.h b/accounts/maildir/maildirsettings.h
index be69ffb8..a02944d9 100644
--- a/accounts/maildir/maildirsettings.h
+++ b/accounts/maildir/maildirsettings.h
@@ -29,6 +29,8 @@ class MaildirSettings : public QObject
29 Q_PROPERTY(QValidator* pathValidator READ pathValidator CONSTANT) 29 Q_PROPERTY(QValidator* pathValidator READ pathValidator CONSTANT)
30 Q_PROPERTY(QString icon MEMBER mIcon NOTIFY changed) 30 Q_PROPERTY(QString icon MEMBER mIcon NOTIFY changed)
31 Q_PROPERTY(QString accountName MEMBER mName NOTIFY changed) 31 Q_PROPERTY(QString accountName MEMBER mName NOTIFY changed)
32 Q_PROPERTY(QString userName MEMBER mUsername NOTIFY identityChanged)
33 Q_PROPERTY(QString emailAddress MEMBER mEmailAddress NOTIFY identityChanged)
32 Q_PROPERTY(QString smtpServer MEMBER mSmtpServer NOTIFY smtpResourceChanged) 34 Q_PROPERTY(QString smtpServer MEMBER mSmtpServer NOTIFY smtpResourceChanged)
33 Q_PROPERTY(QValidator* smtpServerValidator READ smtpServerValidator CONSTANT) 35 Q_PROPERTY(QValidator* smtpServerValidator READ smtpServerValidator CONSTANT)
34 Q_PROPERTY(QString smtpUsername MEMBER mSmtpUsername NOTIFY smtpResourceChanged) 36 Q_PROPERTY(QString smtpUsername MEMBER mSmtpUsername NOTIFY smtpResourceChanged)
@@ -52,15 +54,19 @@ public:
52signals: 54signals:
53 void pathChanged(); 55 void pathChanged();
54 void smtpResourceChanged(); 56 void smtpResourceChanged();
57 void identityChanged();
55 void changed(); 58 void changed();
56 59
57private: 60private:
58 QByteArray mIdentifier; 61 QByteArray mIdentifier;
59 QByteArray mAccountIdentifier; 62 QByteArray mAccountIdentifier;
60 QByteArray mMailtransportIdentifier; 63 QByteArray mMailtransportIdentifier;
64 QByteArray mIdentityIdentifier;
61 QString mPath; 65 QString mPath;
62 QString mIcon; 66 QString mIcon;
63 QString mName; 67 QString mName;
68 QString mUsername;
69 QString mEmailAddress;
64 QString mSmtpServer; 70 QString mSmtpServer;
65 QString mSmtpUsername; 71 QString mSmtpUsername;
66 QString mSmtpPassword; 72 QString mSmtpPassword;
diff --git a/accounts/maildir/package/contents/ui/MaildirAccountSettings.qml b/accounts/maildir/package/contents/ui/MaildirAccountSettings.qml
index e508a475..d9d0741d 100644
--- a/accounts/maildir/package/contents/ui/MaildirAccountSettings.qml
+++ b/accounts/maildir/package/contents/ui/MaildirAccountSettings.qml
@@ -53,6 +53,22 @@ Rectangle {
53 onTextChanged: { maildirSettings.accountName = text; } 53 onTextChanged: { maildirSettings.accountName = text; }
54 } 54 }
55 55
56 Label { text: "User Name" }
57 TextField {
58 placeholderText: "Your Name"
59 Layout.fillWidth: true
60 text: maildirSettings.userName
61 onTextChanged: { maildirSettings.userName = text; }
62 }
63
64 Label { text: "Email Address" }
65 TextField {
66 placeholderText: "Your EMail Address"
67 Layout.fillWidth: true
68 text: maildirSettings.emailAddress
69 onTextChanged: { maildirSettings.emailAddress = text; }
70 }
71
56 Text { 72 Text {
57 Layout.columnSpan: 2 73 Layout.columnSpan: 2
58 Layout.fillWidth: true 74 Layout.fillWidth: true
diff --git a/accounts/maildir/tests/settingstest.cpp b/accounts/maildir/tests/settingstest.cpp
index 07665c24..1967bcfc 100644
--- a/accounts/maildir/tests/settingstest.cpp
+++ b/accounts/maildir/tests/settingstest.cpp
@@ -26,6 +26,8 @@ private slots:
26 auto smtpServer = QString("smtpserver"); 26 auto smtpServer = QString("smtpserver");
27 auto smtpUsername = QString("username"); 27 auto smtpUsername = QString("username");
28 auto smtpPassword = QString("password"); 28 auto smtpPassword = QString("password");
29 auto username = QString("username");
30 auto emailAddress = QString("emailAddress");
29 31
30 MaildirSettings settings; 32 MaildirSettings settings;
31 settings.setAccountIdentifier(accountId); 33 settings.setAccountIdentifier(accountId);
@@ -33,6 +35,8 @@ private slots:
33 settings.setProperty("smtpServer", smtpServer); 35 settings.setProperty("smtpServer", smtpServer);
34 settings.setProperty("smtpUsername", smtpUsername); 36 settings.setProperty("smtpUsername", smtpUsername);
35 settings.setProperty("smtpPassword", smtpPassword); 37 settings.setProperty("smtpPassword", smtpPassword);
38 settings.setProperty("username", username);
39 settings.setProperty("emailAddress", emailAddress);
36 settings.save(); 40 settings.save();
37 41
38 Sink::Store::fetchAll<Sink::ApplicationDomain::SinkResource>(Sink::Query()).then<void, QList<Sink::ApplicationDomain::SinkResource>>([](const QList<Sink::ApplicationDomain::SinkResource> &resources) { 42 Sink::Store::fetchAll<Sink::ApplicationDomain::SinkResource>(Sink::Query()).then<void, QList<Sink::ApplicationDomain::SinkResource>>([](const QList<Sink::ApplicationDomain::SinkResource> &resources) {
@@ -46,20 +50,23 @@ private slots:
46 QSignalSpy spy(&readSettings, &MaildirSettings::pathChanged); 50 QSignalSpy spy(&readSettings, &MaildirSettings::pathChanged);
47 QSignalSpy spy1(&readSettings, &MaildirSettings::smtpResourceChanged); 51 QSignalSpy spy1(&readSettings, &MaildirSettings::smtpResourceChanged);
48 readSettings.setAccountIdentifier(accountId); 52 readSettings.setAccountIdentifier(accountId);
49 QTRY_VERIFY(spy.count()); 53 //Once for clear and once for once for the new setting
50 QTRY_VERIFY(spy1.count()); 54 QTRY_COMPARE(spy.count(), 2);
55 QTRY_COMPARE(spy1.count(), 2);
51 QVERIFY(!readSettings.accountIdentifier().isEmpty()); 56 QVERIFY(!readSettings.accountIdentifier().isEmpty());
52 QCOMPARE(readSettings.path().toString(), maildirPath); 57 QCOMPARE(readSettings.path().toString(), maildirPath);
53 QCOMPARE(readSettings.property("smtpServer").toString(), smtpServer); 58 QCOMPARE(readSettings.property("smtpServer").toString(), smtpServer);
54 QCOMPARE(readSettings.property("smtpUsername").toString(), smtpUsername); 59 QCOMPARE(readSettings.property("smtpUsername").toString(), smtpUsername);
55 QCOMPARE(readSettings.property("smtpPassword").toString(), smtpPassword); 60 QCOMPARE(readSettings.property("smtpPassword").toString(), smtpPassword);
61 QCOMPARE(readSettings.property("username").toString(), smtpUsername);
62 QCOMPARE(readSettings.property("emailAddress").toString(), smtpPassword);
56 } 63 }
57 64
58 { 65 {
59 MaildirSettings settings; 66 MaildirSettings settings;
60 QSignalSpy spy(&settings, &MaildirSettings::pathChanged); 67 QSignalSpy spy(&settings, &MaildirSettings::pathChanged);
61 settings.setAccountIdentifier(accountId); 68 settings.setAccountIdentifier(accountId);
62 QTRY_VERIFY(spy.count()); 69 QTRY_COMPARE(spy.count(), 2);
63 settings.remove(); 70 settings.remove();
64 } 71 }
65 72