diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 518cd97..019c8de 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,7 +49,7 @@ jobs: - name: Add msbuild to PATH if: matrix.platform == 'msvc2019' - uses: microsoft/setup-msbuild@master + uses: microsoft/setup-msbuild@main - name: Downgrade Android NDK if: matrix.platform == 'android' @@ -64,7 +64,7 @@ jobs: - uses: Skycoder42/action-setup-qt@master id: qt with: - version: 5.15.1 + version: ${{matrix.version}} platform: ${{matrix.platform}} - name: Install QtApng diff --git a/include/aoapplication.h b/include/aoapplication.h index 4f2c585..16895d8 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -16,7 +16,6 @@ #include #include -#include #include #include diff --git a/include/aocharbutton.h b/include/aocharbutton.h index dd27e62..8e8038f 100644 --- a/include/aocharbutton.h +++ b/include/aocharbutton.h @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -37,7 +38,7 @@ private: AOImage *ui_selector; protected: - void enterEvent(QEvent *e); + void enterEvent(QEnterEvent *e); void leaveEvent(QEvent *e); }; diff --git a/include/aoevidencebutton.h b/include/aoevidencebutton.h index d7812fe..1898539 100644 --- a/include/aoevidencebutton.h +++ b/include/aoevidencebutton.h @@ -6,6 +6,7 @@ #include #include +#include #include class AOEvidenceButton : public QPushButton { @@ -31,7 +32,7 @@ private: int m_id = 0; protected: - void enterEvent(QEvent *e); + void enterEvent(QEnterEvent *e); void leaveEvent(QEvent *e); void mouseDoubleClickEvent(QMouseEvent *e); /* diff --git a/include/aotextarea.h b/include/aotextarea.h index 60b4b7c..405f4eb 100644 --- a/include/aotextarea.h +++ b/include/aotextarea.h @@ -2,7 +2,7 @@ #define AOTEXTAREA_H #include -#include +#include #include #include #include @@ -17,7 +17,7 @@ public: void append_error(QString p_message); private: - const QRegExp url_parser_regex = QRegExp("\\b(https?://\\S+\\.\\S+)\\b"); + const QRegularExpression url_parser_regex = QRegularExpression("\\b(https?://\\S+\\.\\S+)\\b"); void auto_scroll(QTextCursor old_cursor, int scrollbar_value, bool is_scrolled_down); diff --git a/include/courtroom.h b/include/courtroom.h index 45c040f..d767f0a 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -55,7 +55,7 @@ #if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) #include //added in Qt 5.10 #endif -#include +#include #include #include #include diff --git a/include/datatypes.h b/include/datatypes.h index d5d8551..682d68a 100644 --- a/include/datatypes.h +++ b/include/datatypes.h @@ -113,7 +113,7 @@ enum CHAT_MESSAGE { EFFECTS, }; -enum EMOTE_MOD { +enum EMOTE_MOD_TYPE { IDLE = 0, PREANIM = 1, ZOOM = 5, diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 11889f7..856b8ad 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -134,7 +134,9 @@ void AOApplication::load_favorite_list() void AOApplication::save_favorite_list() { QSettings favorite_servers_ini(get_base_path() + "favorite_servers.ini", QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) favorite_servers_ini.setIniCodec("UTF-8"); +#endif favorite_servers_ini.clear(); // skip demo server entry, demo server entry is always at index 0 diff --git a/src/aocharbutton.cpp b/src/aocharbutton.cpp index 5b48e50..19eff5f 100644 --- a/src/aocharbutton.cpp +++ b/src/aocharbutton.cpp @@ -78,7 +78,7 @@ void AOCharButton::set_image(QString p_character) } } -void AOCharButton::enterEvent(QEvent *e) +void AOCharButton::enterEvent(QEnterEvent *e) { ui_selector->move(this->x() - 1, this->y() - 1); ui_selector->raise(); diff --git a/src/aoevidencebutton.cpp b/src/aoevidencebutton.cpp index 800c8b4..ff690c2 100644 --- a/src/aoevidencebutton.cpp +++ b/src/aoevidencebutton.cpp @@ -104,7 +104,7 @@ void AOEvidenceButton::dragEnterEvent(QMouseEvent *e) } */ -void AOEvidenceButton::enterEvent(QEvent *e) +void AOEvidenceButton::enterEvent(QEnterEvent *e) { ui_selector->show(); diff --git a/src/aolayer.cpp b/src/aolayer.cpp index badf635..27ebe48 100644 --- a/src/aolayer.cpp +++ b/src/aolayer.cpp @@ -2,7 +2,6 @@ #include "aoapplication.h" #include "file_functions.h" -#include "misc_functions.h" static QThreadPool *thread_pool; @@ -336,7 +335,11 @@ void AOLayer::start_playback(QString p_image) frame = 0; continuous = false; } +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) frame_loader = QtConcurrent::run(thread_pool, this, &AOLayer::populate_vectors); +#else + frame_loader = QtConcurrent::run(thread_pool, &AOLayer::populate_vectors, this); +#endif last_path = p_image; while (movie_frames.size() <= frame) // if we haven't loaded the frame we need yet frameAdded.wait(&mutex); // wait for the frame loader to add another frame, then check again diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index e25b465..f8a8cfe 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -1334,7 +1334,9 @@ void AOOptionsDialog::save_pressed() if (callwordsini->open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) { QTextStream out(callwordsini); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) out.setCodec("UTF-8"); +#endif out << ui_callwords_textbox->toPlainText(); callwordsini->close(); } diff --git a/src/courtroom.cpp b/src/courtroom.cpp index b310ac6..acbcd1d 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -1788,7 +1788,7 @@ void Courtroom::debug_message_handler(QtMsgType type, const QMessageLogContext & }; const QString color_id = QString("debug_log_%1_color").arg(colors.value(type, "info")); ui_debug_log->append_chatmessage( - QString(), qFormatLogMessage(type, context, msg), + colors.value(type, "info"), msg, QString(), ao_app->get_color(color_id, "courtroom_fonts.ini").name()); } @@ -2479,7 +2479,7 @@ bool Courtroom::handle_objection() ao_app->get_chat(m_chatmessage[CHAR_NAME])); } break; - m_chatmessage[EMOTE_MOD] = PREANIM; + m_chatmessage[EMOTE_MOD] = QChar(PREANIM); } ui_vp_objection->load_image( filename, m_chatmessage[CHAR_NAME], @@ -4091,8 +4091,13 @@ void Courtroom::handle_song(QStringList *p_contents) } ui_music_name->setText(tr("[LOADING] %1").arg(f_song_clear)); } +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) music_player->music_watcher.setFuture(QtConcurrent::run(music_player, &AOMusicPlayer::play, f_song, channel, looping, effect_flags)); +#else + music_player->music_watcher.setFuture(QtConcurrent::run(&AOMusicPlayer::play, music_player, f_song, channel, + looping, effect_flags)); +#endif } void Courtroom::update_ui_music_name() diff --git a/src/demoserver.cpp b/src/demoserver.cpp index feca7c6..bc7da1c 100644 --- a/src/demoserver.cpp +++ b/src/demoserver.cpp @@ -79,8 +79,11 @@ void DemoServer::recv_data() { QString in_data = QString::fromUtf8(client_sock->readAll()); - // Copypasted from NetworkManager +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) + const QStringList packet_list = in_data.split("%", QString::SplitBehavior(QString::SkipEmptyParts)); +#else const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts); +#endif for (const QString &packet : packet_list) { QStringList f_contents; @@ -288,7 +291,9 @@ void DemoServer::load_demo(QString filename) p_path = filename; // Process the demo file QTextStream demo_stream(&demo_file); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) demo_stream.setCodec("UTF-8"); +#endif QString line = demo_stream.readLine(); while (!line.isNull()) { while (!line.endsWith("%")) { @@ -330,7 +335,9 @@ void DemoServer::load_demo(QString filename) if (demo_file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) { QTextStream out(&demo_file); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) out.setCodec("UTF-8"); +#endif out << p_demo_data.dequeue(); for (const QString &line : qAsConst(p_demo_data)) { out << "\n" << line; diff --git a/src/evidence.cpp b/src/evidence.cpp index 4bff79d..337e830 100644 --- a/src/evidence.cpp +++ b/src/evidence.cpp @@ -800,7 +800,9 @@ void Courtroom::evidence_load(QString filename) return; } QSettings inventory(filename, QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) inventory.setIniCodec("UTF-8"); +#endif private_evidence_list.clear(); foreach (QString evi, inventory.childGroups()) { if (evi == "General") @@ -825,7 +827,9 @@ void Courtroom::evidence_save(QString filename) } QSettings inventory(filename, QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) inventory.setIniCodec("UTF-8"); +#endif inventory.clear(); for (int i = 0; i < private_evidence_list.size(); i++) { inventory.beginGroup(QString::number(i)); diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp index 158b36b..6d01a30 100644 --- a/src/networkmanager.cpp +++ b/src/networkmanager.cpp @@ -240,8 +240,11 @@ void NetworkManager::handle_server_packet(const QString& p_data) partial_packet = false; } } - +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) + const QStringList packet_list = in_data.split("%", QString::SkipEmptyParts); +#else const QStringList packet_list = in_data.split("%", Qt::SkipEmptyParts); +#endif for (const QString &packet : packet_list) { QStringList f_contents; diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 4784faf..db7d261 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -216,7 +216,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) // here if (AOApplication::get_demo_logging_enabled() && server_name != "Demo playback") { this->log_filename = QDateTime::currentDateTime().toUTC().toString( - "'logs/" + server_name.remove(QRegExp("[\\\\/:*?\"<>|\']")) + + "'logs/" + server_name.remove(QRegularExpression("[\\\\/:*?\"<>|\']")) + "/'yyyy-MM-dd hh-mm-ss t'.log'"); this->write_to_file("Joined server " + server_name + " hosted on address " + server_address + " on " + diff --git a/src/path_functions.cpp b/src/path_functions.cpp index 45920d5..2128ad9 100644 --- a/src/path_functions.cpp +++ b/src/path_functions.cpp @@ -3,7 +3,7 @@ #include "file_functions.h" #include -#include +#include #include #include @@ -235,14 +235,14 @@ QString AOApplication::get_config_value(QString p_identifier, QString p_config, path = get_real_path(p); if (!path.isEmpty()) { QSettings settings(path, QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) settings.setIniCodec("UTF-8"); +#endif QVariant value = settings.value(p_identifier); if (value.type() == QVariant::StringList) { -// qDebug() << "got" << p << "is a string list, returning" << value.toStringList().join(","); return value.toStringList().join(","); } else if (!value.isNull()){ -// qDebug() << "got" << p << "is a string, returning" << value.toString(); return value.toString(); } } diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index e5a614d..f3dc0cb 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -202,8 +202,9 @@ bool AOApplication::write_to_file(QString p_text, QString p_file, bool make_dir) if (f_log.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) { QTextStream out(&f_log); - +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) out.setCodec("UTF-8"); +#endif out << p_text; f_log.flush(); @@ -232,8 +233,9 @@ bool AOApplication::append_to_file(QString p_text, QString p_file, QFile f_log(p_file); if (f_log.open(QIODevice::WriteOnly | QIODevice::Append)) { QTextStream out(&f_log); - +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) out.setCodec("UTF-8"); +#endif out << "\r\n" << p_text; f_log.flush(); @@ -262,7 +264,9 @@ QVector AOApplication::read_favorite_servers() } else { QSettings fav_servers_ini(fav_servers_ini_path, QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) fav_servers_ini.setIniCodec("UTF-8"); +#endif auto grouplist = fav_servers_ini.childGroups(); { // remove all negative and non-numbers @@ -308,7 +312,9 @@ QVector AOApplication::read_legacy_favorite_servers() qWarning() << "failed to open serverlist.txt"; } else { QTextStream stream(&serverlist_txt); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) stream.setCodec("UTF-8"); +#endif while (!stream.atEnd()) { @@ -346,7 +352,9 @@ QString AOApplication::read_design_ini(QString p_identifier, QString p_design_path) { QSettings settings(p_design_path, QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) settings.setIniCodec("UTF-8"); +#endif QVariant value = settings.value(p_identifier); if (value.type() == QVariant::StringList) { return value.toStringList().join(","); @@ -608,7 +616,9 @@ QString AOApplication::read_char_ini(QString p_char, QString p_search_line, QSettings settings(get_real_path(get_character_path(p_char, "char.ini")), QSettings::IniFormat); settings.beginGroup(target_tag); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) settings.setIniCodec("UTF-8"); +#endif QString value = settings.value(p_search_line).value(); settings.endGroup(); return value; @@ -619,7 +629,9 @@ void AOApplication::set_char_ini(QString p_char, QString value, { QSettings settings(get_real_path(get_character_path(p_char, "char.ini")), QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) settings.setIniCodec("UTF-8"); +#endif settings.beginGroup(target_tag); settings.setValue(p_search_line, value); settings.endGroup(); @@ -630,7 +642,9 @@ QStringList AOApplication::read_ini_tags(VPath p_path, QString target_tag) { QStringList r_values; QSettings settings(get_real_path(p_path), QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) settings.setIniCodec("UTF-8"); +#endif if (!target_tag.isEmpty()) settings.beginGroup(target_tag); QStringList keys = settings.allKeys(); @@ -926,7 +940,9 @@ QStringList AOApplication::get_effects(QString p_char) } QSettings l_effects_ini(i_filepath, QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) l_effects_ini.setIniCodec("UTF-8"); +#endif // port legacy effects if (!l_effects_ini.contains("version/major") || l_effects_ini.value("version/major").toInt() < 2) @@ -1006,7 +1022,9 @@ QString AOApplication::get_effect_property(QString fx_name, QString p_char, path = get_real_path(p); if (!path.isEmpty()) { QSettings settings(path, QSettings::IniFormat); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) settings.setIniCodec("UTF-8"); +#endif QStringList char_effects = settings.childGroups(); for (int i = 0; i < char_effects.size(); ++i) { QString effect = settings.value(char_effects[i] + "/name").toString();