[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdepim-addons] sieveeditor/imapfoldercompletion: Allow to create folder
From:       Montel Laurent <null () kde ! org>
Date:       2017-02-28 20:20:45
Message-ID: E1cioGL-0003WV-3u () code ! kde ! org
[Download RAW message or body]

Git commit b84a26047956fb174edbcc05b09886fc57147ed8 by Montel Laurent.
Committed on 28/02/2017 at 20:20.
Pushed by mlaurent into branch 'master'.

Allow to create folder

M  +37   -11   sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.cpp
M  +3    -1    sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.h
M  +2    -2    sieveeditor/imapfoldercompletion/selectimapfoldermodel.cpp
M  +1    -3    sieveeditor/imapfoldercompletion/selectimapfoldermodel.h

https://commits.kde.org/kdepim-addons/b84a26047956fb174edbcc05b09886fc57147ed8

diff --git a/sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.cpp \
b/sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.cpp index \
                3851c882..f91e417b 100644
--- a/sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.cpp
+++ b/sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.cpp
@@ -23,6 +23,7 @@
 #include "sessionuiproxy.h"
 #include <KIMAP/CreateJob>
 #include <KIMAP/Session>
+#include <KIMAP/LoginJob>
 
 SelectImapCreateFolderJob::SelectImapCreateFolderJob(QObject *parent)
     : QObject(parent),
@@ -42,23 +43,45 @@ void SelectImapCreateFolderJob::start()
         mSession = new KIMAP::Session(mSieveImapAccount.serverName(), \
mSieveImapAccount.port(), this);  mSession->setUiProxy(SessionUiProxy::Ptr(new \
SessionUiProxy));  
-#if 1
-        KIMAP::CreateJob *job = new KIMAP::CreateJob(mSession);
-        job->setMailBox(mNewFolderName);
-
-        connect(job, &KIMAP::CreateJob::result, this, \
&SelectImapCreateFolderJob::slotCreateFolderDone); +        KIMAP::LoginJob *login = \
new KIMAP::LoginJob(mSession); +        \
login->setUserName(mSieveImapAccount.userName()); +        \
login->setPassword(mSieveImapAccount.password()); +        \
login->setAuthenticationMode(static_cast<KIMAP::LoginJob::AuthenticationMode>(mSieveImapAccount.authenticationType()));
 +        login->setEncryptionMode(static_cast<KIMAP::LoginJob::EncryptionMode>(mSieveImapAccount.encryptionMode()));
 +        connect(login, &KIMAP::LoginJob::result, this, \
&SelectImapCreateFolderJob::slotLoginDone); +        login->start();
+    } else {
+        Q_EMIT finished(mSieveImapAccount, false);
+        deleteLater();
+    }
+}
 
-        job->start();
-#else
-        deleteLater();	    
-#endif	    
-        //TODO
+void SelectImapCreateFolderJob::slotLoginDone(KJob *job)
+{
+    if (!job->error()) {
+        createFolderRequested();
     } else {
-        Q_EMIT finished(false);
+        Q_EMIT finished(mSieveImapAccount, false);
         deleteLater();
     }
 }
 
+void SelectImapCreateFolderJob::createFolderRequested()
+{
+    if (!mSession
+            || mSession->state() != KIMAP::Session::Authenticated) {
+        qCWarning(IMAPFOLDERCOMPLETIONPLUGIN_LOG) << "SelectImapCreateFolderJob - \
got no connection"; +        Q_EMIT finished(mSieveImapAccount, false);
+        deleteLater();
+        return;
+    }
+
+    KIMAP::CreateJob *job = new KIMAP::CreateJob(mSession);
+    job->setMailBox(mNewFolderName);
+    connect(job, &KIMAP::CreateJob::result, this, \
&SelectImapCreateFolderJob::slotCreateFolderDone); +    job->start();
+}
+
 void SelectImapCreateFolderJob::setSieveImapAccountSettings(const \
KSieveUi::SieveImapAccountSettings &account)  {
 #if 0
@@ -80,6 +103,9 @@ void SelectImapCreateFolderJob::slotCreateFolderDone(KJob *job)
 {
     if (job->error()) {
         qCWarning(IMAPFOLDERCOMPLETIONPLUGIN_LOG) << "Failed to create folder on \
server: " << job->errorString(); +        Q_EMIT finished(mSieveImapAccount, false);
+    } else {
+        Q_EMIT finished(mSieveImapAccount, true);
     }
     deleteLater();
 }
diff --git a/sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.h \
b/sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.h index \
                d8fde11e..dfe7ca7b 100644
--- a/sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.h
+++ b/sieveeditor/imapfoldercompletion/selectimapcreatefolderjob.h
@@ -39,10 +39,12 @@ public:
     void setNewFolderName(const QString &newFolderName);
 
 Q_SIGNALS:
-    void finished(bool success);
+    void finished(const KSieveUi::SieveImapAccountSettings &account, bool success);
 
 private:
+    void createFolderRequested();
     void slotCreateFolderDone(KJob *job);
+    void slotLoginDone(KJob *job);
     KIMAP::Session *mSession;
     KSieveUi::SieveImapAccountSettings mSieveImapAccount;
     QString mNewFolderName;
diff --git a/sieveeditor/imapfoldercompletion/selectimapfoldermodel.cpp \
b/sieveeditor/imapfoldercompletion/selectimapfoldermodel.cpp index 336664fe..4e7b6b7b \
                100644
--- a/sieveeditor/imapfoldercompletion/selectimapfoldermodel.cpp
+++ b/sieveeditor/imapfoldercompletion/selectimapfoldermodel.cpp
@@ -49,10 +49,10 @@ void SelectImapFolderModel::createNewFolder(const \
KSieveUi::SieveImapAccountSett  job->start();
 }
 
-void SelectImapFolderModel::slotCreateFolderDone(bool success)
+void SelectImapFolderModel::slotCreateFolderDone(const \
KSieveUi::SieveImapAccountSettings &account, bool success)  {
     if (success) {
-        Q_EMIT reloadFolders();
+        reloadFolderModel(account);
     } else {
         qCDebug(IMAPFOLDERCOMPLETIONPLUGIN_LOG) << "Unable to create folder";
     }
diff --git a/sieveeditor/imapfoldercompletion/selectimapfoldermodel.h \
b/sieveeditor/imapfoldercompletion/selectimapfoldermodel.h index 05112efc..1b9850bc \
                100644
--- a/sieveeditor/imapfoldercompletion/selectimapfoldermodel.h
+++ b/sieveeditor/imapfoldercompletion/selectimapfoldermodel.h
@@ -41,12 +41,10 @@ public:
     void reloadFolderModel(const KSieveUi::SieveImapAccountSettings &account);
 
     void createNewFolder(const KSieveUi::SieveImapAccountSettings &account, const \
                QString &folderName);
-Q_SIGNALS:
-    void reloadFolders();
 
 private Q_SLOTS:
     void slotLoaded(bool success);
-    void slotCreateFolderDone(bool success);
+    void slotCreateFolderDone(const KSieveUi::SieveImapAccountSettings &account, \
bool success);  
 private:
     void fillModel(const KSieveUi::SieveImapAccountSettings &account, \
QStandardItemModel *model);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic