From 297f0d5a1df9c1b9ca5e9287bb2e603985c232cf Mon Sep 17 00:00:00 2001 From: Heiko Becker Date: Tue, 1 Feb 2022 17:06:49 +0100 Subject: [PATCH 1/6] Port away from deprecated qSort to std::sort --- src/Imap/Model/MailboxTree.cpp | 2 +- src/Imap/Model/Model.cpp | 7 +++---- src/Imap/Model/ThreadingMsgListModel.cpp | 2 +- src/Imap/Parser/Sequence.cpp | 3 ++- src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp | 2 +- src/Imap/Tasks/SortTask.cpp | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Imap/Model/MailboxTree.cpp b/src/Imap/Model/MailboxTree.cpp index e61f59c5..d9a03fc3 100644 --- a/src/Imap/Model/MailboxTree.cpp +++ b/src/Imap/Model/MailboxTree.cpp @@ -590,7 +590,7 @@ void TreeItemMailbox::handleVanished(Model *const model, const Responses::Vanish QModelIndex listIndex = list->toIndex(model); auto uids = resp.uids; - qSort(uids); + std::sort(uids.begin(), uids.end()); // Remove duplicates -- even that garbage can be present in a perfectly valid VANISHED :( uids.erase(std::unique(uids.begin(), uids.end()), uids.end()); diff --git a/src/Imap/Model/Model.cpp b/src/Imap/Model/Model.cpp index 1d539e22..aff8ea43 100644 --- a/src/Imap/Model/Model.cpp +++ b/src/Imap/Model/Model.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include "Model.h" #include "Common/FindWithUnknown.h" #include "Common/InvokeMethod.h" @@ -350,7 +349,7 @@ void Model::finalizeList(Parser *parser, TreeItemMailbox *mailboxPtr) ++it; } } - qSort(mailboxes.begin(), mailboxes.end(), MailboxNameComparator); + std::sort(mailboxes.begin(), mailboxes.end(), MailboxNameComparator); // Remove duplicates; would be great if this could be done in a STLish way, // but unfortunately std::unique won't help here (the "duped" part of the @@ -406,7 +405,7 @@ void Model::finalizeIncrementalList(Parser *parser, const QString &parentMailbox ++it; } } - qSort(mailboxes.begin(), mailboxes.end(), MailboxNameComparator); + std::sort(mailboxes.begin(), mailboxes.end(), MailboxNameComparator); if (mailboxes.size() == 0) { qDebug() << "Weird, no matching LIST response for our prompt after CREATE"; @@ -1259,7 +1258,7 @@ void Model::copyMoveMessages(TreeItemMailbox *sourceMbox, const QString &destMai Q_ASSERT(sourceMbox); - qSort(uids); + std::sort(uids.begin(), uids.end()); QModelIndexList messages; Sequence seq; diff --git a/src/Imap/Model/ThreadingMsgListModel.cpp b/src/Imap/Model/ThreadingMsgListModel.cpp index 29786022..76ef94c2 100644 --- a/src/Imap/Model/ThreadingMsgListModel.cpp +++ b/src/Imap/Model/ThreadingMsgListModel.cpp @@ -718,7 +718,7 @@ void ThreadingMsgListModel::slotIncrementalThreadingAvailable(const Responses::E for (Responses::ESearch::IncrementalThreadingData_t::const_iterator it = data.constBegin(); it != data.constEnd(); ++it) { gatherAllUidsFromThreadNode(affectedUids, it->thread); } - qSort(affectedUids); + std::sort(affectedUids.begin(), affectedUids.end()); QList affectedMessages = const_cast(realModel)-> findMessagesByUids(static_cast(mailboxIndex.internalPointer()), affectedUids); QHash uidToPtrCache; diff --git a/src/Imap/Parser/Sequence.cpp b/src/Imap/Parser/Sequence.cpp index 31b257bb..0e2cd314 100644 --- a/src/Imap/Parser/Sequence.cpp +++ b/src/Imap/Parser/Sequence.cpp @@ -23,6 +23,7 @@ #include "Sequence.h" #include #include +#include namespace Imap { @@ -114,7 +115,7 @@ Sequence &Sequence::add(uint num) Sequence Sequence::fromVector(Imap::Uids numbers) { Q_ASSERT(!numbers.isEmpty()); - qSort(numbers); + std::sort(numbers.begin(), numbers.end()); Sequence seq(numbers.first()); for (int i = 1; i < numbers.size(); ++i) { seq.add(numbers[i]); diff --git a/src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp b/src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp index 9d6f8279..89fdf4ef 100644 --- a/src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp +++ b/src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp @@ -974,7 +974,7 @@ void ObtainSynchronizedMailboxTask::finalizeSearch() } } - qSort(uidMap); + std::sort(uidMap.begin(), uidMap.end()); if (!uidMap.isEmpty() && uidMap.front() == 0) { throw MailboxException("UID (E)SEARCH response contains invalid UID zero"); } diff --git a/src/Imap/Tasks/SortTask.cpp b/src/Imap/Tasks/SortTask.cpp index 347ec85e..8c2b4d69 100644 --- a/src/Imap/Tasks/SortTask.cpp +++ b/src/Imap/Tasks/SortTask.cpp @@ -179,7 +179,7 @@ bool SortTask::handleSearch(const Imap::Responses::Search *const resp) // That just doesn't look like worth it. sortResult += resp->items; - qSort(sortResult); + std::sort(sortResult.begin(), sortResult.end()); sortResult.erase(std::unique(sortResult.begin(), sortResult.end()), sortResult.end()); return true; } -- GitLab From 268637f7b63059a065dffcb87c13166ebb0d3d3f Mon Sep 17 00:00:00 2001 From: Heiko Becker Date: Tue, 1 Feb 2022 17:31:43 +0100 Subject: [PATCH 2/6] Port away from deprecated qFind to std::find --- src/Imap/Model/ThreadingMsgListModel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Imap/Model/ThreadingMsgListModel.cpp b/src/Imap/Model/ThreadingMsgListModel.cpp index 76ef94c2..58b606a5 100644 --- a/src/Imap/Model/ThreadingMsgListModel.cpp +++ b/src/Imap/Model/ThreadingMsgListModel.cpp @@ -1130,7 +1130,7 @@ void ThreadingMsgListModel::pruneTree() Q_ASSERT(parent != threading.end()); // and the node itself has to be found in its parent's children - QList::iterator childIt = qFind(parent->children.begin(), parent->children.end(), it->internalId); + QList::iterator childIt = std::find(parent->children.begin(), parent->children.end(), it->internalId); Q_ASSERT(childIt != parent->children.end()); // The offset of this child might no longer be correct, though -- we're postponing the actual deletion until later @@ -1175,7 +1175,7 @@ void ThreadingMsgListModel::pruneTree() if (parent->internalId == 0) { // Update the list of all thread roots - QList::iterator rootIt = qFind(threadedRootIds.begin(), threadedRootIds.end(), it->internalId); + QList::iterator rootIt = std::find(threadedRootIds.begin(), threadedRootIds.end(), it->internalId); if (rootIt != threadedRootIds.end()) *rootIt = replaceWith->internalId; } -- GitLab From f06067dfa9bbb28cc385e526e9a7b261fe8448bc Mon Sep 17 00:00:00 2001 From: Heiko Becker Date: Tue, 1 Feb 2022 17:33:32 +0100 Subject: [PATCH 3/6] Port away from deprecated qLowerBound to std::lower_bound --- src/Imap/Parser/Sequence.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Imap/Parser/Sequence.cpp b/src/Imap/Parser/Sequence.cpp index 0e2cd314..55adb6aa 100644 --- a/src/Imap/Parser/Sequence.cpp +++ b/src/Imap/Parser/Sequence.cpp @@ -106,7 +106,7 @@ Imap::Uids Sequence::toVector() const Sequence &Sequence::add(uint num) { Q_ASSERT(kind == DISTINCT); - auto it = qLowerBound(numbers.begin(), numbers.end(), num); + auto it = std::lower_bound(numbers.begin(), numbers.end(), num); if (it == numbers.end() || *it != num) numbers.insert(it, num); return *this; -- GitLab From b7e9532a3209d64c15937e29b359be40fbd2fff7 Mon Sep 17 00:00:00 2001 From: Heiko Becker Date: Tue, 1 Feb 2022 17:34:15 +0100 Subject: [PATCH 4/6] Port away from deprecated qLess to std::less --- tests/Misc/test_algorithms.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/Misc/test_algorithms.cpp b/tests/Misc/test_algorithms.cpp index a9a53745..86ce9e16 100644 --- a/tests/Misc/test_algorithms.cpp +++ b/tests/Misc/test_algorithms.cpp @@ -21,6 +21,7 @@ */ #include +#include #include "test_algorithms.h" #include "Common/FindWithUnknown.h" @@ -38,9 +39,9 @@ void TestCommonAlgorithms::testLowerBoundWithUnknown() QFETCH(int, needle); QFETCH(int, offset); - QList::const_iterator it = Common::linearLowerBoundWithUnknownElements(list.constBegin(), list.constEnd(), needle, isZero, qLess()); + QList::const_iterator it = Common::linearLowerBoundWithUnknownElements(list.constBegin(), list.constEnd(), needle, isZero, std::less()); QCOMPARE(it - list.constBegin(), offset); - it = Common::lowerBoundWithUnknownElements(list.constBegin(), list.constEnd(), needle, isZero, qLess()); + it = Common::lowerBoundWithUnknownElements(list.constBegin(), list.constEnd(), needle, isZero, std::less()); QCOMPARE(it - list.constBegin(), offset); } -- GitLab From 42ea2f0ec8de8fc2ea3e607d0b694dbd30e3ffaf Mon Sep 17 00:00:00 2001 From: Heiko Becker Date: Sat, 29 Jan 2022 23:54:40 +0100 Subject: [PATCH 5/6] Port from the deprecated QProcess::error() to errorOccurred Raises the Qt requirement to 5.6. --- CMakeLists.txt | 3 ++- src/MSA/Sendmail.cpp | 2 +- src/Streams/IODeviceSocket.cpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a3d54166..54512029 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,7 +69,7 @@ else() set(QTKEYCHAIN_DEPENDS "") endif() -find_package(Qt5Core 5.2 REQUIRED) +find_package(Qt5Core 5.6 REQUIRED) find_package(Qt5Gui REQUIRED) find_package(Qt5Network REQUIRED) find_package(Qt5Sql REQUIRED) @@ -183,6 +183,7 @@ add_definitions(-DQT_STRICT_ITERATORS) add_definitions(-DQT_USE_QSTRINGBUILDER) add_definitions(-DQT_USE_FAST_OPERATOR_PLUS) add_definitions(-DQT_USE_FAST_CONCATENATION) +add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050600) if(NOT MSVC) # We're using C++11's threading features (std::async in particular), and that requires "some threading". With GCC and diff --git a/src/MSA/Sendmail.cpp b/src/MSA/Sendmail.cpp index f72f4927..d88d16c4 100644 --- a/src/MSA/Sendmail.cpp +++ b/src/MSA/Sendmail.cpp @@ -30,7 +30,7 @@ Sendmail::Sendmail(QObject *parent, const QString &command, const QStringList &a proc = new QProcess(this); connect(proc, &QProcess::started, this, &Sendmail::handleStarted); connect(proc, static_cast(&QProcess::finished), this, &Sendmail::handleFinished); - connect(proc, static_cast(&QProcess::error), this, &Sendmail::handleError); + connect(proc, &QProcess::errorOccurred, this, &Sendmail::handleError); connect(proc, &QIODevice::bytesWritten, this, &Sendmail::handleBytesWritten); } diff --git a/src/Streams/IODeviceSocket.cpp b/src/Streams/IODeviceSocket.cpp index 7998028d..90f8470e 100644 --- a/src/Streams/IODeviceSocket.cpp +++ b/src/Streams/IODeviceSocket.cpp @@ -141,7 +141,7 @@ ProcessSocket::ProcessSocket(QProcess *proc, const QString &executable, const QS IODeviceSocket(proc), executable(executable), args(args) { connect(proc, &QProcess::stateChanged, this, &ProcessSocket::handleStateChanged); - connect(proc, static_cast(&QProcess::error), this, &ProcessSocket::handleProcessError); + connect(proc, &QProcess::errorOccurred, this, &ProcessSocket::handleProcessError); } ProcessSocket::~ProcessSocket() -- GitLab From aee63baa14f3fc318d4aac67b2c740067ffc7929 Mon Sep 17 00:00:00 2001 From: Heiko Becker Date: Tue, 1 Feb 2022 17:52:12 +0100 Subject: [PATCH 6/6] Port from deprecated {from,to}Time_t to {from,to}SecsSinceEpock Raises the Qt requirement to 5.8. Not raising QT_DISABLE_DEPRECATED_BEFORE=0x050800 yet, because QModelIndex.child() was deprecated with 5.8 and it's quite frequenty used. --- CMakeLists.txt | 4 ++-- src/Cryptography/GpgMe++.cpp | 4 ++-- src/Imap/Model/Utils.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 54512029..e2cd9108 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,7 +69,7 @@ else() set(QTKEYCHAIN_DEPENDS "") endif() -find_package(Qt5Core 5.6 REQUIRED) +find_package(Qt5Core 5.8 REQUIRED) find_package(Qt5Gui REQUIRED) find_package(Qt5Network REQUIRED) find_package(Qt5Sql REQUIRED) @@ -183,7 +183,7 @@ add_definitions(-DQT_STRICT_ITERATORS) add_definitions(-DQT_USE_QSTRINGBUILDER) add_definitions(-DQT_USE_FAST_OPERATOR_PLUS) add_definitions(-DQT_USE_FAST_CONCATENATION) -add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050600) +add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050700) if(NOT MSVC) # We're using C++11's threading features (std::async in particular), and that requires "some threading". With GCC and diff --git a/src/Cryptography/GpgMe++.cpp b/src/Cryptography/GpgMe++.cpp index 716b8aff..78f8caf5 100644 --- a/src/Cryptography/GpgMe++.cpp +++ b/src/Cryptography/GpgMe++.cpp @@ -366,7 +366,7 @@ void GpgMePart::extractSignatureStatus(std::shared_ptr ctx, cons } else { signer = QString::fromUtf8(sig.fingerprint()); } - signDate = QDateTime::fromTime_t(sig.creationTime()); + signDate = QDateTime::fromSecsSinceEpoch(sig.creationTime()); if (sig.summary() & GpgME::Signature::Green) { // FIXME: change the above to GpgME::Signature::Valid and react to expired keys/signatures by checking the timestamp @@ -462,7 +462,7 @@ void GpgMePart::extractSignatureStatus(std::shared_ptr ctx, cons if (sig.summary() & GpgME::Signature::SigExpired) { ENSURE_LINE_LF(longStatus); longStatus += tr("Signature expired on %1.") - .arg(QDateTime::fromTime_t(sig.expirationTime()).toString(Qt::DefaultLocaleShortDate)); + .arg(QDateTime::fromSecsSinceEpoch(sig.expirationTime()).toString(Qt::DefaultLocaleShortDate)); } if (sig.summary() & GpgME::Signature::KeyMissing) { ENSURE_LINE_LF(longStatus); diff --git a/src/Imap/Model/Utils.cpp b/src/Imap/Model/Utils.cpp index 00b3d4b3..b09341a6 100644 --- a/src/Imap/Model/Utils.cpp +++ b/src/Imap/Model/Utils.cpp @@ -343,7 +343,7 @@ QString formatDateTimeWithTimeZoneAtEnd(const QDateTime &now, const QString &for // Got to cast to a signed type to prevent unsigned underflow here. Also go to 64bits because otherwise there'd // a problem when the value is out-of-range for an int32. - int minutesDifference = (static_cast(now.toTime_t()) - static_cast(nowUtc.toTime_t())) / 60; + int minutesDifference = (now.toSecsSinceEpoch() - nowUtc.toSecsSinceEpoch()) / 60; int tzOffsetHours = qAbs(minutesDifference) / 60; int tzOffsetMinutes = qAbs(minutesDifference) % 60; // The rest is just a piece of cake now -- GitLab