Hello community,

here is the log from the commit of package akonadi-server for openSUSE:Factory 
checked in at 2020-07-14 07:45:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/akonadi-server (Old)
 and      /work/SRC/openSUSE:Factory/.akonadi-server.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "akonadi-server"

Tue Jul 14 07:45:31 2020 rev:72 rq:820113 version:20.04.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/akonadi-server/akonadi-server.changes    
2020-06-14 18:17:39.239220157 +0200
+++ /work/SRC/openSUSE:Factory/.akonadi-server.new.3060/akonadi-server.changes  
2020-07-14 07:46:01.279214593 +0200
@@ -1,0 +2,12 @@
+Thu Jul  9 20:08:16 UTC 2020 - Luca Beltrame <lbeltr...@kde.org>
+
+- Update to 20.04.3
+  * New bugfix release
+  * For more details please see:
+  * https://kde.org/announcements/releases/2020-07-apps-update
+- Changes since 20.04.2:
+  * Add .gitlab-ci.yml to run builds for PRs to stable branch
+  * Fix build
+  * Server: fix fetching of attributes with empty data
+
+-------------------------------------------------------------------

Old:
----
  akonadi-20.04.2.tar.xz
  akonadi-20.04.2.tar.xz.sig

New:
----
  akonadi-20.04.3.tar.xz
  akonadi-20.04.3.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ akonadi-server.spec ++++++
--- /var/tmp/diff_new_pack.H5fPrw/_old  2020-07-14 07:46:02.135217357 +0200
+++ /var/tmp/diff_new_pack.H5fPrw/_new  2020-07-14 07:46:02.135217357 +0200
@@ -22,7 +22,7 @@
 %{!?_kapp_version: %define _kapp_version %(echo %{version}| awk -F. '{print 
$1"."$2}')}
 %bcond_without lang
 Name:           akonadi-server
-Version:        20.04.2
+Version:        20.04.3
 Release:        0
 Summary:        PIM Storage Service
 License:        LGPL-2.1-or-later

++++++ akonadi-20.04.2.tar.xz -> akonadi-20.04.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/.gitlab-ci.yml 
new/akonadi-20.04.3/.gitlab-ci.yml
--- old/akonadi-20.04.2/.gitlab-ci.yml  1970-01-01 01:00:00.000000000 +0100
+++ new/akonadi-20.04.3/.gitlab-ci.yml  2020-06-18 08:29:20.000000000 +0200
@@ -0,0 +1,4 @@
+include:
+  - https://invent.kde.org/sysadmin/ci-tooling/raw/master/invent/ci-before.yml
+  - 
https://invent.kde.org/sysadmin/ci-tooling/raw/master/invent/ci-applications-linux.yml
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/CMakeLists.txt 
new/akonadi-20.04.3/CMakeLists.txt
--- old/akonadi-20.04.2/CMakeLists.txt  2020-06-09 02:43:40.000000000 +0200
+++ new/akonadi-20.04.3/CMakeLists.txt  2020-07-07 03:06:02.000000000 +0200
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.5)
 
-set(PIM_VERSION "5.14.2")
+set(PIM_VERSION "5.14.3")
 project(Akonadi VERSION ${PIM_VERSION})
 
 if (MSVC)
@@ -44,7 +44,7 @@
 include(AkonadiMacros)
 
 set(QT_REQUIRED_VERSION "5.12.0")
-set(RELEASE_SERVICE_VERSION "20.04.2")
+set(RELEASE_SERVICE_VERSION "20.04.3")
 set(AKONADI_FULL_VERSION "${PIM_VERSION} (${RELEASE_SERVICE_VERSION})")
 
 configure_file(akonadifull-version.h.cmake 
${CMAKE_CURRENT_BINARY_DIR}/akonadifull-version.h @ONLY)
@@ -105,7 +105,7 @@
 find_package(KAccounts ${KAccounts_MINIMUM_VERSION})
 set_package_properties(KAccounts PROPERTIES
     DESCRIPTION "KDE library for Accounts framework integration"
-    URL "https://cgit.kde.org/kaccounts-integration.git";
+    URL "https://invent.kde.org/network/kaccounts-integration";
     TYPE OPTIONAL
 )
 if (${AccountsQt5_FOUND} AND ${KAccounts_FOUND})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/autotests/libs/asynctest.cpp 
new/akonadi-20.04.3/autotests/libs/asynctest.cpp
--- old/akonadi-20.04.2/autotests/libs/asynctest.cpp    1970-01-01 
01:00:00.000000000 +0100
+++ new/akonadi-20.04.3/autotests/libs/asynctest.cpp    2020-06-18 
08:29:20.000000000 +0200
@@ -0,0 +1,140 @@
+/*
+    Copyright (c) 2020  Daniel Vrátil <dvra...@kde.org>
+
+    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 "async.h"
+
+#include <QObject>
+#include <QTest>
+#include <QTimer>
+
+using namespace Akonadi::Async;
+
+class AsyncTest : public QObject
+{
+    Q_OBJECT
+private Q_SLOTS:
+    void testSimpleTask()
+    {
+        Task<int> task;
+        QVERIFY(!task.isFinished());
+        task.setResult(42);
+        QVERIFY(task.isFinished());
+        QCOMPARE(task.result(), 42);
+    }
+
+    void testSimpleTaskExec()
+    {
+        Task<int> task;
+        QTimer::singleShot(std::chrono::milliseconds{100}, [&task]() mutable {
+            task.setResult(42);
+        });
+        task.wait();
+        QVERIFY(task.isFinished());
+        QCOMPARE(task.result(), 42);
+    }
+
+    void testSimpleThen()
+    {
+        Task<int> task;
+        auto res = task.then([](int val) { return QString::number(val); });
+        QVERIFY(!task.isFinished());
+        QVERIFY(!res.isFinished());
+        task.setResult(42);
+        QVERIFY(task.isFinished());
+        QVERIFY(res.isFinished());
+        QCOMPARE(res.result(), QStringLiteral("42"));
+    }
+
+    void testTemporarySyncTask()
+    {
+        const auto func = []() {
+            Task<int> task;
+            task.setResult(42);
+            return task;
+        };
+
+        const auto res = func().then([](int val) { return 
QString::number(val); });
+        QVERIFY(res.isFinished());
+        QCOMPARE(res.result(), QStringLiteral("42"));
+    }
+
+    void testTemporaryAsyncTask()
+    {
+        const auto func = []() {
+            Task<int> task;
+            QTimer::singleShot(std::chrono::milliseconds{100}, [task]() 
mutable {
+                task.setResult(42);
+            });
+            return task;
+        };
+
+        const auto res = func().then([](int val) { return 
QString::number(val);} );
+        QVERIFY(!res.isFinished());
+        res.wait();
+        QVERIFY(res.isFinished());
+        QCOMPARE(res.result(), QStringLiteral("42"));
+    }
+
+    void testSyncContinuationChain()
+    {
+        const auto f1 = [](int val) { return QString::number(val); };
+        const auto f2 = [](const QString &val) { return val.toInt() * 2; };
+
+        Task<int> t;
+        auto task = t.then(f1).then(f2);
+        QVERIFY(!t.isFinished());
+        QVERIFY(!task.isFinished());
+        t.setResult(42);
+        QVERIFY(t.isFinished());
+        QVERIFY(task.isFinished());
+        QCOMPARE(task.result(), 84);
+    }
+
+    void testAsyncContinuationChain()
+    {
+        const auto f1 = [](int val) {
+            Task<QString> task;
+            QTimer::singleShot(std::chrono::milliseconds{100}, [val, task]() 
mutable { task.setResult(QString::number(val)); });
+            return task;
+        };
+        const auto f2 = [](const QString &val) {
+            Task<int> task;
+            QTimer::singleShot(std::chrono::milliseconds{100}, [val, task]() 
mutable { task.setResult(val.toInt() * 2); });
+            return task;
+        };
+
+        Task<int> task;
+        Task<QString> = task.then(f1);
+        Task<int> result = task.then(f1).then(f2);
+        QTimer::singleShot(std::chrono::milliseconds{100}, [task]() mutable { 
task.setResult(42); });
+        QVERIFY(!task.isFinished());
+        QVERIFY(!result.isFinished());
+        task.wait();
+        QVERIFY(task.isFinished());
+        QVERIFY(!result.isFinished());
+        result.wait();
+        QVERIFY(result.isFinished());
+        QCOMPARE(result.result(), 84);
+    }
+};
+
+QTEST_GUILESS_MAIN(AsyncTest)
+
+#include "asynctest.moc"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/autotests/libs/itemfetchtest.cpp 
new/akonadi-20.04.3/autotests/libs/itemfetchtest.cpp
--- old/akonadi-20.04.2/autotests/libs/itemfetchtest.cpp        2020-06-02 
09:09:51.000000000 +0200
+++ new/akonadi-20.04.3/autotests/libs/itemfetchtest.cpp        2020-06-18 
08:29:20.000000000 +0200
@@ -18,8 +18,8 @@
 */
 
 #include "itemfetchtest.h"
-#include "collectionpathresolver.h"
 #include "testattribute.h"
+#include "test_utils.h"
 
 #include <attributefactory.h>
 #include <itemcreatejob.h>
@@ -43,18 +43,16 @@
 
 void ItemFetchTest::testFetch()
 {
-    CollectionPathResolver *resolver = new 
CollectionPathResolver(QStringLiteral("res1"), this);
-    AKVERIFYEXEC(resolver);
-    int colId = resolver->collection();
+    const int colId = collectionIdFromPath(QStringLiteral("res1"));
+    QVERIFY(colId > -1);
 
     // listing of an empty folder
     ItemFetchJob *job = new ItemFetchJob(Collection(colId), this);
     AKVERIFYEXEC(job);
     QVERIFY(job->items().isEmpty());
 
-    resolver = new CollectionPathResolver(QStringLiteral("res1/foo"), this);
-    AKVERIFYEXEC(resolver);
-    int colId2 = resolver->collection();
+    const int colId2 = collectionIdFromPath(QStringLiteral("res1/foo"));
+    QVERIFY(colId > -1);
 
     // listing of a non-empty folder
     job = new ItemFetchJob(Collection(colId2), this);
@@ -186,9 +184,8 @@
     QFETCH(bool, fetchSinglePayload);
     QFETCH(bool, fetchSingleAttr);
 
-    CollectionPathResolver *resolver = new 
CollectionPathResolver(QStringLiteral("res1/foo"), this);
-    AKVERIFYEXEC(resolver);
-    int colId = resolver->collection();
+    int colId = collectionIdFromPath(QStringLiteral("res1/foo"));
+    QVERIFY(colId >= 0);
 
     Item item;
     item.setMimeType(QStringLiteral("application/octet-stream"));
@@ -275,6 +272,49 @@
     QCOMPARE(c2.remoteId(), QLatin1String("6"));
     const Collection c3 = c2.parentCollection();
     QCOMPARE(c3, Collection::root());
+}
+
+void ItemFetchTest::testRetrievalOfAttributeWithEmptyBody()
+{
+    const auto colId = collectionIdFromPath(QStringLiteral("res1/foo"));
+    QVERIFY(colId > -1);
+
+    auto testFetch = new ItemFetchJob(Collection(colId), this);
+    AKVERIFYEXEC(testFetch);
+    const auto initialCount = testFetch->items().count();
 
+    Item item;
+    item.setMimeType(QStringLiteral("application/octet-stream"));
+    item.setPayload<QByteArray>("body data");
+    auto attr = AttributeFactory::createAttribute("EMPTY");
+    item.addAttribute(attr);
+    auto *create = new ItemCreateJob(item, Collection(colId), this);
+    AKVERIFYEXEC(create);
+    item = create->item();
+
+    // Direct fetch
+    auto *job = new ItemFetchJob(Item(item.id()), this);
+    job->fetchScope().fetchAllAttributes();
+    job->fetchScope().fetchFullPayload();
+    job->fetchScope().setFetchRemoteIdentification(true);
+    job->fetchScope().setIgnoreRetrievalErrors(true);
+    AKVERIFYEXEC(job);
+
+    QCOMPARE(job->items().count(), 1);
+    const auto &fetched = job->items().at(0);
+    QCOMPARE(fetched.id(), item.id());
+    QVERIFY(fetched.hasAttribute("EMPTY"));
+    QVERIFY(fetched.attribute("EMPTY")->serialized().isEmpty());
+
+    // Folder fetch
+    job = new ItemFetchJob(Collection(colId), this);
+    job->fetchScope().fetchAllAttributes();
+    job->fetchScope().fetchFullPayload();
+    job->fetchScope().setFetchRemoteIdentification(true);
+    job->fetchScope().setIgnoreRetrievalErrors(true);
+    AKVERIFYEXEC(job);
+
+    QCOMPARE(job->items().count(), initialCount + 1);
 }
 
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/autotests/libs/itemfetchtest.h 
new/akonadi-20.04.3/autotests/libs/itemfetchtest.h
--- old/akonadi-20.04.2/autotests/libs/itemfetchtest.h  2020-06-02 
09:09:51.000000000 +0200
+++ new/akonadi-20.04.3/autotests/libs/itemfetchtest.h  2020-06-18 
08:29:20.000000000 +0200
@@ -34,6 +34,7 @@
     void testMultipartFetch();
     void testRidFetch();
     void testAncestorRetrieval();
+    void testRetrievalOfAttributeWithEmptyBody();
 };
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/po/cs/libakonadi5.po 
new/akonadi-20.04.3/po/cs/libakonadi5.po
--- old/akonadi-20.04.2/po/cs/libakonadi5.po    2020-06-09 02:43:39.000000000 
+0200
+++ new/akonadi-20.04.3/po/cs/libakonadi5.po    2020-07-07 03:06:01.000000000 
+0200
@@ -12,7 +12,7 @@
 "PO-Revision-Date: 2020-06-01 20:01+0200\n"
 "Last-Translator: Vit Pelcak <v...@pelcak.org>\n"
 "Language-Team: Czech <kde-i18n-...@kde.org>\n"
-"Language: en_US\n"
+"Language: cs\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/po/es/libakonadi5.po 
new/akonadi-20.04.3/po/es/libakonadi5.po
--- old/akonadi-20.04.2/po/es/libakonadi5.po    2020-06-09 02:43:39.000000000 
+0200
+++ new/akonadi-20.04.3/po/es/libakonadi5.po    2020-07-07 03:06:02.000000000 
+0200
@@ -6,7 +6,7 @@
 # Enrique Matias Sanchez (aka Quique) <cronop...@gmail.com>, 2007.
 # Santi <sa...@kde-es.org>, 2008.
 # Dario Andres Rodriguez <andresbajotie...@gmail.com>, 2008, 2009.
-# Eloy Cuadra <ecua...@eloihr.net>, 2009, 2011, 2019.
+# Eloy Cuadra <ecua...@eloihr.net>, 2009, 2011, 2019, %Y.
 # Cristina Yenyxe Gonzalez Garcia <the.blue.valky...@gmail.com>, 2009.
 # Adrián Martínez <sfx...@gmail.com>, 2009, 2010.
 # Cristina Yenyxe González García <the.blue.valky...@gmail.com>, 2010, 2011.
@@ -16,7 +16,7 @@
 "Project-Id-Version: libakonadi\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2020-02-21 03:16+0100\n"
-"PO-Revision-Date: 2019-12-26 22:28+0100\n"
+"PO-Revision-Date: 2020-06-20 21:34+0100\n"
 "Last-Translator: Eloy Cuadra <ecua...@eloihr.net>\n"
 "Language-Team: Spanish <kde-l10n...@kde.org>\n"
 "Language: es\n"
@@ -2286,7 +2286,7 @@
 #, kde-format
 msgctxt "@title:window"
 msgid "Rename Favorite"
-msgstr "Cambiar el nombre del favorito"
+msgstr "Cambiar nombre del favorito"
 
 #: widgets/standardactionmanager.cpp:271
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/po/pt/libakonadi5.po 
new/akonadi-20.04.3/po/pt/libakonadi5.po
--- old/akonadi-20.04.2/po/pt/libakonadi5.po    2020-06-09 02:43:39.000000000 
+0200
+++ new/akonadi-20.04.3/po/pt/libakonadi5.po    2020-07-07 03:06:02.000000000 
+0200
@@ -2398,7 +2398,7 @@
 #: widgets/subscriptiondialog.cpp:211
 #, kde-format
 msgid "Unsubscribe"
-msgstr "Cancelar Subscrição"
+msgstr "Cancelar a Subscrição"
 
 #: widgets/tageditwidget.cpp:120
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/po/sr/akonadi_knut_resource.po 
new/akonadi-20.04.3/po/sr/akonadi_knut_resource.po
--- old/akonadi-20.04.2/po/sr/akonadi_knut_resource.po  2020-06-09 
02:43:39.000000000 +0200
+++ new/akonadi-20.04.3/po/sr/akonadi_knut_resource.po  2020-07-07 
03:06:02.000000000 +0200
@@ -3,8 +3,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: akonadi_knut_resource\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n";
-"POT-Creation-Date: 2018-10-08 03:51+0200\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n";
+"POT-Creation-Date: 2019-05-20 03:13+0200\n"
 "PO-Revision-Date: 2011-08-20 23:55+0200\n"
 "Last-Translator: Chusslove Illich <caslav.i...@gmx.net>\n"
 "Language-Team: Serbian <kde-i18n...@kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/po/sr/libakonadi5.po 
new/akonadi-20.04.3/po/sr/libakonadi5.po
--- old/akonadi-20.04.2/po/sr/libakonadi5.po    2020-06-09 02:43:39.000000000 
+0200
+++ new/akonadi-20.04.3/po/sr/libakonadi5.po    2020-07-07 03:06:02.000000000 
+0200
@@ -4,8 +4,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: libakonadi5\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n";
-"POT-Creation-Date: 2019-04-16 03:34+0200\n"
+"Report-Msgid-Bugs-To: https://bugs.kde.org\n";
+"POT-Creation-Date: 2020-02-21 03:16+0100\n"
 "PO-Revision-Date: 2017-12-17 18:01+0100\n"
 "Last-Translator: Chusslove Illich <caslav.i...@gmx.net>\n"
 "Language-Team: Serbian <kde-i18n...@kde.org>\n"
@@ -29,23 +29,33 @@
 msgid "Your emails"
 msgstr "caslav.i...@gmx.net"
 
-#: agentbase/agentbase.cpp:385 agentbase/preprocessorbase_p.cpp:42
+#: agentbase/accountsintegration.cpp:100
+#, kde-format
+msgid "There is currently no account configured."
+msgstr ""
+
+#: agentbase/accountsintegration.cpp:118
+#, kde-format
+msgid "Accounts integration is not supported"
+msgstr ""
+
+#: agentbase/agentbase.cpp:386 agentbase/preprocessorbase_p.cpp:42
 #, kde-format
 msgid "Unable to register object at dbus: %1"
 msgstr "Не могу да региструјем објекат на д‑бусу: %1"
 
-#: agentbase/agentbase.cpp:476
+#: agentbase/agentbase.cpp:477
 #, kde-format
 msgctxt "Name and type of Akonadi resource"
 msgid "%1 of type %2"
 msgstr "%1 типа %2"
 
-#: agentbase/agentbase.cpp:926
+#: agentbase/agentbase.cpp:927
 #, kde-format
 msgid "Agent identifier"
 msgstr "Идентификатор агента"
 
-#: agentbase/agentbase.cpp:933
+#: agentbase/agentbase.cpp:934
 #, kde-format
 msgid "Akonadi Agent"
 msgstr "Аконадијев агент"
@@ -80,70 +90,70 @@
 msgid "Not configured"
 msgstr "Није подешено"
 
-#: agentbase/resourcebase.cpp:571
+#: agentbase/resourcebase.cpp:572
 #, kde-format
 msgctxt "@label command line option"
 msgid "Resource identifier"
 msgstr "Идентификатор ресурса"
 
-#: agentbase/resourcebase.cpp:578
+#: agentbase/resourcebase.cpp:579
 #, kde-format
 msgid "Akonadi Resource"
 msgstr "Аконадијев ресурс"
 
-#: agentbase/resourcebase.cpp:626
+#: agentbase/resourcebase.cpp:627
 #, kde-format
 msgctxt "@info"
 msgid "Invalid item retrieved"
 msgstr "Добављена лоша ставка"
 
-#: agentbase/resourcebase.cpp:650
+#: agentbase/resourcebase.cpp:651
 #, kde-format
 msgctxt "@info"
 msgid "Error while creating item: %1"
 msgstr "Грешка при стварању ставке: %1"
 
-#: agentbase/resourcebase.cpp:674
+#: agentbase/resourcebase.cpp:675
 #, kde-format
 msgctxt "@info"
 msgid "Error while updating collection: %1"
 msgstr "Грешка при ажурирању збирке: %1"
 
-#: agentbase/resourcebase.cpp:760
+#: agentbase/resourcebase.cpp:761
 #, kde-format
 msgctxt "@info"
 msgid "Updating local collection failed: %1."
 msgstr "Пропало ажурирање локалне збирке: %1."
 
-#: agentbase/resourcebase.cpp:765
+#: agentbase/resourcebase.cpp:766
 #, kde-format
 msgctxt "@info"
 msgid "Updating local items failed: %1."
 msgstr "Пропало ажурирање локалних ставки: %1."
 
-#: agentbase/resourcebase.cpp:783
+#: agentbase/resourcebase.cpp:784
 #, kde-format
 msgctxt "@info"
 msgid "Cannot fetch item in offline mode."
 msgstr "Не могу ван везе дохватити ставку."
 
-#: agentbase/resourcebase.cpp:971
+#: agentbase/resourcebase.cpp:972
 #, kde-format
 msgctxt "@info:status"
 msgid "Syncing folder '%1'"
 msgstr "Синхронизујем фасциклу „%1“"
 
-#: agentbase/resourcebase.cpp:992 agentbase/resourcebase.cpp:999
+#: agentbase/resourcebase.cpp:993 agentbase/resourcebase.cpp:1000
 #, kde-format
 msgid "Failed to retrieve collection for sync."
 msgstr "Не могу да добавим збирку за синхронизовање."
 
-#: agentbase/resourcebase.cpp:1039
+#: agentbase/resourcebase.cpp:1040
 #, kde-format
 msgid "Failed to retrieve collection for attribute sync."
 msgstr "Не могу да добавим збирку за синхронизовање атрибута."
 
-#: agentbase/resourcebase.cpp:1089
+#: agentbase/resourcebase.cpp:1090
 #, kde-format
 msgid "The requested item no longer exists"
 msgstr "Захтевана ставка више не постоји."
@@ -169,22 +179,22 @@
 msgid "Did not find other item for conflict handling"
 msgstr "Није нађена друга ставка за обраду сукоба."
 
-#: core/jobs/agentinstancecreatejob.cpp:86
+#: core/jobs/agentinstancecreatejob.cpp:85
 #, kde-format
 msgid "Unable to access D-Bus interface of created agent."
 msgstr "Не могу да приступим д‑бус сучељу створеног агента."
 
-#: core/jobs/agentinstancecreatejob.cpp:120
+#: core/jobs/agentinstancecreatejob.cpp:119
 #, kde-format
 msgid "Agent instance creation timed out."
 msgstr "Истекло време за стварање примерка агента."
 
-#: core/jobs/agentinstancecreatejob.cpp:186
+#: core/jobs/agentinstancecreatejob.cpp:185
 #, kde-format
 msgid "Unable to obtain agent type '%1'."
 msgstr "Не могу да добавим тип агента „%1“."
 
-#: core/jobs/agentinstancecreatejob.cpp:194
+#: core/jobs/agentinstancecreatejob.cpp:193
 #, kde-format
 msgid "Unable to create agent instance."
 msgstr "Не могу да направим примерак агента."
@@ -247,7 +257,7 @@
 msgstr "Нису задати објекти за премештање"
 
 #: core/jobs/collectionmovejob.cpp:73 core/jobs/itemmovejob.cpp:111
-#: core/jobs/linkjobimpl_p.h:54
+#: core/jobs/linkjobimpl_p.h:53
 #, kde-format
 msgid "No valid destination specified"
 msgstr "Није наведено добро одредиште"
@@ -262,12 +272,12 @@
 msgid "Invalid parent collection"
 msgstr "Лоша родитељска збирка"
 
-#: core/jobs/job.cpp:343
+#: core/jobs/job.cpp:344
 #, kde-format
 msgid "Cannot connect to the Akonadi service."
 msgstr "Не могу да се повежем са сервисом Аконадија."
 
-#: core/jobs/job.cpp:346
+#: core/jobs/job.cpp:347
 #, kde-format
 msgid ""
 "The protocol version of the Akonadi server is incompatible. Make sure you "
@@ -276,17 +286,17 @@
 "Несагласна верзија протокола на серверу Аконадија. Морате инсталирати "
 "сагласну."
 
-#: core/jobs/job.cpp:349
+#: core/jobs/job.cpp:350
 #, kde-format
 msgid "User canceled operation."
 msgstr "Корисник отказа поступак."
 
-#: core/jobs/job.cpp:354
+#: core/jobs/job.cpp:355
 #, kde-format
 msgid "Unknown error."
 msgstr "Непозната грешка."
 
-#: core/jobs/job.cpp:387
+#: core/jobs/job.cpp:388
 #, kde-format
 msgid "Unexpected response"
 msgstr "Неочекиван одзив."
@@ -327,7 +337,7 @@
 msgid "Failed to fetch the resource collection."
 msgstr "Не могу да добавим збирку ресурса."
 
-#: core/jobs/specialcollectionshelperjobs.cpp:623
+#: core/jobs/specialcollectionshelperjobs.cpp:612
 #, kde-format
 msgid "Timeout trying to get lock."
 msgstr "Прековреме при покушају закључавања."
@@ -373,8 +383,8 @@
 msgid "Loading..."
 msgstr "Учитавам..."
 
-#: core/models/entitytreemodel.cpp:547 core/models/entitytreemodel_p.cpp:1419
-#: widgets/selftestdialog.cpp:634
+#: core/models/entitytreemodel.cpp:547 core/models/entitytreemodel_p.cpp:1421
+#: widgets/selftestdialog.cpp:633
 #, kde-format
 msgid "Error"
 msgstr "Грешка"
@@ -394,27 +404,27 @@
 msgid "Name"
 msgstr "име"
 
-#: core/models/entitytreemodel_p.cpp:1406
+#: core/models/entitytreemodel_p.cpp:1408
 #, kde-format
 msgid "Could not copy item:"
 msgstr "Не могу да копирам ставку:"
 
-#: core/models/entitytreemodel_p.cpp:1408
+#: core/models/entitytreemodel_p.cpp:1410
 #, kde-format
 msgid "Could not copy collection:"
 msgstr "Не могу да копирам збирку:"
 
-#: core/models/entitytreemodel_p.cpp:1410
+#: core/models/entitytreemodel_p.cpp:1412
 #, kde-format
 msgid "Could not move item:"
 msgstr "Не могу да преместим ставку:"
 
-#: core/models/entitytreemodel_p.cpp:1412
+#: core/models/entitytreemodel_p.cpp:1414
 #, kde-format
 msgid "Could not move collection:"
 msgstr "Не могу да преместим збирку:"
 
-#: core/models/entitytreemodel_p.cpp:1414
+#: core/models/entitytreemodel_p.cpp:1416
 #, kde-format
 msgid "Could not link entity:"
 msgstr "Не могу да повежем ентитет:"
@@ -651,17 +661,17 @@
 msgid "About %1"
 msgstr ""
 
-#: widgets/agentconfigurationwidget.cpp:118
+#: widgets/agentconfigurationwidget.cpp:112
 #, kde-format
 msgid "The configuration dialog has been opened in another window"
 msgstr ""
 
-#: widgets/agentconfigurationwidget.cpp:125
+#: widgets/agentconfigurationwidget.cpp:119
 #, kde-format
 msgid "Configuration for %1 is already opened elsewhere."
 msgstr ""
 
-#: widgets/agentconfigurationwidget.cpp:127
+#: widgets/agentconfigurationwidget.cpp:121
 #, fuzzy, kde-format
 #| msgid "Failed to create relation."
 msgid "Failed to register %1 configuration dialog."
@@ -969,7 +979,9 @@
 
 # >> @title:window
 #: widgets/collectionrequester.cpp:149
-#, kde-format
+#, fuzzy, kde-format
+#| msgid "Select a collection"
+msgctxt "@title:window"
 msgid "Select a collection"
 msgstr "Избор збирке"
 
@@ -989,49 +1001,49 @@
 msgstr "Одустани"
 
 # >> @item
-#: widgets/conflictresolvedialog.cpp:142
+#: widgets/conflictresolvedialog.cpp:141
 #, kde-format
 msgid "Modification Time"
 msgstr "време измене"
 
 # >> @item
-#: widgets/conflictresolvedialog.cpp:160
+#: widgets/conflictresolvedialog.cpp:159
 #, kde-format
 msgid "Flags"
 msgstr "заставице"
 
 # >> @item
-#: widgets/conflictresolvedialog.cpp:178 widgets/conflictresolvedialog.cpp:185
-#: widgets/conflictresolvedialog.cpp:194
+#: widgets/conflictresolvedialog.cpp:177 widgets/conflictresolvedialog.cpp:184
+#: widgets/conflictresolvedialog.cpp:193
 #, kde-format
 msgid "Attribute: %1"
 msgstr "атрибут: %1"
 
-#: widgets/conflictresolvedialog.cpp:205
+#: widgets/conflictresolvedialog.cpp:204
 #, kde-format
 msgctxt "@title:window"
 msgid "Conflict Resolution"
 msgstr "Разрешење сукоба"
 
-#: widgets/conflictresolvedialog.cpp:211
+#: widgets/conflictresolvedialog.cpp:210
 #, kde-format
 msgctxt "@action:button"
 msgid "Take my version"
 msgstr "Узми моју верзију"
 
-#: widgets/conflictresolvedialog.cpp:217
+#: widgets/conflictresolvedialog.cpp:216
 #, kde-format
 msgctxt "@action:button"
 msgid "Take their version"
 msgstr "Узми туђу верзију"
 
-#: widgets/conflictresolvedialog.cpp:223
+#: widgets/conflictresolvedialog.cpp:222
 #, kde-format
 msgctxt "@action:button"
 msgid "Keep both versions"
 msgstr "Задржи обе верзије"
 
-#: widgets/conflictresolvedialog.cpp:235
+#: widgets/conflictresolvedialog.cpp:234
 #, kde-format
 msgid ""
 "<qt>Your changes conflict with those made by someone else meanwhile."
@@ -1048,7 +1060,7 @@
 "p>"
 
 # >> @item
-#: widgets/conflictresolvedialog.cpp:283
+#: widgets/conflictresolvedialog.cpp:282
 #, kde-format
 msgid "Data"
 msgstr "подаци"
@@ -1215,22 +1227,24 @@
 msgid "Default Name"
 msgstr "Подразумевано име"
 
-#: widgets/selftestdialog.cpp:74
-#, kde-format
+#: widgets/selftestdialog.cpp:73
+#, fuzzy, kde-format
+#| msgid "Akonadi Server Self-Test"
+msgctxt "@title:window"
 msgid "Akonadi Server Self-Test"
 msgstr "Самопроба сервера Аконадија"
 
-#: widgets/selftestdialog.cpp:85
+#: widgets/selftestdialog.cpp:84
 #, kde-format
 msgid "Save Report..."
 msgstr "Сачувај извештај..."
 
-#: widgets/selftestdialog.cpp:87
+#: widgets/selftestdialog.cpp:86
 #, kde-format
 msgid "Copy Report to Clipboard"
 msgstr "Копирај извештај у клипборд"
 
-#: widgets/selftestdialog.cpp:206
+#: widgets/selftestdialog.cpp:205
 #, kde-format
 msgid ""
 "The QtSQL driver '%1' is required by your current Akonadi server "
@@ -1239,7 +1253,7 @@
 "Текућа постава сервера Аконадија захтева драјвер КуТ‑СКуЛ‑а „%1“; нађен је "
 "на систему."
 
-#: widgets/selftestdialog.cpp:208
+#: widgets/selftestdialog.cpp:207
 #, kde-format
 msgid ""
 "The QtSQL driver '%1' is required by your current Akonadi server "
@@ -1251,28 +1265,28 @@
 "Инсталирани су следећи драјвери: %2.\n"
 "Побрините се да и захтевани буде инсталиран."
 
-#: widgets/selftestdialog.cpp:215
+#: widgets/selftestdialog.cpp:214
 #, kde-format
 msgid "Database driver found."
 msgstr "Драјвер базе података нађен."
 
-#: widgets/selftestdialog.cpp:217
+#: widgets/selftestdialog.cpp:216
 #, kde-format
 msgid "Database driver not found."
 msgstr "Драјвер базе података није нађен."
 
-#: widgets/selftestdialog.cpp:225
+#: widgets/selftestdialog.cpp:224
 #, kde-format
 msgid "MySQL server executable not tested."
 msgstr "Извршни фајл сервера МајСКуЛ‑а није испробан."
 
-#: widgets/selftestdialog.cpp:226 widgets/selftestdialog.cpp:267
-#: widgets/selftestdialog.cpp:316
+#: widgets/selftestdialog.cpp:225 widgets/selftestdialog.cpp:266
+#: widgets/selftestdialog.cpp:315
 #, kde-format
 msgid "The current configuration does not require an internal MySQL server."
 msgstr "Тренутна постава не захтева унутрашњи сервер МајСКуЛ‑а."
 
-#: widgets/selftestdialog.cpp:233
+#: widgets/selftestdialog.cpp:232
 #, kde-format
 msgid ""
 "You have currently configured Akonadi to use the MySQL server '%1'.\n"
@@ -1286,63 +1300,63 @@
 "да ли имате неопходна права читања и извршавања за извршни фајл сервера. "
 "Обично се зове mysqld, а тачна локација зависи од дистрибуције."
 
-#: widgets/selftestdialog.cpp:240
+#: widgets/selftestdialog.cpp:239
 #, kde-format
 msgid "MySQL server not found."
 msgstr "Сервер МајСКуЛ‑а није нађен."
 
-#: widgets/selftestdialog.cpp:242
+#: widgets/selftestdialog.cpp:241
 #, kde-format
 msgid "MySQL server not readable."
 msgstr "Сервер МајСКуЛ‑а није читљив."
 
-#: widgets/selftestdialog.cpp:244
+#: widgets/selftestdialog.cpp:243
 #, kde-format
 msgid "MySQL server not executable."
 msgstr "Сервер МајСКуЛ‑а није извршив."
 
-#: widgets/selftestdialog.cpp:246
+#: widgets/selftestdialog.cpp:245
 #, kde-format
 msgid "MySQL found with unexpected name."
 msgstr "МајСКуЛ нађен с неочекиваним именом."
 
-#: widgets/selftestdialog.cpp:248
+#: widgets/selftestdialog.cpp:247
 #, kde-format
 msgid "MySQL server found."
 msgstr "Сервер МајСКуЛ‑а нађен."
 
-#: widgets/selftestdialog.cpp:254
+#: widgets/selftestdialog.cpp:253
 #, kde-format
 msgid "MySQL server found: %1"
 msgstr "Сервер МајСКуЛ‑а нађен: %1"
 
-#: widgets/selftestdialog.cpp:255
+#: widgets/selftestdialog.cpp:254
 #, kde-format
 msgid "MySQL server is executable."
 msgstr "Сервер МајСКуЛ‑а је извршан."
 
-#: widgets/selftestdialog.cpp:257
+#: widgets/selftestdialog.cpp:256
 #, kde-format
 msgid ""
 "Executing the MySQL server '%1' failed with the following error message: '%2'"
 msgstr "Извршавање сервера МајСКуЛ‑а „%1“ пропало, са следећом грешком: „%2“"
 
-#: widgets/selftestdialog.cpp:259
+#: widgets/selftestdialog.cpp:258
 #, kde-format
 msgid "Executing the MySQL server failed."
 msgstr "Извршавање сервера МајСКуЛ‑а пропало."
 
-#: widgets/selftestdialog.cpp:266
+#: widgets/selftestdialog.cpp:265
 #, kde-format
 msgid "MySQL server error log not tested."
 msgstr "Дневник грешака сервера МајСКуЛ‑а није испробан."
 
-#: widgets/selftestdialog.cpp:275
+#: widgets/selftestdialog.cpp:274
 #, kde-format
 msgid "No current MySQL error log found."
 msgstr "Нема текућег дневника грешака МајСКуЛ‑а."
 
-#: widgets/selftestdialog.cpp:276
+#: widgets/selftestdialog.cpp:275
 #, kde-format
 msgid ""
 "The MySQL server did not report any errors during this startup. The log can "
@@ -1351,57 +1365,57 @@
 "Сервер МајСКуЛ‑а није пријавио ниједну грешку током овог покретања. Дневник "
 "се налази у ‘%1’."
 
-#: widgets/selftestdialog.cpp:281
+#: widgets/selftestdialog.cpp:280
 #, kde-format
 msgid "MySQL error log not readable."
 msgstr "Дневник грешака МајСКуЛ‑а није читљив."
 
-#: widgets/selftestdialog.cpp:282
+#: widgets/selftestdialog.cpp:281
 #, kde-format
 msgid "A MySQL server error log file was found but is not readable: %1"
 msgstr "Фајл дневник грешака сервера МајСКуЛ‑а је нађен, али није читљив: %1"
 
-#: widgets/selftestdialog.cpp:290
+#: widgets/selftestdialog.cpp:289
 #, kde-format
 msgid "MySQL server log contains errors."
 msgstr "Дневник сервера МајСКуЛ‑а садржи грешке."
 
-#: widgets/selftestdialog.cpp:291
+#: widgets/selftestdialog.cpp:290
 #, kde-format
 msgid "The MySQL server error log file '%1' contains errors."
 msgstr "Фајл дневника грешака сервера МајСКуЛ‑а ‘%1’ садржи грешке."
 
-#: widgets/selftestdialog.cpp:300
+#: widgets/selftestdialog.cpp:299
 #, kde-format
 msgid "MySQL server log contains warnings."
 msgstr "Дневник сервера МајСКуЛ‑а садржи упозорења."
 
-#: widgets/selftestdialog.cpp:301
+#: widgets/selftestdialog.cpp:300
 #, kde-format
 msgid "The MySQL server log file '%1' contains warnings."
 msgstr "Фајл дневника сервера МајСКуЛ‑а ‘%1’ садржи упозорења."
 
-#: widgets/selftestdialog.cpp:303
+#: widgets/selftestdialog.cpp:302
 #, kde-format
 msgid "MySQL server log contains no errors."
 msgstr "Дневник сервера МајСКуЛ‑а не садржи грешке."
 
-#: widgets/selftestdialog.cpp:304
+#: widgets/selftestdialog.cpp:303
 #, kde-format
 msgid "The MySQL server log file '%1' does not contain any errors or warnings."
 msgstr "Фајл дневника сервера МајСКуЛ‑а ‘%1’ не садржи ни грешке ни упозорења."
 
-#: widgets/selftestdialog.cpp:315
+#: widgets/selftestdialog.cpp:314
 #, kde-format
 msgid "MySQL server configuration not tested."
 msgstr "Постава сервера МајСКуЛ‑а није испробана."
 
-#: widgets/selftestdialog.cpp:324
+#: widgets/selftestdialog.cpp:323
 #, kde-format
 msgid "MySQL server default configuration found."
 msgstr "Подразумевана постава сервера МајСКуЛ‑а нађена."
 
-#: widgets/selftestdialog.cpp:325
+#: widgets/selftestdialog.cpp:324
 #, kde-format
 msgid ""
 "The default configuration for the MySQL server was found and is readable at "
@@ -1409,12 +1423,12 @@
 msgstr ""
 "Подразумевана постава за сервер МајСКуЛ‑а нађена је и читљива код ‘%1’."
 
-#: widgets/selftestdialog.cpp:329
+#: widgets/selftestdialog.cpp:328
 #, kde-format
 msgid "MySQL server default configuration not found."
 msgstr "Подразумевана постава сервера МајСКуЛ‑а није нађена."
 
-#: widgets/selftestdialog.cpp:330
+#: widgets/selftestdialog.cpp:329
 #, kde-format
 msgid ""
 "The default configuration for the MySQL server was not found or was not "
@@ -1425,34 +1439,34 @@
 "Проверите да ли је инсталација Аконадија потпуна, и да ли имате неопходна "
 "права приступа."
 
-#: widgets/selftestdialog.cpp:337
+#: widgets/selftestdialog.cpp:336
 #, kde-format
 msgid "MySQL server custom configuration not available."
 msgstr "Посебна постава сервера МајСКуЛ‑а није доступна."
 
-#: widgets/selftestdialog.cpp:338
+#: widgets/selftestdialog.cpp:337
 #, kde-format
 msgid ""
 "The custom configuration for the MySQL server was not found but is optional."
 msgstr "Посебна постава за сервер МајСКуЛ‑а није нађена, али је опциона."
 
-#: widgets/selftestdialog.cpp:340
+#: widgets/selftestdialog.cpp:339
 #, kde-format
 msgid "MySQL server custom configuration found."
 msgstr "Посебна постава сервера МајСКуЛ‑а нађена."
 
-#: widgets/selftestdialog.cpp:341
+#: widgets/selftestdialog.cpp:340
 #, kde-format
 msgid ""
 "The custom configuration for the MySQL server was found and is readable at %1"
 msgstr "Посебна постава за сервер МајСКуЛ‑а нађена је и читљива код ‘%1’."
 
-#: widgets/selftestdialog.cpp:345
+#: widgets/selftestdialog.cpp:344
 #, kde-format
 msgid "MySQL server custom configuration not readable."
 msgstr "Посебна постава сервера МајСКуЛ‑а није читљива."
 
-#: widgets/selftestdialog.cpp:346
+#: widgets/selftestdialog.cpp:345
 #, kde-format
 msgid ""
 "The custom configuration for the MySQL server was found at %1 but is not "
@@ -1461,47 +1475,47 @@
 "Посебна постава за сервер МајСКуЛ‑а нађена је код ‘%1’, али није читљива. "
 "Проверите права приступа."
 
-#: widgets/selftestdialog.cpp:353
+#: widgets/selftestdialog.cpp:352
 #, kde-format
 msgid "MySQL server configuration not found or not readable."
 msgstr "Постава сервера МајСКуЛ‑а није нађена или није читљива."
 
-#: widgets/selftestdialog.cpp:354
+#: widgets/selftestdialog.cpp:353
 #, kde-format
 msgid "The MySQL server configuration was not found or is not readable."
 msgstr "Постава за сервер МајСКуЛ‑а или није нађена или није читљива."
 
-#: widgets/selftestdialog.cpp:356
+#: widgets/selftestdialog.cpp:355
 #, kde-format
 msgid "MySQL server configuration is usable."
 msgstr "Постава сервера МајСКуЛ‑а употребљива."
 
-#: widgets/selftestdialog.cpp:357
+#: widgets/selftestdialog.cpp:356
 #, kde-format
 msgid "The MySQL server configuration was found at %1 and is readable."
 msgstr "Постава сервера МајСКуЛ‑а нађена је код ‘%1’ и читљива је."
 
-#: widgets/selftestdialog.cpp:386
+#: widgets/selftestdialog.cpp:385
 #, kde-format
 msgid "Cannot connect to PostgreSQL server."
 msgstr "Не могу да се повежем са сервером ПостгреСКуЛ‑а."
 
-#: widgets/selftestdialog.cpp:388
+#: widgets/selftestdialog.cpp:387
 #, kde-format
 msgid "PostgreSQL server found."
 msgstr "Сервер ПостгреСКуЛ‑а нађен."
 
-#: widgets/selftestdialog.cpp:389
+#: widgets/selftestdialog.cpp:388
 #, kde-format
 msgid "The PostgreSQL server was found and connection is working."
 msgstr "Сервер ПостгреСКуЛ‑а је нађен и веза ради."
 
-#: widgets/selftestdialog.cpp:398
+#: widgets/selftestdialog.cpp:397
 #, kde-format
 msgid "akonadictl not found"
 msgstr "akonadictl није нађена"
 
-#: widgets/selftestdialog.cpp:399
+#: widgets/selftestdialog.cpp:398
 #, kde-format
 msgid ""
 "The program 'akonadictl' needs to be accessible in $PATH. Make sure you have "
@@ -1510,12 +1524,12 @@
 "Наредба akonadictl мора бити доступна у путањи. Проверите да ли је сервер "
 "Аконадија инсталиран."
 
-#: widgets/selftestdialog.cpp:405
+#: widgets/selftestdialog.cpp:404
 #, kde-format
 msgid "akonadictl found and usable"
 msgstr "akonadictl нађена и употребљива"
 
-#: widgets/selftestdialog.cpp:406
+#: widgets/selftestdialog.cpp:405
 #, kde-format
 msgid ""
 "The program '%1' to control the Akonadi server was found and could be "
@@ -1527,12 +1541,12 @@
 "Резултат:\n"
 "%2"
 
-#: widgets/selftestdialog.cpp:409
+#: widgets/selftestdialog.cpp:408
 #, kde-format
 msgid "akonadictl found but not usable"
 msgstr "akonadictl нађена али неупотребљива"
 
-#: widgets/selftestdialog.cpp:410
+#: widgets/selftestdialog.cpp:409
 #, kde-format
 msgid ""
 "The program '%1' to control the Akonadi server was found but could not be "
@@ -1547,12 +1561,12 @@
 "%2\n"
 "Проверите да ли је сервер Аконадија исправно инсталиран."
 
-#: widgets/selftestdialog.cpp:419
+#: widgets/selftestdialog.cpp:418
 #, kde-format
 msgid "Akonadi control process registered at D-Bus."
 msgstr "Управљачки процес Аконадија регистрован на д‑бусу."
 
-#: widgets/selftestdialog.cpp:420
+#: widgets/selftestdialog.cpp:419
 #, kde-format
 msgid ""
 "The Akonadi control process is registered at D-Bus which typically indicates "
@@ -1561,12 +1575,12 @@
 "Управљачки процес Аконадија регистрован је на д‑бусу, што обично значи да је "
 "оперативан."
 
-#: widgets/selftestdialog.cpp:422
+#: widgets/selftestdialog.cpp:421
 #, kde-format
 msgid "Akonadi control process not registered at D-Bus."
 msgstr "Управљачки процес Аконадија није регистрован на д‑бусу."
 
-#: widgets/selftestdialog.cpp:423
+#: widgets/selftestdialog.cpp:422
 #, kde-format
 msgid ""
 "The Akonadi control process is not registered at D-Bus which typically means "
@@ -1575,12 +1589,12 @@
 "Управљачки процес Аконадија није регистрован на д‑бусу, што обично значи или "
 "да није покренут, или да је на покретању дошло до кобне грешке."
 
-#: widgets/selftestdialog.cpp:428
+#: widgets/selftestdialog.cpp:427
 #, kde-format
 msgid "Akonadi server process registered at D-Bus."
 msgstr "Серверски процес Аконадија регистрован на д‑бусу"
 
-#: widgets/selftestdialog.cpp:429
+#: widgets/selftestdialog.cpp:428
 #, kde-format
 msgid ""
 "The Akonadi server process is registered at D-Bus which typically indicates "
@@ -1589,12 +1603,12 @@
 "Серверски процес Аконадија регистрован је на д‑бусу, што обично значи да је "
 "оперативан."
 
-#: widgets/selftestdialog.cpp:431
+#: widgets/selftestdialog.cpp:430
 #, kde-format
 msgid "Akonadi server process not registered at D-Bus."
 msgstr "Серверски процес Аконадија није регистрован на д‑бусу."
 
-#: widgets/selftestdialog.cpp:432
+#: widgets/selftestdialog.cpp:431
 #, kde-format
 msgid ""
 "The Akonadi server process is not registered at D-Bus which typically means "
@@ -1603,12 +1617,12 @@
 "Серверски процес Аконадија није регистрован на д‑бусу, што обично значи или "
 "да није покренут, или да је на покретању дошло до кобне грешке."
 
-#: widgets/selftestdialog.cpp:440
+#: widgets/selftestdialog.cpp:439
 #, kde-format
 msgid "Protocol version check not possible."
 msgstr "Није могуће проверити верзију протокола."
 
-#: widgets/selftestdialog.cpp:441
+#: widgets/selftestdialog.cpp:440
 #, kde-format
 msgid ""
 "Without a connection to the server it is not possible to check if the "
@@ -1617,12 +1631,12 @@
 "Без везе са сервером није могуће проверити да ли верзија протокола испуњава "
 "захтеве."
 
-#: widgets/selftestdialog.cpp:445
+#: widgets/selftestdialog.cpp:444
 #, kde-format
 msgid "Server protocol version is too old."
 msgstr "Верзија протокола сервера превише стара."
 
-#: widgets/selftestdialog.cpp:446 widgets/selftestdialog.cpp:452
+#: widgets/selftestdialog.cpp:445 widgets/selftestdialog.cpp:451
 #, kde-format
 msgid ""
 "The server protocol version is %1, but version %2 is required by the client. "
@@ -1632,37 +1646,37 @@
 "Верзија протокола сервера је %1, али клијент захтева верзију %2. Ако сте "
 "недавно ажурирали КДЕ ПИМ‑а, поново покрените и Аконади и ПИМ програме."
 
-#: widgets/selftestdialog.cpp:451
+#: widgets/selftestdialog.cpp:450
 #, kde-format
 msgid "Server protocol version is too new."
 msgstr "Верзија протокола сервера превише нова."
 
-#: widgets/selftestdialog.cpp:457
+#: widgets/selftestdialog.cpp:456
 #, kde-format
 msgid "Server protocol version matches."
 msgstr "Верзија протокола сервера одговара."
 
-#: widgets/selftestdialog.cpp:458
+#: widgets/selftestdialog.cpp:457
 #, kde-format
 msgid "The current Protocol version is %1."
 msgstr "Тренутна верзија протокола је %1."
 
-#: widgets/selftestdialog.cpp:477
+#: widgets/selftestdialog.cpp:476
 #, kde-format
 msgid "Resource agents found."
 msgstr "Агенти ресурса нађени."
 
-#: widgets/selftestdialog.cpp:477
+#: widgets/selftestdialog.cpp:476
 #, kde-format
 msgid "At least one resource agent has been found."
 msgstr "Нађен је бар један агент ресурса."
 
-#: widgets/selftestdialog.cpp:479
+#: widgets/selftestdialog.cpp:478
 #, kde-format
 msgid "No resource agents found."
 msgstr "Агенти ресурса нису нађени."
 
-#: widgets/selftestdialog.cpp:480
+#: widgets/selftestdialog.cpp:479
 #, kde-format
 msgid ""
 "No resource agents have been found, Akonadi is not usable without at least "
@@ -1677,23 +1691,23 @@
 "окружења $XDG_DATA_DIRS постављена је на „%2“, проверите укључује ли ово све "
 "путање где су инсталирани агенти Аконадија."
 
-#: widgets/selftestdialog.cpp:497
+#: widgets/selftestdialog.cpp:496
 #, kde-format
 msgid "No current Akonadi server error log found."
 msgstr "Текући дневник грешака сервера Аконадија није нађен."
 
-#: widgets/selftestdialog.cpp:498
+#: widgets/selftestdialog.cpp:497
 #, kde-format
 msgid ""
 "The Akonadi server did not report any errors during its current startup."
 msgstr "Сервер Аконадија није пријавио ниједну грешку током текућег покретања."
 
-#: widgets/selftestdialog.cpp:500
+#: widgets/selftestdialog.cpp:499
 #, kde-format
 msgid "Current Akonadi server error log found."
 msgstr "Текући дневник грешака сервера Аконадија нађен."
 
-#: widgets/selftestdialog.cpp:501
+#: widgets/selftestdialog.cpp:500
 #, kde-format
 msgid ""
 "The Akonadi server reported errors during its current startup. The log can "
@@ -1702,24 +1716,24 @@
 "Сервер Аконадија пријавио је грешке током текућег покретања. Дневник се "
 "налази у ‘%1’."
 
-#: widgets/selftestdialog.cpp:508
+#: widgets/selftestdialog.cpp:507
 #, kde-format
 msgid "No previous Akonadi server error log found."
 msgstr "Претходни дневник грешака сервера Аконадија нађен."
 
-#: widgets/selftestdialog.cpp:509
+#: widgets/selftestdialog.cpp:508
 #, kde-format
 msgid ""
 "The Akonadi server did not report any errors during its previous startup."
 msgstr ""
 "Сервер Аконадија није пријавио ниједну грешку током претходног покретања."
 
-#: widgets/selftestdialog.cpp:511
+#: widgets/selftestdialog.cpp:510
 #, kde-format
 msgid "Previous Akonadi server error log found."
 msgstr "Претходни дневник грешака сервера Аконадија нађен."
 
-#: widgets/selftestdialog.cpp:512
+#: widgets/selftestdialog.cpp:511
 #, kde-format
 msgid ""
 "The Akonadi server reported errors during its previous startup. The log can "
@@ -1728,12 +1742,12 @@
 "Сервер Аконадија пријавио је грешке при претходном покретању. Дневник се "
 "налази у ‘%1’."
 
-#: widgets/selftestdialog.cpp:522
+#: widgets/selftestdialog.cpp:521
 #, kde-format
 msgid "No current Akonadi control error log found."
 msgstr "Текући дневник грешака управљања Аконадија није нађен."
 
-#: widgets/selftestdialog.cpp:523
+#: widgets/selftestdialog.cpp:522
 #, kde-format
 msgid ""
 "The Akonadi control process did not report any errors during its current "
@@ -1742,12 +1756,12 @@
 "Управљачки процес Аконадија није пријавио ниједну грешку при текућем "
 "покретању."
 
-#: widgets/selftestdialog.cpp:525
+#: widgets/selftestdialog.cpp:524
 #, kde-format
 msgid "Current Akonadi control error log found."
 msgstr "Текући дневник грешака управљања Аконадија нађен."
 
-#: widgets/selftestdialog.cpp:526
+#: widgets/selftestdialog.cpp:525
 #, kde-format
 msgid ""
 "The Akonadi control process reported errors during its current startup. The "
@@ -1756,12 +1770,12 @@
 "Управљачки процес Аконадија пријавио је грешке током текућег покретања. "
 "Дневник се налази у ‘%1’."
 
-#: widgets/selftestdialog.cpp:533
+#: widgets/selftestdialog.cpp:532
 #, kde-format
 msgid "No previous Akonadi control error log found."
 msgstr "Претходни дневник грешака управљања Аконадија нађен."
 
-#: widgets/selftestdialog.cpp:534
+#: widgets/selftestdialog.cpp:533
 #, kde-format
 msgid ""
 "The Akonadi control process did not report any errors during its previous "
@@ -1770,12 +1784,12 @@
 "Управљачки процес Аконадија није пријавио ниједну грешку током претходног "
 "покретања."
 
-#: widgets/selftestdialog.cpp:536
+#: widgets/selftestdialog.cpp:535
 #, kde-format
 msgid "Previous Akonadi control error log found."
 msgstr "Претходни дневник грешака управљања Аконадија нађен."
 
-#: widgets/selftestdialog.cpp:537
+#: widgets/selftestdialog.cpp:536
 #, kde-format
 msgid ""
 "The Akonadi control process reported errors during its previous startup. The "
@@ -1784,12 +1798,12 @@
 "Управљачки процес Аконадија пријавио је грешке током претходног покретања. "
 "Дневник се налази у ‘%1’."
 
-#: widgets/selftestdialog.cpp:546
+#: widgets/selftestdialog.cpp:545
 #, kde-format
 msgid "Akonadi was started as root"
 msgstr "Аконади покренут под кореном"
 
-#: widgets/selftestdialog.cpp:546
+#: widgets/selftestdialog.cpp:545
 #, kde-format
 msgid ""
 "Running Internet-facing applications as root/administrator exposes you to "
@@ -1801,12 +1815,12 @@
 "инсталација Аконадија, неће допустити извршавање под кореном да би вас "
 "заштитио од ових ризика."
 
-#: widgets/selftestdialog.cpp:548
+#: widgets/selftestdialog.cpp:547
 #, kde-format
 msgid "Akonadi is not running as root"
 msgstr "Аконади не ради под кореном"
 
-#: widgets/selftestdialog.cpp:548
+#: widgets/selftestdialog.cpp:547
 #, kde-format
 msgid ""
 "Akonadi is not running as a root/administrator user, which is the "
@@ -1816,12 +1830,12 @@
 "препоручена постава за безбедност система."
 
 # >> @title:window
-#: widgets/selftestdialog.cpp:627
+#: widgets/selftestdialog.cpp:626
 #, kde-format
 msgid "Save Test Report"
 msgstr "Уписивање извештаја о пробама"
 
-#: widgets/selftestdialog.cpp:634
+#: widgets/selftestdialog.cpp:633
 #, kde-format
 msgid "Could not open file '%1'"
 msgstr "Не могу да отворим фајл ‘%1’"
@@ -2394,37 +2408,39 @@
 msgid "Go Online"
 msgstr "На везу"
 
-#: widgets/standardactionmanager.cpp:1443
+#: widgets/standardactionmanager.cpp:1448
 #, kde-format
 msgid "Move to This Folder"
 msgstr "Премести у ову фасциклу"
 
-#: widgets/standardactionmanager.cpp:1443
+#: widgets/standardactionmanager.cpp:1448
 #, kde-format
 msgid "Copy to This Folder"
 msgstr "Копирај у ову фасциклу"
 
-#: widgets/subscriptiondialog.cpp:161
-#, kde-format
+#: widgets/subscriptiondialog.cpp:160
+#, fuzzy, kde-format
+#| msgid "Local Subscriptions"
+msgctxt "@title:window"
 msgid "Local Subscriptions"
 msgstr "Локалне претплате"
 
-#: widgets/subscriptiondialog.cpp:191
+#: widgets/subscriptiondialog.cpp:190
 #, kde-format
 msgid "Search:"
 msgstr "Тражи:"
 
-#: widgets/subscriptiondialog.cpp:199
+#: widgets/subscriptiondialog.cpp:198
 #, kde-format
 msgid "Subscribed only"
 msgstr "Само у претплаћеним"
 
-#: widgets/subscriptiondialog.cpp:208
+#: widgets/subscriptiondialog.cpp:207
 #, kde-format
 msgid "Subscribe"
 msgstr "Претплати се"
 
-#: widgets/subscriptiondialog.cpp:212
+#: widgets/subscriptiondialog.cpp:211
 #, kde-format
 msgid "Unsubscribe"
 msgstr "Откажи претплату"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/po/zh_CN/akonadi_knut_resource.po 
new/akonadi-20.04.3/po/zh_CN/akonadi_knut_resource.po
--- old/akonadi-20.04.2/po/zh_CN/akonadi_knut_resource.po       2020-06-09 
02:43:40.000000000 +0200
+++ new/akonadi-20.04.3/po/zh_CN/akonadi_knut_resource.po       2020-07-07 
03:06:02.000000000 +0200
@@ -8,8 +8,8 @@
 "Project-Id-Version: kdeorg\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2019-05-20 03:13+0200\n"
-"PO-Revision-Date: 2020-05-09 13:51\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2020-06-24 08:02\n"
+"Last-Translator: \n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
@@ -17,8 +17,10 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Crowdin-Project: kdeorg\n"
+"X-Crowdin-Project-ID: 269464\n"
 "X-Crowdin-Language: zh-CN\n"
-"X-Crowdin-File: /kf5-stable/messages/pim/akonadi_knut_resource.pot\n"
+"X-Crowdin-File: /kf5-stable/messages/akonadi/akonadi_knut_resource.pot\n"
+"X-Crowdin-File-ID: 3104\n"
 
 #: knutresource.cpp:78
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/akonadi-20.04.2/po/zh_CN/libakonadi5.po 
new/akonadi-20.04.3/po/zh_CN/libakonadi5.po
--- old/akonadi-20.04.2/po/zh_CN/libakonadi5.po 2020-06-09 02:43:40.000000000 
+0200
+++ new/akonadi-20.04.3/po/zh_CN/libakonadi5.po 2020-07-07 03:06:02.000000000 
+0200
@@ -8,8 +8,8 @@
 "Project-Id-Version: kdeorg\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2020-02-21 03:16+0100\n"
-"PO-Revision-Date: 2020-05-09 13:51\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2020-06-24 08:02\n"
+"Last-Translator: \n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
@@ -17,8 +17,10 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Crowdin-Project: kdeorg\n"
+"X-Crowdin-Project-ID: 269464\n"
 "X-Crowdin-Language: zh-CN\n"
-"X-Crowdin-File: /kf5-stable/messages/pim/libakonadi5.pot\n"
+"X-Crowdin-File: /kf5-stable/messages/akonadi/libakonadi5.pot\n"
+"X-Crowdin-File-ID: 3177\n"
 
 #, kde-format
 msgctxt "NAME OF TRANSLATORS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/akonadi-20.04.2/src/server/handler/itemfetchhelper.cpp 
new/akonadi-20.04.3/src/server/handler/itemfetchhelper.cpp
--- old/akonadi-20.04.2/src/server/handler/itemfetchhelper.cpp  2020-06-02 
09:09:51.000000000 +0200
+++ new/akonadi-20.04.3/src/server/handler/itemfetchhelper.cpp  2020-06-18 
08:29:20.000000000 +0200
@@ -602,13 +602,14 @@
             const QByteArray data = 
Utils::variantToByteArray(partQuery.value(PartQueryDataColumn));
             if (mItemFetchScope.checkCachedPayloadPartsOnly()) {
                 if (!data.isEmpty()) {
-                    cachedParts << ptIter.value();
+                    cachedParts.push_back(ptIter.value());
                 }
-                partQuery.next();
-            } else {
-                if (mItemFetchScope.ignoreErrors() && data.isEmpty()) {
+            } else if (mItemFetchScope.fullPayload() || 
mItemFetchScope.allAttributes() || 
mItemFetchScope.requestedParts().contains(ptIter.value())) {
+                // FIXME: Should this fail the entire retrieval, if 
IgnoreErrors is not set?
+                if (ptIter->startsWith("PLD") && 
mItemFetchScope.ignoreErrors() && data.isEmpty()) {
                     //We wanted the payload, couldn't get it, and are ignoring 
errors. Skip the item.
-                    //This is not an error though, it's fine to have empty 
payload parts (to denote existing but not cached parts)
+                    //This is not an error though, it's fine to have empty 
payload parts (to denote existing but not cached parts).
+                    //Empty attributes are never an error, since they never 
expire.
                     qCDebug(AKONADISERVER_LOG) << "item" << id << "has an 
empty payload part in parttable for part" << metaPart.name();
                     skipItem = true;
                     break;
@@ -621,13 +622,9 @@
                     partData.setData(data);
                 }
                 partData.setMetaData(metaPart);
-
-                if (mItemFetchScope.requestedParts().contains(ptIter.value()) 
|| mItemFetchScope.fullPayload() || mItemFetchScope.allAttributes()) {
-                    parts.append(partData);
-                }
-
-                partQuery.next();
+                parts.append(partData);
             }
+            partQuery.next();
         }
         response.setParts(parts);
 



Reply via email to