Branch 'kolab/integration/4.13.0' - 3 commits - accountwizard/servertest.cpp composereditor-ng/CMakeLists.txt messagecomposer/composer messagecomposer/recipient

Christian Mollekopf mollekopf at kolabsys.com
Mon Jan 12 18:47:25 CET 2015


 accountwizard/servertest.cpp                   |    5 +
 composereditor-ng/CMakeLists.txt               |    2 
 messagecomposer/composer/composerlineedit.cpp  |  105 +++++++++++++++++++++++--
 messagecomposer/composer/composerlineedit.h    |   18 ++++
 messagecomposer/recipient/recipientline.cpp    |    9 ++
 messagecomposer/recipient/recipientline.h      |    3 
 messagecomposer/recipient/recipientseditor.cpp |   11 ++
 messagecomposer/recipient/recipientseditor.h   |    1 
 8 files changed, 145 insertions(+), 9 deletions(-)

New commits:
commit 69701d73356231650f0dd1db3b754c7b00f69366
Author: Christian Mollekopf <chrigi_1 at fastmail.fm>
Date:   Mon Jan 12 18:46:43 2015 +0100

    composereditorng depends on kio as well.
    
    For KUrlRequester, KFileDialog, and others.

diff --git a/composereditor-ng/CMakeLists.txt b/composereditor-ng/CMakeLists.txt
index d08bca0..d9f6853 100644
--- a/composereditor-ng/CMakeLists.txt
+++ b/composereditor-ng/CMakeLists.txt
@@ -52,7 +52,7 @@ kde4_add_ui_files(libcomposereditor_ng_SRCS ui/pagecolorbackgroundwidget.ui )
 kde4_add_library(composereditorng ${LIBRARY_TYPE} ${libcomposereditor_ng_SRCS})
 
 target_link_libraries(composereditorng 
-   ${KDE4_KDEWEBKIT_LIBRARY} ${QT_QTWEBKIT_LIBRARY} ${KDEPIMLIBS_KPIMTEXTEDIT_LIBS} ${KDE4_KPRINTUTILS_LIBS}
+    ${KDE4_KDEWEBKIT_LIBRARY} ${QT_QTWEBKIT_LIBRARY} ${KDEPIMLIBS_KPIMTEXTEDIT_LIBS} ${KDE4_KPRINTUTILS_LIBS} ${KDE4_KIO_LIBS}
 )
 
 


commit dc08482fc43940103ac7c9acf5f05dc69fa5844a
Author: Sandro Knauß <knauss at kolabsys.com>
Date:   Sun Jan 11 00:36:09 2015 +0100

    MessageComposer: Expand groups
    
    ContactGroups should be possible to expand to different to fields.
    
    KOLAB: #1871

diff --git a/messagecomposer/composer/composerlineedit.cpp b/messagecomposer/composer/composerlineedit.cpp
index c288244..d81be68 100644
--- a/messagecomposer/composer/composerlineedit.cpp
+++ b/messagecomposer/composer/composerlineedit.cpp
@@ -46,16 +46,24 @@
 #include <QDropEvent>
 #include <kabc/contactgrouptool.h>
 #include <Akonadi/Contact/ContactGroupExpandJob>
+#include <Akonadi/Contact/ContactGroupSearchJob>
 #include <QtCore/QBuffer>
 
 using namespace MessageComposer;
 
 ComposerLineEdit::ComposerLineEdit(bool useCompletion, QWidget *parent)
     : KPIM::AddresseeLineEdit(parent, useCompletion),
-      m_recentAddressConfig( MessageComposerSettings::self()->config() )
+      m_recentAddressConfig( MessageComposerSettings::self()->config() ),
+      mAutoGroupExpand(false),
+      mExpandIntern(true)
 {
     allowSemicolonAsSeparator( MessageComposerSettings::allowSemicolonAsAddressSeparator() );
     loadContacts();
+    connect( this, SIGNAL(editingFinished()), SLOT(slotEditingFinished()) );
+    connect( this, SIGNAL(textCompleted()), SLOT(slotEditingFinished()) );
+
+    KConfigGroup group( KGlobal::config(), "AddressLineEdit" );
+    mAutoGroupExpand = group.readEntry( "AutoGroupExpand", false );
 }
 
 
@@ -157,7 +165,7 @@ void ComposerLineEdit::dropEvent(QDropEvent *event)
                             QString error;
                             if( KABC::ContactGroupTool::convertFromXml( &dataStream, group, &error ) ) {
                                 Akonadi::ContactGroupExpandJob* expandJob = new Akonadi::ContactGroupExpandJob( group );
-                                connect( expandJob, SIGNAL(result(KJob*)), this, SLOT(groupDropExpandResult(KJob*)) );
+                                connect( expandJob, SIGNAL(result(KJob*)), this, SLOT(groupExpandResult(KJob*)) );
                                 expandJob->start();
                             }
                         }
@@ -183,7 +191,7 @@ void ComposerLineEdit::dropEvent(QDropEvent *event)
 }
 #endif
 
-void ComposerLineEdit::groupDropExpandResult( KJob* job )
+void ComposerLineEdit::groupExpandResult( KJob* job )
 {
     Akonadi::ContactGroupExpandJob *expandJob = qobject_cast<Akonadi::ContactGroupExpandJob*>( job );
 
@@ -191,12 +199,79 @@ void ComposerLineEdit::groupDropExpandResult( KJob* job )
         return;
 
     const KABC::Addressee::List contacts = expandJob->contacts();
-    foreach( const KABC::Addressee& addressee, contacts )
-        insertEmails( addressee.emails() );
+    foreach( const KABC::Addressee& addressee, contacts ) {
+        if (mExpandIntern || text().isEmpty()) {
+            insertEmails( QStringList() << addressee.fullEmail() );
+        } else {
+            emit addAddress(addressee.fullEmail());
+        }
+    }
 
     job->deleteLater();
 }
 
+void ComposerLineEdit::slotEditingFinished()
+{
+    foreach(KJob *job, mMightBeGroupJobs) {
+        disconnect(job);
+        job->deleteLater();
+    }
+
+    mMightBeGroupJobs.clear();
+    mGroups.clear();
+
+    if (!text().isEmpty()) {
+        QStringList addresses = KPIMUtils::splitAddressList(text());
+        foreach(QString address, addresses) {
+            Akonadi::ContactGroupSearchJob *job = new Akonadi::ContactGroupSearchJob();
+            job->setQuery( Akonadi::ContactGroupSearchJob::Name, address);
+            connect( job, SIGNAL(result(KJob*)), this, SLOT(slotGroupSearchResult(KJob*)) );
+            mMightBeGroupJobs.append(job);
+        }
+    }
+}
+
+void ComposerLineEdit::slotGroupSearchResult(KJob *job)
+{
+  Akonadi::ContactGroupSearchJob *searchJob = qobject_cast<Akonadi::ContactGroupSearchJob*>( job );
+
+  Q_ASSERT(mMightBeGroupJobs.contains(searchJob));
+  mMightBeGroupJobs.removeOne(searchJob);
+
+  const KABC::ContactGroup::List contactGroups = searchJob->contactGroups();
+  if ( contactGroups.isEmpty() ) {
+    return; // Nothing todo, probably a normal email address was entered
+  }
+
+  mGroups.append(contactGroups);
+  searchJob->deleteLater();
+
+  if (mAutoGroupExpand) {
+      expandGroups();
+  }
+}
+
+void ComposerLineEdit::expandGroups()
+{
+    QStringList addresses = KPIMUtils::splitAddressList(text());
+
+    foreach(KABC::ContactGroup group, mGroups) {
+        Akonadi::ContactGroupExpandJob* expandJob = new Akonadi::ContactGroupExpandJob( group );
+        connect( expandJob, SIGNAL(result(KJob*)), this, SLOT(groupExpandResult(KJob*)) );
+        addresses.removeAll(group.name());
+        expandJob->start();
+    }
+    setText(addresses.join(QLatin1String(", ")));
+    mGroups.clear();
+}
+
+void ComposerLineEdit::slotToggleExpandGroups()
+{
+    mAutoGroupExpand = !mAutoGroupExpand;
+    KConfigGroup group( KGlobal::config(), "AddressLineEdit" );
+    group.writeEntry( "AutoGroupExpand", mAutoGroupExpand );
+}
+
 
 #ifndef QT_NO_CONTEXTMENU
 void ComposerLineEdit::contextMenuEvent( QContextMenuEvent*e )
@@ -206,6 +281,17 @@ void ComposerLineEdit::contextMenuEvent( QContextMenuEvent*e )
         popup->addSeparator();
         QAction* act = popup->addAction( i18n( "Edit Recent Addresses..." ));
         connect(act,SIGNAL(triggered(bool)), SLOT(editRecentAddresses()) );
+
+        popup->addSeparator();
+        act = popup->addAction( i18n( "Automatically expand groups" ));
+        act->setCheckable(true);
+        act->setChecked(mAutoGroupExpand);
+        connect(act,SIGNAL(triggered(bool)), SLOT(slotToggleExpandGroups()) );
+
+        if (mGroups.count() > 0) {
+            act = popup->addAction( i18n( "Expand Groups..." ));
+            connect(act,SIGNAL(triggered(bool)), SLOT(expandGroups()) );
+        }
         popup->exec( e->globalPos() );
         delete popup;
     }
@@ -265,4 +351,13 @@ void ComposerLineEdit::setRecentAddressConfig ( KConfig* config )
     m_recentAddressConfig = config;
 }
 
+bool ComposerLineEdit::expandIntern()
+{
+    return mExpandIntern;
+}
+
+void ComposerLineEdit::setExpandIntern(bool expand)
+{
+    mExpandIntern = expand;
+}
 
diff --git a/messagecomposer/composer/composerlineedit.h b/messagecomposer/composer/composerlineedit.h
index d50e6a3..35c560e 100644
--- a/messagecomposer/composer/composerlineedit.h
+++ b/messagecomposer/composer/composerlineedit.h
@@ -24,6 +24,8 @@
 
 #include "messagecomposer_export.h"
 #include <libkdepim/addressline/addresseelineedit.h>
+#include <ldap/ldapclientsearch.h>
+#include <kabc/contactgroup.h>
 
 namespace MessageComposer {
 
@@ -36,9 +38,13 @@ public:
 
     void setRecentAddressConfig( KConfig* config );
 
+    void setExpandIntern(bool);
+    bool expandIntern();
+
 signals:
     void focusUp();
     void focusDown();
+    void addAddress(const QString &address);
 
 protected:
 
@@ -51,9 +57,15 @@ protected:
     virtual void contextMenuEvent( QContextMenuEvent*e );
 #endif
 
+public slots:
+    void expandGroups();
+
 private slots:
     void editRecentAddresses();
-    void groupDropExpandResult( KJob* );
+    void groupExpandResult( KJob* );
+    void slotEditingFinished();
+    void slotGroupSearchResult( KJob* );
+    void slotToggleExpandGroups();
 
 private:
 #ifndef QT_NO_DRAGANDDROP
@@ -63,6 +75,10 @@ private:
 
 private:
     KConfig* m_recentAddressConfig;
+    QList<KJob *> mMightBeGroupJobs;
+    KABC::ContactGroup::List mGroups;
+    bool mAutoGroupExpand;
+    bool mExpandIntern;
 };
 
 }
diff --git a/messagecomposer/recipient/recipientline.cpp b/messagecomposer/recipient/recipientline.cpp
index 8428afc..dcf2cf5 100644
--- a/messagecomposer/recipient/recipientline.cpp
+++ b/messagecomposer/recipient/recipientline.cpp
@@ -45,6 +45,7 @@ void RecipientComboBox::keyPressEvent( QKeyEvent *ev )
 
 RecipientLineEdit::RecipientLineEdit ( QWidget* parent ) : ComposerLineEdit ( parent )
 {
+    setExpandIntern(false);
 }
 
 void RecipientLineEdit::keyPressEvent( QKeyEvent *ev )
@@ -101,6 +102,8 @@ RecipientLineNG::RecipientLineNG( QWidget* parent )
 
     connect( mCombo, SIGNAL(activated(int)),
              this, SLOT(slotTypeModified()) );
+
+    connect(mEdit, SIGNAL(addAddress(QString)), SLOT(slotAddRecipient(QString)));
 }
 
 void RecipientLineNG::slotEditingFinished()
@@ -110,6 +113,12 @@ void RecipientLineNG::slotEditingFinished()
     }
 }
 
+void RecipientLineNG::slotAddRecipient(const QString &email)
+{
+    emit addRecipient(this, email);
+    slotReturnPressed();
+}
+
 void RecipientLineNG::slotTypeModified()
 {
     mModified = true;
diff --git a/messagecomposer/recipient/recipientline.h b/messagecomposer/recipient/recipientline.h
index df3c6b7..c3a03cb 100644
--- a/messagecomposer/recipient/recipientline.h
+++ b/messagecomposer/recipient/recipientline.h
@@ -101,6 +101,7 @@ public:
 
 signals:
     void typeModified( RecipientLineNG* );
+    void addRecipient( RecipientLineNG*, const QString &);
     void countChanged();
 
 protected slots:
@@ -117,6 +118,8 @@ private:
     bool mModified;
     QSharedPointer<Recipient> mData;
 
+private slots:
+    void slotAddRecipient(const QString &);
 };
 
 }
diff --git a/messagecomposer/recipient/recipientseditor.cpp b/messagecomposer/recipient/recipientseditor.cpp
index ef38044..71d34a9 100644
--- a/messagecomposer/recipient/recipientseditor.cpp
+++ b/messagecomposer/recipient/recipientseditor.cpp
@@ -49,9 +49,11 @@ RecipientLineFactory::RecipientLineFactory( QObject* parent )
 
 }
 
-KPIM::MultiplyingLine* RecipientLineFactory::newLine(  QWidget *parent )
+KPIM::MultiplyingLine* RecipientLineFactory::newLine(  QWidget *widget )
 {
-    return new RecipientLineNG( parent );
+    RecipientLineNG *line = new RecipientLineNG( widget );
+    connect(line, SIGNAL(addRecipient(RecipientLineNG*,QString)), qobject_cast<RecipientsEditor * >(parent()), SLOT(addRecipient(RecipientLineNG*,QString)));
+    return line;
 }
 
 int RecipientLineFactory::maximumRecipients()
@@ -94,6 +96,11 @@ bool RecipientsEditor::addRecipient( const QString& recipient, Recipient::Type t
     return addData( Recipient::Ptr(  new Recipient ( recipient, type ) ) );
 }
 
+void RecipientsEditor::addRecipient(RecipientLineNG *line, const QString &recipient)
+{
+    addRecipient(recipient, line->recipientType());
+}
+
 void RecipientsEditor::setRecipientString( const QList< KMime::Types::Mailbox >& mailboxes, Recipient::Type type )
 {
     int count = 1;
diff --git a/messagecomposer/recipient/recipientseditor.h b/messagecomposer/recipient/recipientseditor.h
index 9a9605e..e2491a7 100644
--- a/messagecomposer/recipient/recipientseditor.h
+++ b/messagecomposer/recipient/recipientseditor.h
@@ -92,6 +92,7 @@ protected slots:
     void slotLineAdded( KPIM::MultiplyingLine* );
     void slotLineDeleted( int pos );
     void slotCalculateTotal();
+    void addRecipient( RecipientLineNG*, const QString &);
 
 protected:
     virtual RecipientLineNG* activeLine() const;


commit 3d5405fd47d0c56bf5394892b1766b498efa838f
Author: Sandro Knauß <knauss at kolabsys.com>
Date:   Sat Jan 10 14:41:03 2015 +0100

    Add submission protocoll to servertest
    
    The default submission protocol for kolab is submission (587).
    
    KOLAB: 1862

diff --git a/accountwizard/servertest.cpp b/accountwizard/servertest.cpp
index 89fee3b..04ba96a 100644
--- a/accountwizard/servertest.cpp
+++ b/accountwizard/servertest.cpp
@@ -43,6 +43,11 @@ void ServerTest::test( const QString server, const QString protocol )
   kDebug() << server << protocol;
   m_serverTest->setServer( server );
   m_serverTest->setProtocol( protocol );
+  if (protocol == QLatin1String("submission")) {
+    m_serverTest->setProtocol( QLatin1String("smtp") );
+    m_serverTest->setPort(MailTransport::Transport::EnumEncryption::None, 587);
+    m_serverTest->setPort(MailTransport::Transport::EnumEncryption::SSL, 0);        //No ssl port for submission
+  }
   m_serverTest->start();
 }
 




More information about the commits mailing list