[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.