rbutil: Eliminate more pre-QT6 workarounds

rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Fri, 26 Jun 2026 21:39:24 -0400
Newsgroups gmane.comp.systems.archos.rockbox.cvs
Message-ID <[email protected]>
commit 3c41d6a1c177567753fd61a88cbae7f5cfbecb34
Author: Solomon Peachy <[email protected]>
Date:   Fri Jun 26 21:29:33 2026 -0400

    rbutil:  Eliminate more pre-QT6 workarounds
    
    Change-Id: I7b5cf428ef626543aa8e932622f4658e789e9236

diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
index 3ff13ec8a9..c956532ce5 100644
--- a/utils/CMakeLists.txt
+++ b/utils/CMakeLists.txt
@@ -49,9 +49,15 @@ find_package(QT NAMES Qt6 REQUIRED)
     find_package(Qt6 REQUIRED COMPONENTS
                  Core Core5Compat Widgets Svg Network LinguistTools SvgWidgets
                  OPTIONAL_COMPONENTS Multimedia Test)
+	       ## note Core5Compat is only used for QuaZip
 get_target_property(_moc_executable Qt${QT_VERSION_MAJOR}::moc IMPORTED_LOCATION)
 get_filename_component(QT_BINDIR "${_moc_executable}" DIRECTORY)
 message("-- Found Qt${QT_VERSION_MAJOR}: ${Qt${QT_VERSION_MAJOR}_DIR}")
+if (TARGET Qt${QT_VERSION_MAJOR}::Multimedia)
+  message("-- Found Qt::Multimedia")
+else()
+  message("-- QT::Multimedia not found, TTS preview not available")
+endif()
 
 # Added in QT 6.10
 add_compile_options(-DQT_NO_USE_NODISCARD_FILE_OPEN)
@@ -107,9 +113,7 @@ else()
         ${CMAKE_CURRENT_LIST_DIR}/rbutilqt/quazip/zip.h)
     target_include_directories(quazip PUBLIC ${CMAKE_CURRENT_LIST_DIR}/rbutilqt/quazip)
     target_link_libraries(quazip z Qt${QT_VERSION_MAJOR}::Core)
-    if(QT_VERSION_MAJOR EQUAL 6)
-        target_link_libraries(quazip Qt${QT_VERSION_MAJOR}::Core5Compat)
-    endif()
+    target_link_libraries(quazip Qt${QT_VERSION_MAJOR}::Core5Compat)
     target_compile_definitions(quazip PUBLIC QUAZIP_STATIC)
     set_property(TARGET quazip PROPERTY AUTOMOC ON)
     set(QUAZIP_LIBRARY quazip)
diff --git a/utils/rbutilqt/CMakeLists.txt b/utils/rbutilqt/CMakeLists.txt
index 80044328ca..0c12ec0a91 100644
--- a/utils/rbutilqt/CMakeLists.txt
+++ b/utils/rbutilqt/CMakeLists.txt
@@ -32,11 +32,7 @@ set(RBUTIL_TS_FILES
     ${CMAKE_CURRENT_LIST_DIR}/lang/rbutil_zh_CN.ts
     ${CMAKE_CURRENT_LIST_DIR}/lang/rbutil_zh_TW.ts
     )
-if(QT_VERSION_MAJOR EQUAL 5)
-    qt5_add_translation(RBUTIL_QM_FILES ${RBUTIL_TS_FILES})
-else()
     qt6_add_translation(RBUTIL_QM_FILES ${RBUTIL_TS_FILES})
-endif()
 
 # The qrc file searches input files based on its location, and the qm files are
 # generated in the build dir. Copy the qrc file to the build dir, make it
@@ -112,10 +108,6 @@ if(WIN32)
     target_sources(RockboxUtility PRIVATE
         ${CMAKE_CURRENT_LIST_DIR}/rbutilqt-win.qrc
         ${CMAKE_CURRENT_LIST_DIR}/rbutilqt.rc)
-    if(QT_VERSION_MAJOR EQUAL 5)
-        # needed on Windows, otherwise svg icons won't show.
-        target_link_libraries(RockboxUtility Qt${QT_VERSION_MAJOR}::QSvgIconPlugin)
-    endif()
 endif()
 if(APPLE)
     # MacOS Application Bundle specifics.
@@ -136,9 +128,7 @@ if (TARGET Qt${QT_VERSION_MAJOR}::Multimedia) # optional
         Qt${QT_VERSION_MAJOR}::Multimedia)
 endif()
 
-if(QT_VERSION_MAJOR EQUAL 6)
-    target_link_libraries(RockboxUtility Qt${QT_VERSION_MAJOR}::SvgWidgets)
-endif()
+target_link_libraries(RockboxUtility Qt${QT_VERSION_MAJOR}::SvgWidgets)
 
 target_include_directories(RockboxUtility PRIVATE
     ${CMAKE_CURRENT_LIST_DIR}/gui
diff --git a/utils/rbutilqt/base/httpget.cpp b/utils/rbutilqt/base/httpget.cpp
index 0cd9236209..9264e8fc1c 100644
--- a/utils/rbutilqt/base/httpget.cpp
+++ b/utils/rbutilqt/base/httpget.cpp
@@ -160,13 +160,7 @@ void HttpGet::requestFinished(QNetworkReply* reply)
         QUrl url = QUrl(org).resolved(
                 reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl());
         // reconstruct query
-#if QT_VERSION < 0x050000
-        QList<QPair<QByteArray, QByteArray> > qitms = org.encodedQueryItems();
-        for(int i = 0; i < qitms.size(); ++i)
-            url.addEncodedQueryItem(qitms.at(i).first, qitms.at(i).second);
-#else
         url.setQuery(org.query());
-#endif
         LOG_INFO() << "Redirected to" << url;
         startRequest(url);
         return;
@@ -205,13 +199,7 @@ void HttpGet::startRequest(QUrl url)
         req.setRawHeader("User-Agent", m_globalUserAgent.toLatin1());
 
     m_reply = m_mgr.get(req);
-#if QT_VERSION < 0x050f00
-    connect(m_reply,
-            static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error),
-            this, &HttpGet::networkError);
-#else
     connect(m_reply, &QNetworkReply::errorOccurred, this, &HttpGet::networkError);
-#endif
     connect(m_reply, &QNetworkReply::downloadProgress, this, &HttpGet::downloadProgress);
     connect(m_reply, &QNetworkReply::sslErrors, this, &HttpGet::gotSslError);
 }
@@ -276,4 +264,3 @@ int HttpGet::httpResponse(void)
 {
     return m_lastStatusCode;
 }
-
diff --git a/utils/rbutilqt/base/playerbuildinfo.cpp b/utils/rbutilqt/base/playerbuildinfo.cpp
index bb0e469d9d..6b7e078d08 100644
--- a/utils/rbutilqt/base/playerbuildinfo.cpp
+++ b/utils/rbutilqt/base/playerbuildinfo.cpp
@@ -97,10 +97,7 @@ PlayerBuildInfo::PlayerBuildInfo() :
      serverInfo(nullptr),
      playerInfo(":/ini/rbutil.ini", QSettings::IniFormat)
 {
-#if QT_VERSION < 0x060000
-    playerInfo.setIniCodec("UTF-8");
-#endif
-
+        // Nothing to do here.
 }
 
 void PlayerBuildInfo::setBuildInfo(QString file)
@@ -199,11 +196,7 @@ QVariant PlayerBuildInfo::value(BuildInfo item, BuildType type)
     // if the value is a string we can replace some patterns.
     // if we cannot convert it (f.e. for a QStringList) we leave as-is, since
     // the conversion would return an empty type.
-#if QT_VERSION < 0x060000
-    if (result.type() == QVariant::String)
-#else
     if (result.metaType().id() == QMetaType::QString)
-#endif
         result = result.toString()
                     .replace("%TARGET%", target)
                     .replace("%VERSION%", version.at(0));
diff --git a/utils/rbutilqt/base/ttsfestival.cpp b/utils/rbutilqt/base/ttsfestival.cpp
index 9cdad7fe64..63e09a1673 100644
--- a/utils/rbutilqt/base/ttsfestival.cpp
+++ b/utils/rbutilqt/base/ttsfestival.cpp
@@ -295,11 +295,7 @@ QString TTSFestival::getVoiceInfo(QString voice)
                     QRegularExpression::CaseInsensitiveOption));
         LOG_INFO() << "voiceInfo w/o descr:" << response;
         response = response.remove(')');
-#if QT_VERSION >= 0x050e00
         QStringList responseLines = response.split('(', Qt::SkipEmptyParts);
-#else
-        QStringList responseLines = response.split('(', QString::SkipEmptyParts);
-#endif
         responseLines.removeAt(0); // the voice name itself
 
         QString description;
@@ -417,4 +413,3 @@ QString TTSFestival::queryServer(QString query, int timeout)
 
     return response.trimmed();
 }
-
diff --git a/utils/rbutilqt/base/ttssapi.cpp b/utils/rbutilqt/base/ttssapi.cpp
index c1a642a14e..96ca3cb498 100644
--- a/utils/rbutilqt/base/ttssapi.cpp
+++ b/utils/rbutilqt/base/ttssapi.cpp
@@ -140,11 +140,7 @@ bool TTSSapi::start(QString *errStr)
     }
 
     voicestream = new QTextStream(voicescript);
-#if QT_VERSION < 0x060000
-    voicestream->setCodec("UTF16-LE");
-#else
     voicestream->setEncoding(QStringConverter::Utf16LE);
-#endif
 
     m_started = true;
     return true;
@@ -201,11 +197,7 @@ QStringList TTSSapi::getVoiceList(QString language)
     if(dataRaw.startsWith("Error")) {
         LOG_INFO() << "Error:" << dataRaw;
     }
-#if QT_VERSION >= 0x050e00
     result = dataRaw.split(";", Qt::SkipEmptyParts);
-#else
-    result = dataRaw.split(";", QString::SkipEmptyParts);
-#endif
     if(result.size() > 0)
     {
         result.sort();
@@ -271,4 +263,3 @@ bool TTSSapi::configOk()
         return false;
     return true;
 }
-
diff --git a/utils/rbutilqt/base/utils.cpp b/utils/rbutilqt/base/utils.cpp
index 2bbab9d2d9..dbd0ab9159 100644
--- a/utils/rbutilqt/base/utils.cpp
+++ b/utils/rbutilqt/base/utils.cpp
@@ -93,11 +93,7 @@ QString Utils::resolvePathCase(QString path)
 {
     int start;
     QString realpath;
-#if QT_VERSION >= 0x050e00
     QStringList elems = path.split("/", Qt::SkipEmptyParts);
-#else
-    QStringList elems = path.split("/", QString::SkipEmptyParts);
-#endif
 
     if(path.isEmpty())
         return QString();
@@ -321,17 +317,9 @@ QString Utils::findExecutable(QString name)
 {
     //try autodetect tts
 #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) || defined(Q_OS_OPENBSD)
-#if QT_VERSION >= 0x050e00
     QStringList path = QString(getenv("PATH")).split(":", Qt::SkipEmptyParts);
-#else
-    QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts);
-#endif
 #elif defined(Q_OS_WIN)
-#if QT_VERSION >= 0x050e00
     QStringList path = QString(getenv("PATH")).split(";", Qt::SkipEmptyParts);
-#else
-    QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts);
-#endif
 #endif
     LOG_INFO() << "system path:" << path;
     for(int i = 0; i < path.size(); i++)
@@ -339,11 +327,7 @@ QString Utils::findExecutable(QString name)
         QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + name;
 #if defined(Q_OS_WIN)
         executable += ".exe";
-#if QT_VERSION >= 0x050e00
         QStringList ex = executable.split("\"", Qt::SkipEmptyParts);
-#else
-        QStringList ex = executable.split("\"", QString::SkipEmptyParts);
-#endif
         executable = ex.join("");
 #endif
         if(QFileInfo(executable).isExecutable())
diff --git a/utils/rbutilqt/base/voicefile.cpp b/utils/rbutilqt/base/voicefile.cpp
index 8c79975c54..1daaa0b9a8 100644
--- a/utils/rbutilqt/base/voicefile.cpp
+++ b/utils/rbutilqt/base/voicefile.cpp
@@ -267,11 +267,7 @@ void VoiceFileCreator::create(void)
     //read in downloaded file
     emit logItem(tr("Reading strings..."),LOGINFO);
     QTextStream in(&genlang);
-#if QT_VERSION < 0x060000
-    in.setCodec("UTF-8");
-#else
     in.setEncoding(QStringConverter::Utf8);
-#endif
     QString id, voice;
     bool idfound = false;
     bool voicefound=false;
diff --git a/utils/rbutilqt/gui/changelog.cpp b/utils/rbutilqt/gui/changelog.cpp
index f256f3805c..291ab8af01 100644
--- a/utils/rbutilqt/gui/changelog.cpp
+++ b/utils/rbutilqt/gui/changelog.cpp
@@ -45,11 +45,7 @@ QString Changelog::parseChangelogFile(QString filename)
     QFile changelog(filename);
     changelog.open(QIODevice::ReadOnly);
     QTextStream c(&changelog);
-#if QT_VERSION < 0x060000
-    c.setCodec(QTextCodec::codecForName("UTF-8"));
-#else
     c.setEncoding(QStringConverter::Utf8);
-#endif
     QString text;
     while(!c.atEnd()) {
         QString line = c.readLine();
diff --git a/utils/rbutilqt/installtalkwindow.cpp b/utils/rbutilqt/installtalkwindow.cpp
index a3570196f5..c8bcdcec2e 100644
--- a/utils/rbutilqt/installtalkwindow.cpp
+++ b/utils/rbutilqt/installtalkwindow.cpp
@@ -110,11 +110,7 @@ void InstallTalkWindow::accept()
     talkcreator->setStripExtensions(ui.StripExtensions->isChecked());
     talkcreator->setTalkFolders(ui.talkFolders->isChecked());
     talkcreator->setTalkFiles(ui.talkFiles->isChecked());
-#if QT_VERSION >= 0x050e00
     talkcreator->setIgnoreFiles(ui.ignoreFiles->text().split(",", Qt::SkipEmptyParts));
-#else
-    talkcreator->setIgnoreFiles(ui.ignoreFiles->text().split(",", QString::SkipEmptyParts));
-#endif
 
     connect(talkcreator, &TalkFileCreator::done, logger, &ProgressLoggerGui::setFinished);
     connect(talkcreator, &TalkFileCreator::logItem, logger, &ProgressLoggerGui::addItem);
@@ -185,4 +181,3 @@ void InstallTalkWindow::changeEvent(QEvent *e)
         QWidget::changeEvent(e);
     }
 }
-
diff --git a/utils/rbutilqt/main.cpp b/utils/rbutilqt/main.cpp
index cdee3af81d..7b52d7df42 100644
--- a/utils/rbutilqt/main.cpp
+++ b/utils/rbutilqt/main.cpp
@@ -26,23 +26,7 @@
 #include "ConsoleAppender.h"
 #include "FileAppender.h"
 
-#ifdef STATIC
-#if QT_VERSION < 0x050400
-/*
- * accessibility is no longer a plugin after 5.4.0:
- * <https://bugreports.qt.io/browse/QTBUG-37957#comment-239189>
- */
-#include <QtPlugin>
-Q_IMPORT_PLUGIN(AccessibleFactory)
-#endif
-#endif
-
-
 int main( int argc, char ** argv ) {
-#if QT_VERSION >= 0x050600 && QT_VERSION < 0x060000
-    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
-    QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
-#endif
     QApplication app( argc, argv );
 #ifdef Q_OS_WIN
     qApp->setStyle(QStyleFactory::create("Fusion"));
@@ -83,11 +67,7 @@ int main( int argc, char ** argv ) {
         if(!translator.load("rbutil_" + applang, absolutePath))
             translator.load("rbutil_" + applang, ":/lang");
         if(!qttrans.load("qt_" + applang,
-#if QT_VERSION >= 0x060000
             QLibraryInfo::path(QLibraryInfo::TranslationsPath)
-#else
-            QLibraryInfo::location(QLibraryInfo::TranslationsPath)
-#endif
                 ))
             qttrans.load("qt_" + applang, ":/lang");
 
diff --git a/utils/rbutilqt/rbutilqt.cpp b/utils/rbutilqt/rbutilqt.cpp
index 8db0cfda1c..c3941debde 100644
--- a/utils/rbutilqt/rbutilqt.cpp
+++ b/utils/rbutilqt/rbutilqt.cpp
@@ -334,11 +334,7 @@ void RbUtilQt::about()
     QFile credits(":/docs/CREDITS");
     credits.open(QIODevice::ReadOnly);
     QTextStream r(&credits);
-#if QT_VERSION < 0x060000
-    r.setCodec(QTextCodec::codecForName("UTF-8"));
-#else
     r.setEncoding(QStringConverter::Utf8);
-#endif
     while(!r.atEnd()) {
         QString line = r.readLine();
         // filter out header.
diff --git a/utils/rbutilqt/test/test-httpget.cpp b/utils/rbutilqt/test/test-httpget.cpp
index 86f1a6e13e..a4824febdb 100644
--- a/utils/rbutilqt/test/test-httpget.cpp
+++ b/utils/rbutilqt/test/test-httpget.cpp
@@ -39,12 +39,8 @@
 
         quint16 port(void) { return this->serverPort(); }
 
-#if QT_VERSION < 0x050000
-        void incomingConnection(int socket)
-#else
         // Qt 5 uses a different prototype for this function!
         void incomingConnection(qintptr socket)
-#endif
         {
             // When a new client connects, the server constructs a QTcpSocket and all
             // communication with the client is done over this QTcpSocket. QTcpSocket
@@ -549,4 +545,3 @@ QTEST_MAIN(TestHttpGet)
 // this include is needed because we don't use a separate header file for the
 // test class. It also needs to be at the end.
 #include "test-httpget.moc"
-
diff --git a/utils/rbutilqt/themesinstallwindow.cpp b/utils/rbutilqt/themesinstallwindow.cpp
index f9d32430e3..e3ee8bc43a 100644
--- a/utils/rbutilqt/themesinstallwindow.cpp
+++ b/utils/rbutilqt/themesinstallwindow.cpp
@@ -114,9 +114,6 @@ void ThemesInstallWindow::downloadDone(QNetworkReply::NetworkError error)
     themesInfo.open();
 
     QSettings iniDetails(themesInfo.fileName(), QSettings::IniFormat, this);
-#if QT_VERSION < 0x060000
-    iniDetails.setIniCodec(QTextCodec::codecForName("UTF-8"));
-#endif
     QStringList tl = iniDetails.childGroups();
     LOG_INFO() << "Theme site result:"
                << iniDetails.value("error/code").toString()
@@ -190,9 +187,6 @@ void ThemesInstallWindow::updateSize(void)
     long size = 0;
     // sum up size for all selected themes
     QSettings iniDetails(themesInfo.fileName(), QSettings::IniFormat, this);
-#if QT_VERSION < 0x060000
-    iniDetails.setIniCodec(QTextCodec::codecForName("UTF-8"));
-#endif
     int items = ui.listThemes->selectedItems().size();
     for(int i = 0; i < items; i++) {
         iniDetails.beginGroup(ui.listThemes->selectedItems()
@@ -211,10 +205,6 @@ void ThemesInstallWindow::updateDetails(QListWidgetItem* cur, QListWidgetItem* p
         return;
 
     QSettings iniDetails(themesInfo.fileName(), QSettings::IniFormat, this);
-#if QT_VERSION < 0x060000
-    iniDetails.setIniCodec(QTextCodec::codecForName("UTF-8"));
-#endif
-
     QCoreApplication::processEvents();
     ui.themeDescription->setText(tr("fetching details for %1")
         .arg(cur->data(Qt::DisplayRole).toString()));
@@ -393,4 +383,3 @@ void ThemesInstallWindow::changeEvent(QEvent *e)
         QWidget::changeEvent(e);
     }
 }
-
-- 
rockbox-cvs mailing list
[email protected]
https://lists.haxx.se/mailman/listinfo/rockbox-cvs