[pim/trojita] /: Use enum class instead of typedefed enum
Espen Sandøy Hustad <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit cca332ed152255577c90f4e20524c909aea79847 by Espen Sandøy Hustad.
Committed on 21/07/2026 at 18:28.
Pushed by ehustad into branch 'master'.
Use enum class instead of typedefed enum
M +10 -10 src/Imap/Model/PrettyMsgListModel.cpp
M +9 -9 src/Imap/Model/ThreadingMsgListModel.cpp
M +2 -2 src/Imap/Model/ThreadingMsgListModel.h
M +17 -17 tests/Imap/test_Imap_Threading.cpp
https://invent.kde.org/pim/trojita/-/commit/cca332ed152255577c90f4e20524c909aea79847
diff --git a/src/Imap/Model/PrettyMsgListModel.cpp b/src/Imap/Model/PrettyMsgListModel.cpp
index 7de14776c..69c0d53a6 100644
--- a/src/Imap/Model/PrettyMsgListModel.cpp
+++ b/src/Imap/Model/PrettyMsgListModel.cpp
@@ -209,7 +209,7 @@ void PrettyMsgListModel::sort(int column, Qt::SortOrder order)
ThreadingMsgListModel *threadingModel = qobject_cast<ThreadingMsgListModel*>(sourceModel());
Q_ASSERT(threadingModel);
- ThreadingMsgListModel::SortCriterium criterium = ThreadingMsgListModel::SORT_NONE;
+ ThreadingMsgListModel::SortCriterium criterium = ThreadingMsgListModel::SortCriterium::SORT_NONE;
switch (column) {
case MsgListModel::SEEN:
case MsgListModel::FLAGGED:
@@ -217,28 +217,28 @@ void PrettyMsgListModel::sort(int column, Qt::SortOrder order)
case MsgListModel::COLUMN_COUNT:
case MsgListModel::BCC:
case -1:
- criterium = ThreadingMsgListModel::SORT_NONE;
+ criterium = ThreadingMsgListModel::SortCriterium::SORT_NONE;
break;
case MsgListModel::SUBJECT:
- criterium = ThreadingMsgListModel::SORT_SUBJECT;
+ criterium = ThreadingMsgListModel::SortCriterium::SORT_SUBJECT;
break;
case MsgListModel::FROM:
- criterium = ThreadingMsgListModel::SORT_FROM;
+ criterium = ThreadingMsgListModel::SortCriterium::SORT_FROM;
break;
case MsgListModel::TO:
- criterium = ThreadingMsgListModel::SORT_TO;
+ criterium = ThreadingMsgListModel::SortCriterium::SORT_TO;
break;
case MsgListModel::CC:
- criterium = ThreadingMsgListModel::SORT_CC;
+ criterium = ThreadingMsgListModel::SortCriterium::SORT_CC;
break;
case MsgListModel::DATE:
- criterium = ThreadingMsgListModel::SORT_DATE;
+ criterium = ThreadingMsgListModel::SortCriterium::SORT_DATE;
break;
case MsgListModel::RECEIVED_DATE:
- criterium = ThreadingMsgListModel::SORT_ARRIVAL;
+ criterium = ThreadingMsgListModel::SortCriterium::SORT_ARRIVAL;
break;
case MsgListModel::SIZE:
- criterium = ThreadingMsgListModel::SORT_SIZE;
+ criterium = ThreadingMsgListModel::SortCriterium::SORT_SIZE;
break;
}
@@ -246,7 +246,7 @@ void PrettyMsgListModel::sort(int column, Qt::SortOrder order)
// Now let the view know about whether we accept such a sorting criteria.
// This is needed because the QHeaderView doesn't offer a way to say "hey, you cannot sort in columns XYZ, only on ABC".
- if (criterium != ThreadingMsgListModel::SORT_NONE && willSort)
+ if (criterium != ThreadingMsgListModel::SortCriterium::SORT_NONE && willSort)
emit sortingPreferenceChanged(column, order);
else
emit sortingPreferenceChanged(-1, order);
diff --git a/src/Imap/Model/ThreadingMsgListModel.cpp b/src/Imap/Model/ThreadingMsgListModel.cpp
index 0d93a5492..e4a2e11e3 100644
--- a/src/Imap/Model/ThreadingMsgListModel.cpp
+++ b/src/Imap/Model/ThreadingMsgListModel.cpp
@@ -75,7 +75,7 @@ namespace Mailbox
ThreadingMsgListModel::ThreadingMsgListModel(QObject *parent):
QAbstractProxyModel(parent), threadingHelperLastId(0), modelResetInProgress(false), threadingInFlight(false),
- m_shallBeThreading(false), m_filteredBySearch(false), m_sortTask(nullptr), m_sortReverse(false), m_currentSortingCriteria(SORT_NONE),
+ m_shallBeThreading(false), m_filteredBySearch(false), m_sortTask(nullptr), m_sortReverse(false), m_currentSortingCriteria(SortCriterium::SORT_NONE),
m_searchValidity(RESULT_INVALIDATED)
{
m_delayedPrune = new QTimer(this);
@@ -1366,28 +1366,28 @@ bool ThreadingMsgListModel::searchSortPreferenceImplementation(const QStringList
QStringList sortOptions;
switch (criterium) {
- case SORT_ARRIVAL:
+ case SortCriterium::SORT_ARRIVAL:
sortOptions << QStringLiteral("ARRIVAL");
break;
- case SORT_CC:
+ case SortCriterium::SORT_CC:
sortOptions << QStringLiteral("CC");
break;
- case SORT_DATE:
+ case SortCriterium::SORT_DATE:
sortOptions << QStringLiteral("DATE");
break;
- case SORT_FROM:
+ case SortCriterium::SORT_FROM:
sortOptions << (hasDisplaySort ? QStringLiteral("DISPLAYFROM") : QStringLiteral("FROM"));
break;
- case SORT_SIZE:
+ case SortCriterium::SORT_SIZE:
sortOptions << QStringLiteral("SIZE");
break;
- case SORT_SUBJECT:
+ case SortCriterium::SORT_SUBJECT:
sortOptions << QStringLiteral("SUBJECT");
break;
- case SORT_TO:
+ case SortCriterium::SORT_TO:
sortOptions << (hasDisplaySort ? QStringLiteral("DISPLAYTO") : QStringLiteral("TO"));
break;
- case SORT_NONE:
+ case SortCriterium::SORT_NONE:
if (m_sortTask && m_sortTask->isPersistent() &&
(m_currentSearchConditions != searchConditions || m_currentSortingCriteria != criterium)) {
// Any change shall result in us killing that sort task
diff --git a/src/Imap/Model/ThreadingMsgListModel.h b/src/Imap/Model/ThreadingMsgListModel.h
index 2a2c9212f..e658def1e 100644
--- a/src/Imap/Model/ThreadingMsgListModel.h
+++ b/src/Imap/Model/ThreadingMsgListModel.h
@@ -93,7 +93,7 @@ public:
Trojitá will automatically upgrade to the display-based search criteria from RFC 5957 if support for that RFC is indicated by
the server.
*/
- typedef enum {
+ enum class SortCriterium {
/** @short Don't do any explicit sorting
If threading is not active, the order of messages represnets the order in which they appear in the IMAP mailbox.
@@ -121,7 +121,7 @@ public:
/** @short Recipient of the message, either their mailbox or their display name */
SORT_TO
- } SortCriterium;
+ };
explicit ThreadingMsgListModel(QObject *parent);
void setSourceModel(QAbstractItemModel *sourceModel) override;
diff --git a/tests/Imap/test_Imap_Threading.cpp b/tests/Imap/test_Imap_Threading.cpp
index acb0cef4c..a3c0d484f 100644
--- a/tests/Imap/test_Imap_Threading.cpp
+++ b/tests/Imap/test_Imap_Threading.cpp
@@ -689,7 +689,7 @@ void ImapModelThreadingTest::testDynamicSorting()
QCOMPARE(msgUid9.row(), 1);
QCOMPARE(msgUid10.row(), 2);
- threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SORT_SUBJECT);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SortCriterium::SORT_SUBJECT);
Imap::Uids expectedUidOrder;
@@ -707,7 +707,7 @@ void ImapModelThreadingTest::testDynamicSorting()
QCOMPARE(msgUid10.row(), 0);
// Sort by the same criteria, but in a reversed order
- threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SORT_SUBJECT, Qt::DescendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SortCriterium::SORT_SUBJECT,Qt::DescendingOrder);
cEmpty();
std::reverse(expectedUidOrder.begin(), expectedUidOrder.end());
QCOMPARE(msgUid6.data(Imap::Mailbox::RoleMessageUid).toUInt(), 6u);
@@ -717,7 +717,7 @@ void ImapModelThreadingTest::testDynamicSorting()
QCOMPARE(msgUid10.row(), 2);
// Revert back to ascending sort
- threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SORT_SUBJECT, Qt::AscendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SortCriterium::SORT_SUBJECT, Qt::AscendingOrder);
cEmpty();
std::reverse(expectedUidOrder.begin(), expectedUidOrder.end());
QCOMPARE(msgUid6.data(Imap::Mailbox::RoleMessageUid).toUInt(), 6u);
@@ -727,7 +727,7 @@ void ImapModelThreadingTest::testDynamicSorting()
QCOMPARE(msgUid10.row(), 0);
// Sort in a native order, reverse direction
- threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SORT_NONE, Qt::DescendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SortCriterium::SORT_NONE, Qt::DescendingOrder);
cEmpty();
expectedUidOrder = uidMap;
std::reverse(expectedUidOrder.begin(), expectedUidOrder.end());
@@ -761,7 +761,7 @@ void ImapModelThreadingTest::testDynamicSorting()
QCOMPARE(msgUid10.row(), 0);
// Check dynamic updates when some sorting criteria are active
- threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SORT_SUBJECT, Qt::AscendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SortCriterium::SORT_SUBJECT, Qt::AscendingOrder);
expectedUidOrder.clear();
expectedUidOrder << 10 << 6 << 9;
cClient(t.mk("UID SORT (SUBJECT) utf-8 ALL\r\n"));
@@ -812,7 +812,7 @@ void ImapModelThreadingTest::testDynamicSorting()
// A new message arrives and the user requests a completely different sort order
// Make it a bit more interesting, suddenly support ESORT as well
injector.injectCapability(QStringLiteral("ESORT"));
- threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SORT_FROM, Qt::AscendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SortCriterium::SORT_FROM, Qt::AscendingOrder);
cServer("* 4 EXISTS\r\n");
QByteArray sortReq = t.mk("UID SORT RETURN (ALL) (DISPLAYFROM) utf-8 ALL\r\n");
QByteArray sortResp = t.last("OK sorted\r\n");
@@ -915,7 +915,7 @@ void ImapModelThreadingTest::testDynamicSortingContext()
QCOMPARE(msgUid9.row(), 1);
QCOMPARE(msgUid10.row(), 2);
- threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SORT_SUBJECT);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SortCriterium::SORT_SUBJECT);
Imap::Uids expectedUidOrder;
@@ -934,7 +934,7 @@ void ImapModelThreadingTest::testDynamicSortingContext()
QCOMPARE(msgUid10.row(), 0);
// Sort by the same criteria, but in a reversed order
- threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SORT_SUBJECT, Qt::DescendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SortCriterium::SORT_SUBJECT, Qt::DescendingOrder);
cEmpty();
std::reverse(expectedUidOrder.begin(), expectedUidOrder.end());
QCOMPARE(msgUid6.data(Imap::Mailbox::RoleMessageUid).toUInt(), 6u);
@@ -975,7 +975,7 @@ void ImapModelThreadingTest::testDynamicSortingContext()
"* 5 FETCH (UID 17 FLAGS ())\r\n" + t.last("OK fetched\r\n");
// At the same time, request a different sorting criteria
- threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SORT_CC, Qt::AscendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), Imap::Mailbox::ThreadingMsgListModel::SortCriterium::SORT_CC, Qt::AscendingOrder);
QByteArray cancelReq = t.mk(QByteArray("CANCELUPDATE \"" + sortTag + "\"\r\n"));
QByteArray cancelResponse = t.last("OK no more updates for you\r\n");
@@ -1392,13 +1392,13 @@ void ImapModelThreadingTest::testSortingPerformance()
QByteArray resp = ("* SORT " + sortOrder.join(QStringLiteral(" ")) + "\r\n").toUtf8();
QBENCHMARK_ONCE {
- threadingModel->setUserSearchingSortingPreference(QStringList(), ThreadingMsgListModel::SORT_NONE, Qt::AscendingOrder);
- threadingModel->setUserSearchingSortingPreference(QStringList(), ThreadingMsgListModel::SORT_NONE, Qt::DescendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), ThreadingMsgListModel::SortCriterium::SORT_NONE, Qt::AscendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), ThreadingMsgListModel::SortCriterium::SORT_NONE, Qt::DescendingOrder);
}
bool flag = false;
QBENCHMARK_ONCE {
- ThreadingMsgListModel::SortCriterium criterium = flag ? ThreadingMsgListModel::SORT_SUBJECT : ThreadingMsgListModel::SORT_CC;
+ ThreadingMsgListModel::SortCriterium criterium = flag ? ThreadingMsgListModel::SortCriterium::SORT_SUBJECT : ThreadingMsgListModel::SortCriterium::SORT_CC;
Qt::SortOrder order = flag ? Qt::AscendingOrder : Qt::DescendingOrder;
threadingModel->setUserSearchingSortingPreference(QStringList(), criterium, order);
if (flag) {
@@ -1429,7 +1429,7 @@ void ImapModelThreadingTest::testSearchingPerformance()
FakeCapabilitiesInjector injector(model);
injector.injectCapability(QStringLiteral("QRESYNC"));
- threadingModel->setUserSearchingSortingPreference(QStringList(), ThreadingMsgListModel::SORT_NONE, Qt::DescendingOrder);
+ threadingModel->setUserSearchingSortingPreference(QStringList(), ThreadingMsgListModel::SortCriterium::SORT_NONE, Qt::DescendingOrder);
/*cClient(t.mk("UID THREAD REFS utf-8 ALL\r\n"));
QByteArray untaggedThread = prepareHugeUntaggedThread(num);
cServer(untaggedThread + t.last("OK thread\r\n"));*/
@@ -1443,7 +1443,7 @@ void ImapModelThreadingTest::testSearchingPerformance()
QBENCHMARK_ONCE {
threadingModel->setUserSearchingSortingPreference(QStringList() << QStringLiteral("SUBJECT") << QStringLiteral("x"),
- ThreadingMsgListModel::SORT_NONE, Qt::AscendingOrder);
+ ThreadingMsgListModel::SortCriterium::SORT_NONE, Qt::AscendingOrder);
cClient(t.mk("UID SEARCH CHARSET utf-8 SUBJECT x\r\n"));
cServer("* SEARCH " + sortResult + "\r\n");
cServer(t.last("OK sorted\r\n"));
@@ -1683,7 +1683,7 @@ void ImapModelThreadingTest::testESearchResults()
// An empty result, Dovecot style
threadingModel->setUserSearchingSortingPreference(QStringList() << QStringLiteral("SUBJECT") << QStringLiteral("x"),
- ThreadingMsgListModel::SORT_NONE, Qt::AscendingOrder);
+ ThreadingMsgListModel::SortCriterium::SORT_NONE, Qt::AscendingOrder);
cClient(t.mk("UID SEARCH RETURN (ALL) CHARSET utf-8 SUBJECT x\r\n"));
// Dovecot sends the UID response, as expected
cServer("* ESEARCH (TAG \"" + t.last() + "\") UID \r\n");
@@ -1693,7 +1693,7 @@ void ImapModelThreadingTest::testESearchResults()
// Some extra data in the ESEARCH response -- just to make sure that the code doesn't expect a fixed position
// of the ALL data set
threadingModel->setUserSearchingSortingPreference(QStringList() << QStringLiteral("SUBJECT") << QStringLiteral("y"),
- ThreadingMsgListModel::SORT_NONE, Qt::AscendingOrder);
+ ThreadingMsgListModel::SortCriterium::SORT_NONE, Qt::AscendingOrder);
cClient(t.mk("UID SEARCH RETURN (ALL) CHARSET utf-8 SUBJECT y\r\n"));
// Check if random crap in these resplies doesn't break stuff
cServer("* ESEARCH (TAG \"" + t.last() + "\") UID random0 0 Random00 0 ALL 1 random1 666 RANDOM2 333\r\n");
@@ -1702,7 +1702,7 @@ void ImapModelThreadingTest::testESearchResults()
// Empty result, Cyrus 2.9.17-style
threadingModel->setUserSearchingSortingPreference(QStringList() << QStringLiteral("SUBJECT") << QStringLiteral("z"),
- ThreadingMsgListModel::SORT_NONE, Qt::AscendingOrder);
+ ThreadingMsgListModel::SortCriterium::SORT_NONE, Qt::AscendingOrder);
cClient(t.mk("UID SEARCH RETURN (ALL) CHARSET utf-8 SUBJECT z\r\n"));
// Cyrus, however, omits the UID part of the response
// https://bugs.kde.org/show_bug.cgi?id=350698