Hello community, here is the log from the commit of package kdepim4-runtime for openSUSE:Factory checked in at 2014-10-16 18:11:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kdepim4-runtime (Old) and /work/SRC/openSUSE:Factory/.kdepim4-runtime.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdepim4-runtime" Changes: -------- --- /work/SRC/openSUSE:Factory/kdepim4-runtime/kdepim4-runtime.changes 2014-09-18 07:57:51.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kdepim4-runtime.new/kdepim4-runtime.changes 2014-10-16 18:11:43.000000000 +0200 @@ -1,0 +2,16 @@ +Sun Oct 12 12:00:37 UTC 2014 - [email protected] + +- Update to 4.14.2 + * KDE 4.14.2 SC Bugfix Release + * See http://www.kde.org/announcements/announce-4.14.2.php +- Drop upstream patches split_large_store_commands.patch and + use_changeitemsflagstask.patch due to upstream inclusion + +------------------------------------------------------------------- +Fri Oct 3 09:24:07 UTC 2014 - [email protected] + +- Add upstream patches split_large_store_commands.patch and + use_changeitemsflagstask.patch to resolve issues when deleting + several thousands of emails (bko#339565) + +------------------------------------------------------------------- Old: ---- kdepim-runtime-4.14.1.tar.xz New: ---- kdepim-runtime-4.14.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdepim4-runtime.spec ++++++ --- /var/tmp/diff_new_pack.bDJDTZ/_old 2014-10-16 18:11:44.000000000 +0200 +++ /var/tmp/diff_new_pack.bDJDTZ/_new 2014-10-16 18:11:44.000000000 +0200 @@ -17,7 +17,7 @@ Name: kdepim4-runtime -Version: 4.14.1 +Version: 4.14.2 Release: 0 Summary: Base package of kdepim License: LGPL-2.1+ ++++++ kdepim-runtime-4.14.1.tar.xz -> kdepim-runtime-4.14.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/CMakeLists.txt new/kdepim-runtime-4.14.2/CMakeLists.txt --- old/kdepim-runtime-4.14.1/CMakeLists.txt 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/CMakeLists.txt 2014-10-09 18:42:34.000000000 +0200 @@ -36,7 +36,7 @@ set(KDEPIM_RUNTIME_DEV_VERSION "") endif() -set(KDEPIM_RUNTIME_VERSION "4.14.1${KDEPIM_RUNTIME_DEV_VERSION}") +set(KDEPIM_RUNTIME_VERSION "4.14.2${KDEPIM_RUNTIME_DEV_VERSION}") configure_file(kdepim-runtime-version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/kdepim-runtime-version.h @ONLY) @@ -53,7 +53,7 @@ include(KDE4Defaults) # KdepimLibs -find_package(KdepimLibs 4.14.1) +find_package(KdepimLibs 4.14.2) set_package_properties(KdepimLibs PROPERTIES DESCRIPTION "The KDEPIM libraries" URL "http://www.kde.org" TYPE REQUIRED) #Boost diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/accountwizard/providerpage.cpp new/kdepim-runtime-4.14.2/accountwizard/providerpage.cpp --- old/kdepim-runtime-4.14.1/accountwizard/providerpage.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/accountwizard/providerpage.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -40,6 +40,7 @@ ui.searchLine->setProxy( proxy ); m_fetchItem = new QStandardItem( i18n( "Fetching provider list..." ) ); + m_fetchItem->setFlags(Qt::NoItemFlags); m_model->appendRow( m_fetchItem ); // we can start the search, whenever the user reaches this page, chances diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/agents/newmailnotifier/CMakeLists.txt new/kdepim-runtime-4.14.2/agents/newmailnotifier/CMakeLists.txt --- old/kdepim-runtime-4.14.1/agents/newmailnotifier/CMakeLists.txt 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/agents/newmailnotifier/CMakeLists.txt 2014-10-09 18:42:34.000000000 +0200 @@ -15,6 +15,7 @@ newmailnotifierattribute.cpp specialnotifierjob.cpp newmailnotifierselectcollectionwidget.cpp + newmailnotifiershowmessagejob.cpp util.cpp ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/agents/newmailnotifier/newmailnotifiershowmessagejob.cpp new/kdepim-runtime-4.14.2/agents/newmailnotifier/newmailnotifiershowmessagejob.cpp --- old/kdepim-runtime-4.14.1/agents/newmailnotifier/newmailnotifiershowmessagejob.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kdepim-runtime-4.14.2/agents/newmailnotifier/newmailnotifiershowmessagejob.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -0,0 +1,57 @@ +/* + Copyright (c) 2014 Montel Laurent <[email protected]> + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "newmailnotifiershowmessagejob.h" + +#include <QDBusConnection> +#include <QDBusInterface> +#include <QDBusReply> +#include <QDBusConnectionInterface> +#include <ktoolinvocation.h> + +NewMailNotifierShowMessageJob::NewMailNotifierShowMessageJob(Akonadi::Item::Id id, QObject *parent) + : KJob(parent), + mId(id) +{ +} + +NewMailNotifierShowMessageJob::~NewMailNotifierShowMessageJob() +{ +} + +void NewMailNotifierShowMessageJob::start() +{ + if (mId < 0) { + Q_EMIT emitResult(); + return; + } + const QString kmailInterface = QLatin1String("org.kde.kmail"); + QDBusReply<bool> reply = QDBusConnection::sessionBus().interface()->isServiceRegistered(kmailInterface); + if (!reply.isValid() || !reply.value()) { + // Program is not already running, so start it + QString errmsg; + if (KToolInvocation::startServiceByDesktopName(QLatin1String("kmail2"), QString(), &errmsg)) { + qDebug()<<" Can not start kmail"<<errmsg; + setError( UserDefinedError ); + Q_EMIT emitResult(); + return; + } + } + QDBusInterface kmail(kmailInterface, QLatin1String("/KMail"), QLatin1String("org.kde.kmail.kmail")); + kmail.call(QLatin1String("showMail"), mId); + Q_EMIT emitResult(); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/agents/newmailnotifier/newmailnotifiershowmessagejob.h new/kdepim-runtime-4.14.2/agents/newmailnotifier/newmailnotifiershowmessagejob.h --- old/kdepim-runtime-4.14.1/agents/newmailnotifier/newmailnotifiershowmessagejob.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kdepim-runtime-4.14.2/agents/newmailnotifier/newmailnotifiershowmessagejob.h 2014-10-09 18:42:34.000000000 +0200 @@ -0,0 +1,39 @@ +/* + Copyright (c) 2014 Montel Laurent <[email protected]> + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef NEWMAILNOTIFIERSHOWMESSAGEJOB_H +#define NEWMAILNOTIFIERSHOWMESSAGEJOB_H + +#include <KJob> +#include <Akonadi/Item> + +class NewMailNotifierShowMessageJob : public KJob +{ + Q_OBJECT +public: + explicit NewMailNotifierShowMessageJob(Akonadi::Item::Id id, QObject *parent=0); + ~NewMailNotifierShowMessageJob(); + + void start(); + +private: + Akonadi::Item::Id mId; + +}; + + +#endif // NEWMAILNOTIFIERSHOWMESSAGEJOB_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/agents/newmailnotifier/specialnotifierjob.cpp new/kdepim-runtime-4.14.2/agents/newmailnotifier/specialnotifierjob.cpp --- old/kdepim-runtime-4.14.1/agents/newmailnotifier/specialnotifierjob.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/agents/newmailnotifier/specialnotifierjob.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -15,6 +15,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "newmailnotifiershowmessagejob.h" #include "specialnotifierjob.h" #include "util.h" #include "newmailnotifieragentsettings.h" @@ -28,16 +29,14 @@ #include <KPIMUtils/Email> #include <KMime/Message> -#include <KToolInvocation> #include <KLocalizedString> #include <QTextDocument> -#include <QDBusInterface> #include <QDBusConnection> +#include <QDBusInterface> #include <QDBusConnectionInterface> - SpecialNotifierJob::SpecialNotifierJob(const QStringList &listEmails, const QString &path, Akonadi::Item::Id id, QObject *parent) : QObject(parent), mListEmails(listEmails), @@ -175,16 +174,6 @@ void SpecialNotifierJob::slotOpenMail() { - const QString kmailInterface = QLatin1String("org.kde.kmail"); - QDBusReply<bool> reply = QDBusConnection::sessionBus().interface()->isServiceRegistered(kmailInterface); - if (!reply.isValid() || !reply.value()) { - // Program is not already running, so start it - QString errmsg; - if (KToolInvocation::startServiceByDesktopName(QLatin1String("kmail2"), QString(), &errmsg)) { - qDebug()<<" Can not start kmail"<<errmsg; - return; - } - } - QDBusInterface kmail(kmailInterface, QLatin1String("/KMail"), QLatin1String("org.kde.kmail.kmail")); - kmail.call(QLatin1String("showMail"), mItemId); + NewMailNotifierShowMessageJob *job = new NewMailNotifierShowMessageJob(mItemId); + job->start(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/akonotes/akonotesresource.cpp new/kdepim-runtime-4.14.2/resources/akonotes/akonotesresource.cpp --- old/kdepim-runtime-4.14.1/resources/akonotes/akonotesresource.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/akonotes/akonotesresource.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -43,3 +43,8 @@ synchronize(); // heavy to do it in the MaildirResource method, which already has sync on demand working properly } +QString AkonotesResource::defaultResourceType() +{ + return QLatin1String("notes"); +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/akonotes/akonotesresource.h new/kdepim-runtime-4.14.2/resources/akonotes/akonotesresource.h --- old/kdepim-runtime-4.14.1/resources/akonotes/akonotesresource.h 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/akonotes/akonotesresource.h 2014-10-09 18:42:34.000000000 +0200 @@ -30,7 +30,8 @@ explicit AkonotesResource( const QString &id ); ~AkonotesResource(); - public Q_SLOTS: + virtual QString defaultResourceType(); +public Q_SLOTS: virtual void configure( WId windowId ); protected: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/dav/common/davitemcreatejob.cpp new/kdepim-runtime-4.14.2/resources/dav/common/davitemcreatejob.cpp --- old/kdepim-runtime-4.14.1/resources/dav/common/davitemcreatejob.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/dav/common/davitemcreatejob.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -28,7 +28,7 @@ #include <QtCore/QDebug> DavItemCreateJob::DavItemCreateJob( const DavUtils::DavUrl &url, const DavItem &item, QObject *parent ) - : DavJobBase( parent ), mUrl( url ), mItem( item ) + : DavJobBase( parent ), mUrl( url ), mItem( item ), mRedirectCount( 0 ) { } @@ -44,6 +44,7 @@ job->addMetaData( QLatin1String("customHTTPHeader"), headers ); job->addMetaData( QLatin1String("cookies"), QLatin1String("none") ); job->addMetaData( QLatin1String("no-auth-prompt"), QLatin1String("true") ); + job->setRedirectionHandlingEnabled( false ); connect( job, SIGNAL(result(KJob*)), this, SLOT(davJobFinished(KJob*)) ); } @@ -56,12 +57,12 @@ void DavItemCreateJob::davJobFinished( KJob *job ) { KIO::StoredTransferJob *storedJob = qobject_cast<KIO::StoredTransferJob*>( job ); + const int responseCode = storedJob->queryMetaData( QLatin1String("responsecode") ).isEmpty() ? + 0 : + storedJob->queryMetaData( QLatin1String("responsecode") ).toInt(); - if ( storedJob->error() ) { - const int responseCode = storedJob->queryMetaData( QLatin1String("responsecode") ).isEmpty() ? - 0 : - storedJob->queryMetaData( QLatin1String("responsecode") ).toInt(); + if ( storedJob->error() ) { QString err; if ( storedJob->error() != KIO::ERR_SLAVE_DEFINED ) err = KIO::buildErrorString( storedJob->error(), storedJob->errorText() ); @@ -90,10 +91,29 @@ url = storedJob->url(); else if ( location.startsWith( QLatin1Char('/') ) ) { url = storedJob->url(); - url.setPath( location ); + url.setEncodedPath( location.toLatin1() ); } else url = location; + if ( responseCode == 301 || responseCode == 302 || responseCode == 307 || responseCode == 308 ) { + if ( mRedirectCount > 4 ) { + setLatestResponseCode( responseCode ); + setError( UserDefinedError + responseCode ); + emitResult(); + } + else { + KUrl itemUrl( url ); + itemUrl.setUser( mUrl.url().user() ); + itemUrl.setPassword( mUrl.url().password() ); + mUrl.setUrl( itemUrl ); + + ++mRedirectCount; + start(); + } + + return; + } + url.setUser( QString() ); mItem.setUrl( url.prettyUrl() ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/dav/common/davitemcreatejob.h new/kdepim-runtime-4.14.2/resources/dav/common/davitemcreatejob.h --- old/kdepim-runtime-4.14.1/resources/dav/common/davitemcreatejob.h 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/dav/common/davitemcreatejob.h 2014-10-09 18:42:34.000000000 +0200 @@ -58,6 +58,7 @@ private: DavUtils::DavUrl mUrl; DavItem mItem; + int mRedirectCount; }; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/dav/common/davitemmodifyjob.cpp new/kdepim-runtime-4.14.2/resources/dav/common/davitemmodifyjob.cpp --- old/kdepim-runtime-4.14.1/resources/dav/common/davitemmodifyjob.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/dav/common/davitemmodifyjob.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -87,7 +87,7 @@ url = storedJob->url(); else if ( location.startsWith( QLatin1Char('/') ) ) { url = storedJob->url(); - url.setPath( location ); + url.setEncodedPath( location.toLatin1() ); } else url = location; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/dav/protocols/caldavprotocol.cpp new/kdepim-runtime-4.14.2/resources/dav/protocols/caldavprotocol.cpp --- old/kdepim-runtime-4.14.1/resources/dav/protocols/caldavprotocol.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/dav/protocols/caldavprotocol.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -31,7 +31,7 @@ CaldavProtocol::CaldavProtocol() { // Only fetch items for the last 3 months - QString startTime = QDateTime::currentDateTimeUtc().addMonths( -3 ).toString( "yyyyMMddTHHMMss" ); + QString startTime = QDateTime::currentDateTimeUtc().addMonths( -3 ).toString( "yyyyMMddTHHMMssZ" ); /* * Create a document like the following: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/dav/resource/davgroupwareresource.cpp new/kdepim-runtime-4.14.2/resources/dav/resource/davgroupwareresource.cpp --- old/kdepim-runtime-4.14.1/resources/dav/resource/davgroupwareresource.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/dav/resource/davgroupwareresource.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -834,11 +834,13 @@ item.setRemoteRevision( davItem.etag() ); mEtagCache.setEtag( item.remoteId(), davItem.etag() ); - for ( int i = 0; i < extraItems.size(); ++i ) - mEtagCache.setEtag( extraItems.at( i ).remoteId(), davItem.etag() ); + if ( !extraItems.isEmpty() ) { + for ( int i = 0; i < extraItems.size(); ++i ) + mEtagCache.setEtag( extraItems.at( i ).remoteId(), davItem.etag() ); - Akonadi::ItemModifyJob *j = new Akonadi::ItemModifyJob( extraItems ); - j->setIgnorePayload( true ); + Akonadi::ItemModifyJob *j = new Akonadi::ItemModifyJob( extraItems ); + j->setIgnorePayload( true ); + } if ( updateType == ItemUpdateChange ) changeCommitted( item ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/gmail/gmailresource.desktop new/kdepim-runtime-4.14.2/resources/gmail/gmailresource.desktop --- old/kdepim-runtime-4.14.1/resources/gmail/gmailresource.desktop 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/gmail/gmailresource.desktop 2014-10-09 18:42:34.000000000 +0200 @@ -11,6 +11,7 @@ Name[hu]=Gmail Name[it]=Gmail Name[ko]=GMail +Name[nb]=Gmail Name[nds]=GMail Name[nl]=Gmail Name[pl]=Gmail @@ -38,6 +39,7 @@ Comment[hu]=Csatlakozik a Gmail fiókjához Comment[it]=Connette al tuo account Gmail Comment[ko]=내 GMail 계정에 연결 +Comment[nb]=Kobler til Gmail-kontoen din Comment[nds]=Koppelt sik Dien GMail-Konto to Comment[nl]=Verbindt met uw Gmail account Comment[pl]=Łączy z kontem Gmail diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/imap/CMakeLists.txt new/kdepim-runtime-4.14.2/resources/imap/CMakeLists.txt --- old/kdepim-runtime-4.14.1/resources/imap/CMakeLists.txt 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/imap/CMakeLists.txt 2014-10-09 18:42:34.000000000 +0200 @@ -32,7 +32,6 @@ noinferiorsattribute.cpp passwordrequesterinterface.cpp removecollectionrecursivetask.cpp - removeitemstask.cpp resourcestateinterface.cpp resourcetask.cpp retrievecollectionmetadatatask.cpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/imap/changeitemsflagstask.cpp new/kdepim-runtime-4.14.2/resources/imap/changeitemsflagstask.cpp --- old/kdepim-runtime-4.14.1/resources/imap/changeitemsflagstask.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/imap/changeitemsflagstask.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -25,7 +25,8 @@ #include <kimap/storejob.h> ChangeItemsFlagsTask::ChangeItemsFlagsTask( ResourceStateInterface::Ptr resource, QObject* parent ): - ResourceTask( ResourceTask::DeferIfNoSession, resource, parent ) + ResourceTask( ResourceTask::DeferIfNoSession, resource, parent ), + m_processedItems(0) { } @@ -82,8 +83,14 @@ KIMAP::StoreJob* ChangeItemsFlagsTask::prepareJob( KIMAP::Session *session ) { KIMAP::ImapSet set; - foreach( const Akonadi::Item &item, items() ) { - set.add( item.remoteId().toLong() ); + const Akonadi::Item::List &allItems = items(); + // Split the request to multiple smaller requests of 2000 UIDs each - various IMAP + // servers have various limits on maximum size of a request + // 2000 is a random number that sounds like a good compromise between performance + // and functionality (i.e. 2000 UIDs should be supported by any server out there) + for (int i = 0, count = qMin(2000, allItems.count() - m_processedItems); i < count; ++i) { + set.add( allItems[m_processedItems].remoteId().toLong() ); + ++m_processedItems; } KIMAP::StoreJob *store = new KIMAP::StoreJob( session ); @@ -117,12 +124,15 @@ kWarning() << "Flag append failed: " << job->errorString(); cancelTask( job->errorString() ); } else { - kDebug(5327) << removedFlags(); - if ( removedFlags().isEmpty() ) { - changeProcessed(); + KIMAP::Session *session = qobject_cast<KIMAP::Job*>(job)->session(); + if ( m_processedItems < items().count() ) { + triggerAppendFlagsJob( session ); + } else if ( removedFlags().isEmpty() ) { + changeProcessed(); } else { - KIMAP::StoreJob *storeJob = qobject_cast<KIMAP::StoreJob*>( job ); - triggerRemoveFlagsJob( storeJob->session() ); + kDebug(5327) << removedFlags(); + m_processedItems = 0; + triggerRemoveFlagsJob( session ); } } } @@ -133,7 +143,11 @@ kWarning() << "Flag remove failed: " << job->errorString(); cancelTask( job->errorString() ); } else { - changeProcessed(); + if ( m_processedItems < items().count() ) { + triggerRemoveFlagsJob( qobject_cast<KIMAP::Job*>(job)->session() ); + } else { + changeProcessed(); + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/imap/changeitemsflagstask.h new/kdepim-runtime-4.14.2/resources/imap/changeitemsflagstask.h --- old/kdepim-runtime-4.14.1/resources/imap/changeitemsflagstask.h 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/imap/changeitemsflagstask.h 2014-10-09 18:42:34.000000000 +0200 @@ -48,6 +48,9 @@ virtual void triggerAppendFlagsJob( KIMAP::Session *session ); virtual void triggerRemoveFlagsJob( KIMAP::Session *session ); +protected: + int m_processedItems; + }; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/imap/imapresourcebase.cpp new/kdepim-runtime-4.14.2/resources/imap/imapresourcebase.cpp --- old/kdepim-runtime-4.14.1/resources/imap/imapresourcebase.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/imap/imapresourcebase.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -70,7 +70,6 @@ #include "movecollectiontask.h" #include "moveitemstask.h" #include "removecollectionrecursivetask.h" -#include "removeitemstask.h" #include "retrievecollectionmetadatatask.h" #include "retrievecollectionstask.h" #include "retrieveitemtask.h" @@ -80,6 +79,7 @@ #include "settingspasswordrequester.h" #include "sessionpool.h" #include "sessionuiproxy.h" +#include "imapflags.h" #include "resourceadaptor.h" @@ -392,7 +392,7 @@ emit status( AgentBase::Running, i18nc( "@info:status", "Removing items" ) ); - startTask(new RemoveItemsTask( createResourceState(TaskArguments(items)), this )); + startTask(new ChangeItemsFlagsTask( createResourceState(TaskArguments(items, QSet<QByteArray>() << ImapFlags::Deleted, QSet<QByteArray>())), this )); } void ImapResourceBase::itemsMoved( const Akonadi::Item::List &items, const Akonadi::Collection &source, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/imap/removeitemstask.cpp new/kdepim-runtime-4.14.2/resources/imap/removeitemstask.cpp --- old/kdepim-runtime-4.14.1/resources/imap/removeitemstask.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/imap/removeitemstask.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,106 +0,0 @@ -/* - Copyright (c) 2010 Klarälvdalens Datakonsult AB, - a KDAB Group company <[email protected]> - Author: Kevin Ottens <[email protected]> - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - -#include "removeitemstask.h" - -#include <KDE/KDebug> -#include <KDE/KLocale> - -#include <kimap/selectjob.h> -#include <kimap/session.h> -#include <kimap/storejob.h> - -#include "imapflags.h" - -RemoveItemsTask::RemoveItemsTask( ResourceStateInterface::Ptr resource, QObject *parent ) - : ResourceTask( DeferIfNoSession, resource, parent ) -{ - -} - -RemoveItemsTask::~RemoveItemsTask() -{ -} - -void RemoveItemsTask::doStart( KIMAP::Session *session ) -{ - // The imap specs do not allow for a single message to be deleted. We can only - // set the \Deleted flag. The message will actually be deleted when EXPUNGE will - // be issued on the next retrieveItems(). - - const QString mailBox = mailBoxForCollection( items().first().parentCollection() ); - - kDebug(5327) << "Deleting " << items().size() << " messages from " << mailBox; - - if ( session->selectedMailBox() != mailBox ) { - KIMAP::SelectJob *select = new KIMAP::SelectJob( session ); - select->setMailBox( mailBox ); - - connect( select, SIGNAL(result(KJob*)), - this, SLOT(onSelectDone(KJob*)) ); - - select->start(); - - } else { - triggerStoreJob( session ); - } -} - -void RemoveItemsTask::onSelectDone( KJob *job ) -{ - if ( job->error() ) { - kWarning() << "Failed to select mailbox: " << job->errorString(); - cancelTask( job->errorString() ); - } else { - KIMAP::SelectJob *select = static_cast<KIMAP::SelectJob*>( job ); - triggerStoreJob( select->session() ); - } -} - -void RemoveItemsTask::triggerStoreJob( KIMAP::Session *session ) -{ - KIMAP::ImapSet set; - foreach( const Akonadi::Item &item, items() ) { - set.add( item.remoteId().toLong() ); - } - - KIMAP::StoreJob *store = new KIMAP::StoreJob( session ); - store->setUidBased( true ); - store->setSequenceSet( set ); - store->setFlags( QList<QByteArray>() << ImapFlags::Deleted ); - store->setMode( KIMAP::StoreJob::AppendFlags ); - connect( store, SIGNAL(result(KJob*)), SLOT(onStoreFlagsDone(KJob*)) ); - store->start(); -} - -void RemoveItemsTask::onStoreFlagsDone( KJob *job ) -{ - //TODO use UID EXPUNGE if available - if ( job->error() ) { - kWarning() << "Failed to append flags: " << job->errorString(); - cancelTask( job->errorString() ); - } else { - changeProcessed(); - } -} - - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/imap/removeitemstask.h new/kdepim-runtime-4.14.2/resources/imap/removeitemstask.h --- old/kdepim-runtime-4.14.1/resources/imap/removeitemstask.h 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/imap/removeitemstask.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,46 +0,0 @@ -/* - Copyright (c) 2010 Klarälvdalens Datakonsult AB, - a KDAB Group company <[email protected]> - Author: Kevin Ottens <[email protected]> - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This library is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public - License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to the - Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. -*/ - -#ifndef REMOVEITEMSTASK_H -#define REMOVEITEMSTASK_H - -#include "resourcetask.h" - -class RemoveItemsTask : public ResourceTask -{ - Q_OBJECT - -public: - explicit RemoveItemsTask( ResourceStateInterface::Ptr resource, QObject *parent = 0 ); - virtual ~RemoveItemsTask(); - -private slots: - void onSelectDone( KJob *job ); - void onStoreFlagsDone( KJob *job ); - -protected: - virtual void doStart( KIMAP::Session *session ); - -private: - void triggerStoreJob( KIMAP::Session *session ); -}; - -#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/imap/tests/CMakeLists.txt new/kdepim-runtime-4.14.2/resources/imap/tests/CMakeLists.txt --- old/kdepim-runtime-4.14.1/resources/imap/tests/CMakeLists.txt 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/imap/tests/CMakeLists.txt 2014-10-09 18:42:34.000000000 +0200 @@ -32,7 +32,6 @@ testmovecollectiontask testmoveitemstask testremovecollectionrecursivetask - testremoveitemstask testretrievecollectionmetadatatask testretrievecollectionstask testretrieveitemtask diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/imap/tests/testremoveitemstask.cpp new/kdepim-runtime-4.14.2/resources/imap/tests/testremoveitemstask.cpp --- old/kdepim-runtime-4.14.1/resources/imap/tests/testremoveitemstask.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/imap/tests/testremoveitemstask.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,105 +0,0 @@ -/* - Copyright (c) 2010 Klarälvdalens Datakonsult AB, a KDAB Group company <[email protected]> - Author: Kevin Ottens <[email protected]> - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or ( at your option ) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "imaptestbase.h" - -#include "removeitemstask.h" - -class TestRemoveItemsTask : public ImapTestBase -{ - Q_OBJECT - -private slots: - void shouldAppendMessage_data() - { - QTest::addColumn<Akonadi::Item>( "item" ); - QTest::addColumn< QList<QByteArray> >( "scenario" ); - QTest::addColumn<QStringList>( "callNames" ); - - Akonadi::Collection collection; - Akonadi::Item item; - QSet<QByteArray> parts; - QString messageContent; - QList<QByteArray> scenario; - QStringList callNames; - - collection = createCollectionChain( QLatin1String("/INBOX/Foo") ); - item = Akonadi::Item( 2 ); - item.setParentCollection( collection ); - item.setRemoteId( "5" ); - - scenario.clear(); - scenario << defaultPoolConnectionScenario() - << "C: A000003 SELECT \"INBOX/Foo\"" - << "S: A000003 OK select done" - << "C: A000004 UID STORE 5 +FLAGS (\\Deleted)" - << "S: A000004 OK store done"; - - callNames.clear(); - callNames << "changeProcessed"; - - QTest::newRow( "modifying mail content" ) << item << scenario << callNames; - } - - void shouldAppendMessage() - { - QFETCH( Akonadi::Item, item ); - QFETCH( QList<QByteArray>, scenario ); - QFETCH( QStringList, callNames ); - - FakeServer server; - server.setScenario( scenario ); - server.startAndWait(); - - SessionPool pool( 1 ); - - pool.setPasswordRequester( createDefaultRequester() ); - QVERIFY( pool.connect( createDefaultAccount() ) ); - QVERIFY( waitForSignal( &pool, SIGNAL(connectDone(int,QString)) ) ); - - DummyResourceState::Ptr state = DummyResourceState::Ptr(new DummyResourceState); - state->setItem( item ); - RemoveItemsTask *task = new RemoveItemsTask( state ); - task->start( &pool ); - - QTRY_COMPARE( state->calls().count(), callNames.size() ); - for ( int i = 0; i < callNames.size(); i++ ) { - QString command = QString::fromUtf8(state->calls().at( i ).first); - QVariant parameter = state->calls().at( i ).second; - - if ( command == "cancelTask" && callNames[i] != "cancelTask" ) { - kDebug() << "Got a cancel:" << parameter.toString(); - } - - QCOMPARE( command, callNames[i] ); - - if ( command == "cancelTask" ) { - QVERIFY( !parameter.toString().isEmpty() ); - } - } - - QVERIFY( server.isAllScenarioDone() ); - - server.quit(); - } -}; - -QTEST_KDEMAIN_CORE( TestRemoveItemsTask ) - -#include "testremoveitemstask.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/kolab/kolabresource.cpp new/kdepim-runtime-4.14.2/resources/kolab/kolabresource.cpp --- old/kdepim-runtime-4.14.1/resources/kolab/kolabresource.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/kolab/kolabresource.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -46,7 +46,7 @@ } -QString KolabResource::defaultName() +QString KolabResource::defaultName() const { return i18n("Kolab Resource"); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/kolab/kolabresource.desktop new/kdepim-runtime-4.14.2/resources/kolab/kolabresource.desktop --- old/kdepim-runtime-4.14.1/resources/kolab/kolabresource.desktop 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/kolab/kolabresource.desktop 2014-10-09 18:42:34.000000000 +0200 @@ -57,6 +57,7 @@ Comment[hu]=Hozzáférést biztosít a Kolab csoportmunka-mappákhoz és e-mailekhez egy Kolab IMAP kiszolgálón. Comment[it]=Fornisce l'accesso a cartelle e messaggi di posta di groupware Kolab su un server Kolab IMAP. Comment[ko]=Kolab 그룹웨어 폴더 및 Kolab IMAP 서버에 접근합니다 +Comment[nb]=Gir tilgang til Kolab gruppevaremapper og e-post på en KOLAB IMAP-tjener. Comment[nds]=Stellt Togriep op Kolab-Arbeitkoppelornern un Nettpost op en Kolab-IMAP-Server praat. Comment[nl]=Levert toegang tot Kolab groupwaremappen en e-mail op een Kolab IMAP-server. Comment[pl]=Zapewnia dostęp do katalogów do pracy grupowej Kolab i poczty elektronicznej na serwerze Kolab IMAP. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/kolab/kolabresource.h new/kdepim-runtime-4.14.2/resources/kolab/kolabresource.h --- old/kdepim-runtime-4.14.1/resources/kolab/kolabresource.h 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/kolab/kolabresource.h 2014-10-09 18:42:34.000000000 +0200 @@ -50,7 +50,7 @@ virtual void collectionChanged(const Akonadi::Collection &collection, const QSet<QByteArray> &parts); //collectionRemoved & collectionMoved do not require adjustments since they don't change the annotations - virtual QString defaultName(); + virtual QString defaultName() const; private Q_SLOTS: void onItemRetrievalCollectionFetchDone(KJob *job); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/kolabproxy/itemaddedjob.cpp new/kdepim-runtime-4.14.2/resources/kolabproxy/itemaddedjob.cpp --- old/kdepim-runtime-4.14.1/resources/kolabproxy/itemaddedjob.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/kolabproxy/itemaddedjob.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -20,6 +20,7 @@ #include "itemaddedjob.h" #include <Akonadi/ItemCreateJob> #include <Akonadi/KMime/MessageFlags> +#include <klocale.h> ItemAddedJob::ItemAddedJob(const Akonadi::Item& kolabItem, const Akonadi::Collection& col, KolabHandler& handler, QObject* parent) :KJob(parent), @@ -43,6 +44,7 @@ if (!mHandler.toKolabFormat(mKolabItem, imapItem)) { kWarning() << "Failed to convert item to kolab format: " << mKolabItem.id(); setError(KJob::UserDefinedError); + setErrorText(i18n("Failed to convert item %1 to kolab format", mKolabItem.id())); emitResult(); return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/kolabproxy/itemchangedjob.cpp new/kdepim-runtime-4.14.2/resources/kolabproxy/itemchangedjob.cpp --- old/kdepim-runtime-4.14.1/resources/kolabproxy/itemchangedjob.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/kolabproxy/itemchangedjob.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -22,6 +22,7 @@ #include <Akonadi/ItemFetchJob> #include <Akonadi/CollectionFetchJob> #include <Akonadi/ItemModifyJob> +#include <klocale.h> ItemChangedJob::ItemChangedJob(const Akonadi::Item& kolabItem, HandlerManager& handler, QObject* parent) : KJob(parent), @@ -43,6 +44,7 @@ if (job->error() || fetchjob->collections().isEmpty()) { kWarning() << "collection fetch job failed " << job->errorString() << fetchjob->collections().isEmpty(); setError(KJob::UserDefinedError); + setErrorText(job->errorText()); emitResult(); return; } @@ -51,6 +53,7 @@ if (!mHandler) { kWarning() << "Couldn't find a handler for the collection, but we should have one: " << imapCollection.id(); setError(KJob::UserDefinedError); + setErrorText(job->errorText()); emitResult(); return; } @@ -62,7 +65,9 @@ void ItemChangedJob::onImapItemFetchDone(KJob* job) { if ( job->error() ) { + kWarning() << job->error() << job->errorString(); setError(KJob::UserDefinedError); + setErrorText(job->errorText()); emitResult(); return; } @@ -81,6 +86,7 @@ if (!mHandler->toKolabFormat(mKolabItem, imapItem)) { kWarning() << "Failed to convert item to kolab format: " << mKolabItem.id(); setError(KJob::UserDefinedError); + setErrorText(i18n("Failed to convert item %1 to kolab format", mKolabItem.id())); emitResult(); return; } @@ -95,6 +101,7 @@ if ( job->error() || fetchJob->collections().isEmpty() ) { kWarning() << "Collection fetch job failed" << fetchJob->errorString(); setError(KJob::UserDefinedError); + setErrorText(job->errorText()); emitResult(); return; } @@ -109,6 +116,7 @@ { if (job->error()) { setError(KJob::UserDefinedError); + setErrorText(job->errorText()); } emitResult(); } @@ -117,6 +125,7 @@ { if (job->error()) { setError(KJob::UserDefinedError); + setErrorText(job->errorText()); } emitResult(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/kolabproxy/kolabproxyresource.desktop new/kdepim-runtime-4.14.2/resources/kolabproxy/kolabproxyresource.desktop --- old/kdepim-runtime-4.14.1/resources/kolabproxy/kolabproxyresource.desktop 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/kolabproxy/kolabproxyresource.desktop 2014-10-09 18:42:34.000000000 +0200 @@ -11,6 +11,7 @@ Name[hu]=Kolab csoportmunka-kiszolgáló (örökölt) Name[it]=Server di groupware Kolab (legacy) Name[ko]=Kolab 그룹웨어 서버(레거시) +Name[nb]=Kolab groupware-tjener (gammeldags) Name[nds]=Kolab-Arbeitkoppel-Server (öller) Name[nl]=Kolab groupwareserver (oude versie) Name[pl]=Serwer Kolab Groupware (przestarzały) @@ -37,6 +38,7 @@ Comment[hu]=Hozzáférést biztosít a Kolab csoportmunka-mappákhoz egy IMAP kiszolgálón (külön IMAP azonosítók beállítása szükséges). Ez az erőforrás elavult, használja helyette a Kolab csoportmunka-kiszolgálót. Comment[it]=Fornisce l'accesso a cartelle di groupware Kolab su un server IMAP (gli account IMAP devono essere impostati separatamente). Questa risorsa è obsoleta, usa invece la risorsa «Server di groupware Kolab». Comment[ko]=IMAP 서버에 있는 Kolab 그룹웨어 폴더에 접근합니다(IMAP 계정은 별도로 설정해야 함). 이 자원은 오래되었으므로 Kolab 그룹웨어 서버 자원을 사용하십시오. +Comment[nb]=Gir tilgang til Kolab gruppevaremapper på en IMAP-tjener (IMAP-kontoer må settes opp separat). Denne ressursen er utdatert, bruk i stedet ressursen Kolab groupware-tjener. Comment[nds]=Stellt Togriep op Kolab-Arbeitkoppel-Ornern op en IMAP-Server praat (IMAP-Kontos mööt enkelt inricht warrn). Disse Ressource is överhaalt, bruuk ansteed bitte de Kolab-Arbeitkoppelserver-Ressource. Comment[nl]=Levert toegang tot Kolab groupwaremappen op een IMAP-server (het is nodig om IMAP-accounts separaat in te stellen). Deze hulpbron is verouderd, gebruik in plaats daarvan de Kolab groupwareserver. Comment[pl]=Zapewnia dostęp do katalogów do pracy grupowej Kolab na serwerze IMAP (konta IMAP muszą zostać ustawione osobno). Zasób ten jest przestarzały, zamiast niego użyj Serwera Kolab Groupware. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/kolabproxy/revertitemchangesjob.cpp new/kdepim-runtime-4.14.2/resources/kolabproxy/revertitemchangesjob.cpp --- old/kdepim-runtime-4.14.1/resources/kolabproxy/revertitemchangesjob.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/kolabproxy/revertitemchangesjob.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -42,6 +42,7 @@ { if ( job->error() ) { setError(KJob::UserDefinedError); + setErrorText(job->errorText()); emitResult(); return; } @@ -80,6 +81,7 @@ { if (job->error()) { setError(KJob::UserDefinedError); + setErrorText(job->errorText()); } emitResult(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/kolabproxy/setupkolab.cpp new/kdepim-runtime-4.14.2/resources/kolabproxy/setupkolab.cpp --- old/kdepim-runtime-4.14.1/resources/kolabproxy/setupkolab.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/kolabproxy/setupkolab.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -48,6 +48,7 @@ SetupKolab::~SetupKolab() { delete m_ui; + delete m_versionUi; } KConfigGroup SetupKolab::getConfigGroup() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/maildir/maildirresource.cpp new/kdepim-runtime-4.14.2/resources/maildir/maildirresource.cpp --- old/kdepim-runtime-4.14.1/resources/maildir/maildirresource.cpp 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/maildir/maildirresource.cpp 2014-10-09 18:42:34.000000000 +0200 @@ -175,7 +175,11 @@ kDebug() << "build a new path"; const QString dataDir = componentData().dirs()->localxdgdatadir(); // we use "id" to get an unique path - path = dataDir + id; + path = dataDir; + if (!defaultResourceType().isEmpty()) { + path += defaultResourceType() + QLatin1Char('/'); + } + path += id; kDebug() << "set the path" << path; mSettings->setPath( path ); // set the resource into container mode for its top level @@ -241,6 +245,11 @@ mSettings->writeConfig(); } +QString MaildirResource::defaultResourceType() +{ + return QString(); +} + void MaildirResource::configure( WId windowId ) { ConfigDialog dlg( mSettings, identifier() ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepim-runtime-4.14.1/resources/maildir/maildirresource.h new/kdepim-runtime-4.14.2/resources/maildir/maildirresource.h --- old/kdepim-runtime-4.14.1/resources/maildir/maildirresource.h 2014-09-10 10:22:05.000000000 +0200 +++ new/kdepim-runtime-4.14.2/resources/maildir/maildirresource.h 2014-10-09 18:42:34.000000000 +0200 @@ -43,7 +43,8 @@ MaildirResource( const QString &id ); ~MaildirResource(); - public Q_SLOTS: + virtual QString defaultResourceType(); +public Q_SLOTS: virtual void configure( WId windowId ); protected Q_SLOTS: -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
