diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1078bb2..85348a2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,17 +12,15 @@ on: jobs: linux: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Install Dependencies run: | - sudo add-apt-repository ppa:beineri/opt-qt-5.15.2-focal sudo apt-get update - sudo apt-get install qt515base qt515x11extras qt515svg libmpv-dev libsqlite3-dev libmecab-dev mecab-ipadic libjson-c-dev libzip-dev mesa-common-dev python3-dev - /opt/qt515/bin/qt515-env.sh + sudo apt-get install qt6-base-dev libqt6svg6-dev libmpv-dev libsqlite3-dev libmecab-dev mecab-ipadic libjson-c-dev libzip-dev mesa-common-dev python3-dev - name: CMake Build run: | @@ -48,7 +46,7 @@ jobs: mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-sqlite3 - mingw-w64-x86_64-qt5 + mingw-w64-x86_64-qt6 mingw-w64-x86_64-mpv mingw-w64-x86_64-mecab mingw-w64-x86_64-json-c @@ -73,7 +71,7 @@ jobs: - name: Install Dependencies run: | brew update || true - brew install cmake sqlite3 qt5 mpv mecab mecab-ipadic json-c libzip python || true + brew install cmake sqlite3 qt6 mpv mecab mecab-ipadic json-c libzip python || true - name: CMake Build run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index a929e04..e76fc42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,18 +99,18 @@ if(APPLE AND NOT MAC_CROSSCOMPILE_X86) MEMENTO_INCLUDE_DIRS # arm64 locations - "/opt/homebrew/opt/qt5/include" + "/opt/homebrew/opt/qt6/include" "/opt/homebrew/include" # x86_64 locations - "/usr/local/opt/qt5/include/" + "/usr/local/opt/qt6/include/" "/usr/local/include" ) elseif(APPLE AND MAC_CROSSCOMPILE_X86) # This is a crosscomile target, x86_64 users shouldn't need to use this set( MEMENTO_INCLUDE_DIRS - "/usr/local/opt/qt5/include/" + "/usr/local/opt/qt6/include/" "/usr/local/include" ) endif() @@ -136,18 +136,31 @@ find_package(JsonC REQUIRED) find_package(libzip REQUIRED) find_package(MeCab REQUIRED) find_package(mpv REQUIRED) -if(UNIX AND NOT APPLE) +find_package(SQLite3 REQUIRED) +if (UNIX AND NOT APPLE) + find_package( + Qt6 REQUIRED + COMPONENTS + Concurrent + DBus + Gui + Network + OpenGLWidgets + Svg + Widgets + ) +else() find_package( - Qt5 - COMPONENTS Widgets Network DBus X11Extras Svg Concurrent REQUIRED + Qt6 REQUIRED + COMPONENTS + Concurrent + Gui + Network + OpenGLWidgets + Svg + Widgets ) - list(APPEND MEMENTO_INCLUDE_DIRS ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) -elseif(APPLE) - find_package(Qt5 COMPONENTS Widgets Network Svg Concurrent REQUIRED) -elseif(WIN32) - find_package(Qt5 COMPONENTS Widgets Network Svg Concurrent REQUIRED) endif() -find_package(SQLite3 REQUIRED) # Include CMake Modules include(FetchContent) diff --git a/README.md b/README.md index 6bb9c9e..9e25584 100644 --- a/README.md +++ b/README.md @@ -114,14 +114,9 @@ To do so, open Flatseal, select Anki, and add the `/tmp` directory under **Other ## Dependencies -* Qt5 (>= 5.15) - * QtCore - * QtGui - * QtWidgets - * QtNetwork - * QtSvg - * QtDBus (Linux) - * X11Extras (Linux) +* Qt + * Base + * SVG * mpv * sqlite3 * MeCab @@ -158,7 +153,7 @@ sudo make install ``` 1. Install the necessary tools and dependencies: ``` - pacman -S git make mingw-w64-x86_64-gcc mingw-w64-x86_64-ninja mingw-w64-x86_64-cmake mingw-w64-x86_64-python mingw-w64-x86_64-sqlite3 mingw-w64-x86_64-qt5 mingw-w64-x86_64-mpv mingw-w64-x86_64-mecab mingw-w64-x86_64-json-c mingw-w64-x86_64-libzip + pacman -S git make mingw-w64-x86_64-gcc mingw-w64-x86_64-ninja mingw-w64-x86_64-cmake mingw-w64-x86_64-python mingw-w64-x86_64-sqlite3 mingw-w64-x86_64-qt6 mingw-w64-x86_64-mpv mingw-w64-x86_64-mecab mingw-w64-x86_64-json-c mingw-w64-x86_64-libzip ``` 1. Clone the repository: ``` @@ -184,7 +179,7 @@ sudo make install ``` 1. Install the necessary tools and dependencies: ``` - brew install git cmake sqlite3 qt5 mpv mecab mecab-ipadic json-c libzip + brew install git cmake sqlite3 qt6 mpv mecab mecab-ipadic json-c libzip ``` 1. Clone the repository: ``` diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fd35b45..a9ce0ae 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -54,7 +54,7 @@ if(APPBUNDLE) PRIVATE globalmediator PRIVATE iconfactory PRIVATE mainwindow - PRIVATE Qt5::Svg + PRIVATE Qt6::Svg ) # Add in the dylibs @@ -92,7 +92,7 @@ if(APPBUNDLE) # Run macdeployqt to pick up any plugins dylibbundler missed if (MAC_CROSSCOMPILE_X86) - set(MACDEPLOYQT_BIN "/usr/local/opt/qt5/bin/macdeployqt") + set(MACDEPLOYQT_BIN "/usr/local/opt/qt6/bin/macdeployqt") else() set(MACDEPLOYQT_BIN macdeployqt) endif() @@ -141,7 +141,7 @@ elseif(WIN32) PRIVATE globalmediator PRIVATE iconfactory PRIVATE mainwindow - PRIVATE Qt5::Svg + PRIVATE Qt6::Svg ) # This is a target that will create memento_debug.exe so that issues can be @@ -162,7 +162,7 @@ elseif(WIN32) PRIVATE globalmediator PRIVATE iconfactory PRIVATE mainwindow - PRIVATE Qt5::Svg + PRIVATE Qt6::Svg ) elseif(UNIX) add_executable( @@ -180,7 +180,7 @@ elseif(UNIX) PRIVATE globalmediator PRIVATE iconfactory PRIVATE mainwindow - PRIVATE Qt5::Svg + PRIVATE Qt6::Svg ) else() message(FATAL_ERROR "Unsupported operating system!") diff --git a/src/anki/CMakeLists.txt b/src/anki/CMakeLists.txt index c037f69..901c28f 100644 --- a/src/anki/CMakeLists.txt +++ b/src/anki/CMakeLists.txt @@ -13,9 +13,9 @@ target_link_libraries( anki PRIVATE globalmediator PRIVATE mpvadapter - PRIVATE Qt5::Gui - PRIVATE Qt5::Network + PRIVATE Qt6::Gui + PRIVATE Qt6::Network PRIVATE subtitlelist PRIVATE utils - PUBLIC Qt5::Core + PUBLIC Qt6::Core ) diff --git a/src/anki/glossarybuilder.cpp b/src/anki/glossarybuilder.cpp index 316e82f..4b0a92f 100644 --- a/src/anki/glossarybuilder.cpp +++ b/src/anki/glossarybuilder.cpp @@ -532,7 +532,7 @@ QString GlossaryBuilder::addFile( int dotIndex = path.indexOf('.', lastSlashIndex); if (dotIndex != -1) { - hash += path.rightRef(path.length() - dotIndex); + hash += path.right(path.length() - dotIndex); } fileMap << QPair(basepath, hash); return hash; diff --git a/src/audio/CMakeLists.txt b/src/audio/CMakeLists.txt index 73f48fb..3731281 100644 --- a/src/audio/CMakeLists.txt +++ b/src/audio/CMakeLists.txt @@ -10,7 +10,7 @@ target_link_libraries( audioplayer PRIVATE globalmediator PRIVATE mpv::mpv - PRIVATE Qt5::Core - PRIVATE Qt5::Network + PRIVATE Qt6::Core + PRIVATE Qt6::Network PRIVATE utils ) diff --git a/src/dict/CMakeLists.txt b/src/dict/CMakeLists.txt index 8e59679..c4fcfb6 100644 --- a/src/dict/CMakeLists.txt +++ b/src/dict/CMakeLists.txt @@ -35,8 +35,8 @@ target_include_directories(dictionary_db PRIVATE ${MEMENTO_INCLUDE_DIRS}) target_link_libraries( dictionary_db PRIVATE MeCab::MeCab - PRIVATE Qt5::Widgets + PRIVATE Qt6::Widgets PRIVATE SQLite::SQLite3 PRIVATE yomidbbuilder - PUBLIC Qt5::Core + PUBLIC Qt6::Core ) diff --git a/src/dict/databasemanager.cpp b/src/dict/databasemanager.cpp index 2a77077..b01923f 100644 --- a/src/dict/databasemanager.cpp +++ b/src/dict/databasemanager.cpp @@ -384,7 +384,7 @@ QString DatabaseManager::queryTerms(const QString &query, QList &ter } if (isStepError(step)) { - ret = QString("Error when executing sqlite query. Code ") + step; + ret = "Error when executing sqlite query. Code " + QString::number(step); goto error; } @@ -919,10 +919,10 @@ QString DatabaseManager::errorCodeToString(const int code) const } } -#define HALFWIDTH_LOW 0xFF61 -#define HALFWIDTH_HIGH 0xFF9F -#define HALFWIDTH_VOICED 0xFF9E -#define HALFWIDTH_SEMI_VOICED 0xFF9F +static const QChar HALFWIDTH_LOW(0xFF61); +static const QChar HALFWIDTH_HIGH(0xFF9F); +static const QChar HALFWIDTH_VOICED(0xFF9E); +static const QChar HALFWIDTH_SEMI_VOICED(0xFF9F); QString DatabaseManager::halfToFull(const QString &query) const { @@ -1065,15 +1065,10 @@ QString DatabaseManager::halfToFull(const QString &query) const return res; } -#undef HALFWIDTH_LOW -#undef HALFWIDTH_HIGH -#undef HALFWIDTH_VOICED -#undef HALFWIDTH_SEMI_VOICED - -#define KATAKANA_LOW 0x30A1 -#define KATAKANA_HIGH 0x30F6 -#define HIRAGANA_LOW 0x3041 -#define HIRAGANA_HIGH 0x3096 +static const QChar KATAKANA_LOW(0x30A1); +static const QChar KATAKANA_HIGH(0x30F6); +static const QChar HIRAGANA_LOW(0x3041); +[[maybe_unused]] static const QChar HIRAGANA_HIGH(0x3096); QString DatabaseManager::kataToHira(QString query) const { @@ -1082,17 +1077,12 @@ QString DatabaseManager::kataToHira(QString query) const ushort code = ch.unicode(); if (code >= KATAKANA_LOW && code <= KATAKANA_HIGH) { - ch = QChar(HIRAGANA_LOW + (code - KATAKANA_LOW)); + ch = QChar(HIRAGANA_LOW.unicode() + (code - KATAKANA_LOW.unicode())); } } return query; } -#undef KATAKANA_LOW -#undef KATAKANA_HIGH -#undef HIRAGANA_LOW -#undef HIRAGANA_HIGH - QStringList DatabaseManager::jsonArrayToStringList(const char *jsonstr) const { QJsonDocument document = QJsonDocument::fromJson(jsonstr); diff --git a/src/dict/dictionary.cpp b/src/dict/dictionary.cpp index fbcd8cb..d52a906 100644 --- a/src/dict/dictionary.cpp +++ b/src/dict/dictionary.cpp @@ -76,25 +76,21 @@ static QByteArray toWindowsShortPath(const QString &path) { QByteArray pathArr = path.toUtf8(); DWORD length = 0; - TCHAR *buf = NULL; - length = GetShortPathName(pathArr.constData(), NULL, 0); + length = GetShortPathNameA(pathArr.constData(), NULL, 0); if (length == 0) { return ""; } - buf = new TCHAR[length]; - length = GetShortPathName(pathArr, buf, length); + QByteArray buf(length, '\0'); + length = GetShortPathNameA(pathArr, buf.data(), length); if (length == 0) { - delete[] buf; return ""; } - - QByteArray ret = QByteArray(buf); - delete[] buf; - return ret; + buf.chop(1); + return buf; } /** diff --git a/src/dict/expression.h b/src/dict/expression.h index d42d2a1..bedc0f7 100644 --- a/src/dict/expression.h +++ b/src/dict/expression.h @@ -52,7 +52,7 @@ struct Tag /* Score of the tag. Used for ordering. */ int score; - bool operator==(const Tag &lhs) + bool operator==(const Tag &lhs) const { return name == lhs.name && category == lhs.category && @@ -257,13 +257,8 @@ struct Kanji : public CommonExpFields QList definitions; }; -typedef QSharedPointer SharedTerm; -Q_DECLARE_METATYPE(SharedTerm) - -typedef QSharedPointer> SharedTermList; -Q_DECLARE_METATYPE(SharedTermList) - -typedef QSharedPointer SharedKanji; -Q_DECLARE_METATYPE(SharedKanji) +using SharedTerm = QSharedPointer; +using SharedTermList = QSharedPointer>; +using SharedKanji = QSharedPointer; #endif // EXPRESSION_H diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index f27054d..e5ed9f0 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -12,10 +12,11 @@ target_include_directories(mainwindow PRIVATE ${MEMENTO_INCLUDE_DIRS}) target_link_libraries( mainwindow PRIVATE "$<$:cocoa_event_handler>" + PRIVATE "$<$:Qt6::GuiPrivate>" PRIVATE aboutwindow PRIVATE mpvadapter PRIVATE optionswindow PRIVATE playeroverlay PRIVATE searchwidget - PUBLIC Qt5::Widgets + PUBLIC Qt6::Widgets ) diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index da8230a..0f9ca17 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -26,9 +26,10 @@ #include #include #include +#include #if defined(Q_OS_WIN) -#include +#include #endif #include "dict/dictionary.h" @@ -426,18 +427,14 @@ void MainWindow::initTheme() m_ui->subtitleList->setVisible(vis); updateSearchSubListSplitter(); - /* Enable or disable the 1px border on Windows */ #if defined(Q_OS_WIN) - if (window()->windowHandle()) - { - QWindowsWindowFunctions::setHasBorderInFullScreen( - window()->windowHandle(), - settings.value( - Constants::Settings::Interface::Subtitle::MENUBAR_FULLSCREEN, - Constants::Settings::Interface::Subtitle::MENUBAR_FULLSCREEN_DEFAULT - ).toBool() - ); - } + /* Enable or disable the 1px border on Windows */ + setHasBorderInFullScreen( + settings.value( + Constants::Settings::Interface::Subtitle::MENUBAR_FULLSCREEN, + Constants::Settings::Interface::Subtitle::MENUBAR_FULLSCREEN_DEFAULT + ).toBool() + ); #endif settings.endGroup(); @@ -589,6 +586,28 @@ void MainWindow::changeEvent(QEvent *event) /* End Event Handlers */ /* Begin Window Helpers */ +#if defined(Q_OS_WIN) +void MainWindow::setHasBorderInFullScreen(bool value) +{ + if (window() == nullptr) + { + return; + } + else if (window()->windowHandle() == nullptr) + { + return; + } + QNativeInterface::Private::QWindowsWindow *windowsWindow = window() + ->windowHandle() + ->nativeInterface(); + if (windowsWindow == nullptr) + { + return; + } + windowsWindow->setHasBorderInFullScreen(value); +} +#endif + void MainWindow::setFullscreen(bool value) { QApplication::processEvents(); diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 8a4a4f8..48441dc 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -199,6 +199,13 @@ private Q_SLOTS: */ void initDefinitionWidget(); +#if defined(Q_OS_WIN) + /** + * Sets whether or not 1px border is drawn when in fullscreen. + */ + void setHasBorderInFullScreen(bool value); +#endif + /** * Returns if the cursor is over the player or not. * @return true if the cursor is not over the player controls or the diff --git a/src/gui/widgets/CMakeLists.txt b/src/gui/widgets/CMakeLists.txt index 345a536..4e0b017 100644 --- a/src/gui/widgets/CMakeLists.txt +++ b/src/gui/widgets/CMakeLists.txt @@ -15,7 +15,7 @@ target_include_directories(aboutwindow PRIVATE ${MEMENTO_INCLUDE_DIRS}) target_link_libraries( aboutwindow PRIVATE version - PUBLIC Qt5::Widgets + PUBLIC Qt6::Widgets ) add_library( @@ -30,7 +30,7 @@ target_link_libraries( searchwidget PRIVATE definitionwidget PRIVATE dictionary_db - PUBLIC Qt5::Widgets + PUBLIC Qt6::Widgets ) add_library( @@ -46,5 +46,5 @@ target_link_libraries( subtitlelist PRIVATE playeradapter PRIVATE subtitleparser - PUBLIC Qt5::Widgets + PUBLIC Qt6::Widgets ) diff --git a/src/gui/widgets/aboutwindow.cpp b/src/gui/widgets/aboutwindow.cpp index 4a6b3fa..f42abe3 100644 --- a/src/gui/widgets/aboutwindow.cpp +++ b/src/gui/widgets/aboutwindow.cpp @@ -32,7 +32,7 @@ AboutWindow::AboutWindow(QWidget *parent) : QDialog(parent) setWindowTitle("About Memento"); QVBoxLayout *parentLayout = new QVBoxLayout(this); - parentLayout->setMargin(20); + parentLayout->setContentsMargins(20, 20, 20, 20); QLabel *labelImage = new QLabel; labelImage->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); diff --git a/src/gui/widgets/common/CMakeLists.txt b/src/gui/widgets/common/CMakeLists.txt index aee4836..3776aa7 100644 --- a/src/gui/widgets/common/CMakeLists.txt +++ b/src/gui/widgets/common/CMakeLists.txt @@ -5,7 +5,7 @@ add_library( ) target_compile_features(flowlayout PUBLIC cxx_std_17) target_compile_options(flowlayout PRIVATE ${MEMENTO_COMPILER_FLAGS}) -target_link_libraries(flowlayout PUBLIC Qt5::Widgets) +target_link_libraries(flowlayout PUBLIC Qt6::Widgets) add_library( hittestwidget STATIC @@ -14,7 +14,7 @@ add_library( ) target_compile_features(hittestwidget PUBLIC cxx_std_17) target_compile_options(hittestwidget PRIVATE ${MEMENTO_COMPILER_FLAGS}) -target_link_libraries(hittestwidget PUBLIC Qt5::Widgets) +target_link_libraries(hittestwidget PUBLIC Qt6::Widgets) add_library( strokelabel STATIC @@ -23,7 +23,7 @@ add_library( ) target_compile_features(strokelabel PUBLIC cxx_std_17) target_compile_options(strokelabel PRIVATE ${MEMENTO_COMPILER_FLAGS}) -target_link_libraries(strokelabel PUBLIC Qt5::Widgets) +target_link_libraries(strokelabel PUBLIC Qt6::Widgets) add_library( sliderjumpstyle STATIC @@ -31,7 +31,7 @@ add_library( ) target_compile_features(sliderjumpstyle PUBLIC cxx_std_17) target_compile_options(sliderjumpstyle PRIVATE ${MEMENTO_COMPILER_FLAGS}) -target_link_libraries(sliderjumpstyle PUBLIC Qt5::Widgets) +target_link_libraries(sliderjumpstyle PUBLIC Qt6::Widgets) add_library( scrollcombobox STATIC @@ -39,7 +39,7 @@ add_library( ) target_compile_features(scrollcombobox PUBLIC cxx_std_17) target_compile_options(scrollcombobox PRIVATE ${MEMENTO_COMPILER_FLAGS}) -target_link_libraries(scrollcombobox PUBLIC Qt5::Widgets) +target_link_libraries(scrollcombobox PUBLIC Qt6::Widgets) add_library( scrolldoublespinbox STATIC @@ -47,4 +47,4 @@ add_library( ) target_compile_features(scrolldoublespinbox PUBLIC cxx_std_17) target_compile_options(scrolldoublespinbox PRIVATE ${MEMENTO_COMPILER_FLAGS}) -target_link_libraries(scrolldoublespinbox PUBLIC Qt5::Widgets) +target_link_libraries(scrolldoublespinbox PUBLIC Qt6::Widgets) diff --git a/src/gui/widgets/common/flowlayout.cpp b/src/gui/widgets/common/flowlayout.cpp index 9a48855..12fb5e8 100644 --- a/src/gui/widgets/common/flowlayout.cpp +++ b/src/gui/widgets/common/flowlayout.cpp @@ -155,7 +155,7 @@ QSize FlowLayout::sizeHint() const QSize FlowLayout::minimumSize() const { QSize size; - for (const QLayoutItem *item : qAsConst(itemList)) + for (const QLayoutItem *item : std::as_const(itemList)) size = size.expandedTo(item->minimumSize()); const QMargins margins = contentsMargins(); @@ -176,7 +176,7 @@ int FlowLayout::doLayout(const QRect &rect, bool testOnly) const //! [9] //! [10] - for (QLayoutItem *item : qAsConst(itemList)) { + for (QLayoutItem *item : std::as_const(itemList)) { const QWidget *wid = item->widget(); int spaceX = horizontalSpacing(); if (spaceX == -1) diff --git a/src/gui/widgets/definition/CMakeLists.txt b/src/gui/widgets/definition/CMakeLists.txt index f8eb906..f228d10 100644 --- a/src/gui/widgets/definition/CMakeLists.txt +++ b/src/gui/widgets/definition/CMakeLists.txt @@ -26,6 +26,6 @@ target_link_libraries( PRIVATE audioplayer PRIVATE dictionary_db PRIVATE flowlayout - PRIVATE Qt5::Network - PUBLIC Qt5::Widgets + PRIVATE Qt6::Network + PUBLIC Qt6::Widgets ) diff --git a/src/gui/widgets/definition/glossarywidget.cpp b/src/gui/widgets/definition/glossarywidget.cpp index 05dcb1a..252360f 100644 --- a/src/gui/widgets/definition/glossarywidget.cpp +++ b/src/gui/widgets/definition/glossarywidget.cpp @@ -39,7 +39,7 @@ GlossaryWidget::GlossaryWidget( m_labelNumber = new QLabel; m_glossaryLabel = new GlossaryLabel(modifier, style); - m_parentLayout->setMargin(0); + m_parentLayout->setContentsMargins(0, 0, 0, 0); m_parentLayout->addLayout(m_layoutHeader); m_parentLayout->addWidget(m_glossaryLabel); diff --git a/src/gui/widgets/definition/pitchwidget.cpp b/src/gui/widgets/definition/pitchwidget.cpp index c2bc450..5b62aab 100644 --- a/src/gui/widgets/definition/pitchwidget.cpp +++ b/src/gui/widgets/definition/pitchwidget.cpp @@ -84,7 +84,7 @@ PitchWidget::PitchWidget(const Pitch &pitch, QWidget *parent) : QWidget(parent) { layoutParent = new QHBoxLayout(this); } - layoutParent->setMargin(0); + layoutParent->setContentsMargins(0, 0, 0, 0); layoutParent->addWidget(new TagWidget(pitch), 0, Qt::AlignLeft); @@ -92,7 +92,7 @@ PitchWidget::PitchWidget(const Pitch &pitch, QWidget *parent) : QWidget(parent) for (const uint8_t pos : pitch.position) { QHBoxLayout *layoutLine = new QHBoxLayout; - layoutLine->setMargin(0); + layoutLine->setContentsMargins(0, 0, 0, 0); layoutLine->setSpacing(0); layoutParent->addLayout(layoutLine); diff --git a/src/gui/widgets/mpv/CMakeLists.txt b/src/gui/widgets/mpv/CMakeLists.txt index 3d8e06e..b64c659 100644 --- a/src/gui/widgets/mpv/CMakeLists.txt +++ b/src/gui/widgets/mpv/CMakeLists.txt @@ -11,11 +11,12 @@ target_compile_options(mpvwidget PRIVATE ${MEMENTO_COMPILER_FLAGS}) target_include_directories(mpvwidget PRIVATE ${MEMENTO_INCLUDE_DIRS}) target_link_libraries( mpvwidget - PRIVATE "$<$,$>>:Qt5::DBus>" - PRIVATE "$<$,$>>:Qt5::X11Extras>" + PRIVATE "$<$,$>>:Qt6::DBus>" + PRIVATE "$<$,$>>:Qt6::GuiPrivate>" PRIVATE "$<$:-framework CoreFoundation>" PRIVATE "$<$:-framework IOKit>" PRIVATE globalmediator PRIVATE mpv::mpv - PUBLIC Qt5::Widgets + PUBLIC Qt6::OpenGLWidgets + PUBLIC Qt6::Widgets ) diff --git a/src/gui/widgets/mpv/mpvwidget.cpp b/src/gui/widgets/mpv/mpvwidget.cpp index 7c91f1b..6fb0a1f 100644 --- a/src/gui/widgets/mpv/mpvwidget.cpp +++ b/src/gui/widgets/mpv/mpvwidget.cpp @@ -22,7 +22,6 @@ #include #include -#include #include #include #include @@ -34,7 +33,6 @@ #elif defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) #include #include -#include #endif #include "cursortimer.h" @@ -72,8 +70,8 @@ static void onUpdate(void *ctx) MpvWidget::MpvWidget(QWidget *parent) : QOpenGLWidget(parent), - m_height(height() * QApplication::desktop()->devicePixelRatioF()), - m_width(width() * QApplication::desktop()->devicePixelRatioF()) + m_height(height() * parent->screen()->devicePixelRatio()), + m_width(width() * parent->screen()->devicePixelRatio()) { /* Set the mediator player widget */ GlobalMediator *mediator = GlobalMediator::getGlobalMediator(); @@ -477,8 +475,12 @@ void MpvWidget::initializeGL() #if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) if (QGuiApplication::platformName().contains("xcb")) { + QGuiApplication *app = + dynamic_cast(QGuiApplication::instance()); + QNativeInterface::QX11Application *native = + app->nativeInterface(); params[2].type = MPV_RENDER_PARAM_X11_DISPLAY; - params[2].data = QX11Info::display(); + params[2].data = native->display(); } else if (QGuiApplication::platformName().contains("wayland")) { diff --git a/src/gui/widgets/overlay/CMakeLists.txt b/src/gui/widgets/overlay/CMakeLists.txt index 4bc3f31..2018a12 100644 --- a/src/gui/widgets/overlay/CMakeLists.txt +++ b/src/gui/widgets/overlay/CMakeLists.txt @@ -25,7 +25,8 @@ target_link_libraries( PRIVATE hittestwidget PRIVATE iconfactory PRIVATE playeradapter - PRIVATE Qt5::Concurrent + PRIVATE Qt6::Concurrent PRIVATE strokelabel - PUBLIC Qt5::Widgets + PUBLIC Qt6::OpenGLWidgets + PUBLIC Qt6::Widgets ) diff --git a/src/gui/widgets/overlay/ocroverlay.cpp b/src/gui/widgets/overlay/ocroverlay.cpp index 31f6414..65a6a4d 100644 --- a/src/gui/widgets/overlay/ocroverlay.cpp +++ b/src/gui/widgets/overlay/ocroverlay.cpp @@ -77,7 +77,8 @@ void OCROverlay::initOCRSettings() { OCRModel *model = m_model; m_model = nullptr; - QtConcurrent::run([model] { delete model; }); + QFuture deleteFuture = + QtConcurrent::run([model] { delete model; }); } QSettings settings; @@ -113,7 +114,9 @@ void OCROverlay::mousePressEvent(QMouseEvent *event) QWidget::mousePressEvent(event); m_startPoint = event->pos(); - m_rubberBand->setGeometry(event->x(), event->y(), 0, 0); + m_rubberBand->setGeometry( + event->position().x(), event->position().y(), 0, 0 + ); m_rubberBand->show(); } @@ -121,8 +124,7 @@ void OCROverlay::mouseMoveEvent(QMouseEvent *event) { QWidget::mouseMoveEvent(event); - /* TODO: Replace with QRect::span() in Qt6 */ - m_rubberBand->setGeometry(OCROverlay::span(m_startPoint, event->pos())); + m_rubberBand->setGeometry(QRect::span(m_startPoint, event->pos())); } void OCROverlay::mouseReleaseEvent(QMouseEvent *event) @@ -131,8 +133,7 @@ void OCROverlay::mouseReleaseEvent(QMouseEvent *event) if (m_rubberBand->isVisible()) { - /* TODO: Replace with QRect::span() in Qt6 */ - getText(OCROverlay::span(m_startPoint, event->pos())); + getText(QRect::span(m_startPoint, event->pos())); } m_rubberBand->hide(); hide(); @@ -184,13 +185,4 @@ void OCROverlay::getText(QRect rect) m_resultWatcher.setFuture(m_model->getText(image)); } -QRect OCROverlay::span(const QPoint &p1, const QPoint &p2) -{ - int x = p1.x() < p2.x() ? p1.x() : p2.x(); - int y = p1.y() < p2.y() ? p1.y() : p2.y(); - int w = std::abs(p1.x() - p2.x()); - int h = std::abs(p1.y() - p2.y()); - return QRect(x, y, w, h); -} - /* End Helpers */ diff --git a/src/gui/widgets/overlay/ocroverlay.h b/src/gui/widgets/overlay/ocroverlay.h index ae4d662..e58e3ca 100644 --- a/src/gui/widgets/overlay/ocroverlay.h +++ b/src/gui/widgets/overlay/ocroverlay.h @@ -102,14 +102,6 @@ private Q_SLOTS: */ void getText(QRect rect); - /** - * Constructs a QRect from two points. - * @param p1 One corner of the rectangle. - * @param p2 One corner of the rectangle. - * @return A QRect defined by points 1 and 2. - */ - static QRect span(const QPoint &p1, const QPoint &p2); - /* The OCR model */ OCRModel *m_model = nullptr; diff --git a/src/gui/widgets/overlay/playermenu.cpp b/src/gui/widgets/overlay/playermenu.cpp index 27a3b7b..ed98155 100644 --- a/src/gui/widgets/overlay/playermenu.cpp +++ b/src/gui/widgets/overlay/playermenu.cpp @@ -21,6 +21,7 @@ #include "playermenu.h" #include "ui_playermenu.h" +#include #include #include #include diff --git a/src/gui/widgets/overlay/playeroverlay.cpp b/src/gui/widgets/overlay/playeroverlay.cpp index e8a1b2b..04151cf 100644 --- a/src/gui/widgets/overlay/playeroverlay.cpp +++ b/src/gui/widgets/overlay/playeroverlay.cpp @@ -44,14 +44,13 @@ PlayerOverlay::PlayerOverlay(QWidget *parent) : QStackedLayout(parent) { /* Fix the margins */ setSpacing(0); - setContentsMargins(QMargins(0, 0, 0, 0)); - setMargin(0); + setContentsMargins(0, 0, 0, 0); /* Create the container */ QVBoxLayout *layoutContainer = new QVBoxLayout; - layoutContainer->setSpacing(0); - layoutContainer->setContentsMargins(QMargins(0, 0, 0, 0)); - layoutContainer->setMargin(0); + layoutContainer->setContentsMargins(0, 0, 0, 0); + layoutContainer->setContentsMargins(0, 0, 0, 0); + layoutContainer->setContentsMargins(0, 0, 0, 0); m_widgetOSC = new HitTestWidget; m_widgetOSC->setMouseTracking(true); m_widgetOSC->setLayout(layoutContainer); diff --git a/src/gui/widgets/overlay/progressslider.cpp b/src/gui/widgets/overlay/progressslider.cpp index d65d546..aa2c092 100644 --- a/src/gui/widgets/overlay/progressslider.cpp +++ b/src/gui/widgets/overlay/progressslider.cpp @@ -124,16 +124,16 @@ void ProgressSlider::mouseMoveEvent(QMouseEvent *event) } int pos = QStyle::sliderValueFromPosition( - minimum(), maximum(), event->x(), width() + minimum(), maximum(), event->position().x(), width() ); m_labelTimecode->setText(formatTime(pos)); m_labelTimecode->adjustSize(); - int tipX = event->x() + MOUSE_OFFSET; + int tipX = event->position().x() + MOUSE_OFFSET; int tipY = (parentWidget()->height() / 2) - (m_labelTimecode->height() / 2); - if (event->x() > width() / 2) + if (event->position().x() > width() / 2) { - tipX = event->x() - MOUSE_OFFSET - m_labelTimecode->width(); + tipX = event->position().x() - MOUSE_OFFSET - m_labelTimecode->width(); } m_labelTimecode->move(mapToParent(QPoint(tipX, 0)).x(), tipY); diff --git a/src/gui/widgets/searchwidget.cpp b/src/gui/widgets/searchwidget.cpp index 6b94f49..bfde8a2 100644 --- a/src/gui/widgets/searchwidget.cpp +++ b/src/gui/widgets/searchwidget.cpp @@ -87,7 +87,7 @@ SearchWidget::SearchWidget(QWidget *parent) m_layoutParent->addWidget(m_searchEdit); m_definition = new DefinitionWidget; - m_definition->layout()->setMargin(0); + m_definition->layout()->setContentsMargins(0, 0, 0, 0); m_definition->setMinimumSize(300, 300); m_definition->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); m_layoutParent->addWidget(m_definition); diff --git a/src/gui/widgets/settings/CMakeLists.txt b/src/gui/widgets/settings/CMakeLists.txt index 67562ee..6c775d6 100644 --- a/src/gui/widgets/settings/CMakeLists.txt +++ b/src/gui/widgets/settings/CMakeLists.txt @@ -42,5 +42,5 @@ target_link_libraries( PRIVATE playeradapter PRIVATE scrollcombobox PRIVATE scrolldoublespinbox - PUBLIC Qt5::Widgets + PUBLIC Qt6::Widgets ) diff --git a/src/gui/widgets/settings/ankisettings.cpp b/src/gui/widgets/settings/ankisettings.cpp index edb24fd..2abe06f 100644 --- a/src/gui/widgets/settings/ankisettings.cpp +++ b/src/gui/widgets/settings/ankisettings.cpp @@ -630,7 +630,8 @@ void AnkiSettings::applyToConfig(const QString &profile) config->tags = QJsonArray(); QStringList splitTags = - m_ui->lineEditTags->text().split(QRegExp(REGEX_REMOVE_SPACES_COMMAS)); + m_ui->lineEditTags->text() + .split(QRegularExpression(REGEX_REMOVE_SPACES_COMMAS)); for (const QString &tag : splitTags) { config->tags.append(tag); diff --git a/src/gui/widgets/settings/interfacesettings.cpp b/src/gui/widgets/settings/interfacesettings.cpp index b718448..11f71d1 100644 --- a/src/gui/widgets/settings/interfacesettings.cpp +++ b/src/gui/widgets/settings/interfacesettings.cpp @@ -142,13 +142,13 @@ void InterfaceSettings::restoreDefaults() Constants::Settings::Interface::Subtitle::STROKE_DEFAULT ); - m_subColor.setNamedColor( + m_subColor.fromString( Constants::Settings::Interface::Subtitle::TEXT_COLOR_DEFAULT ); - m_bgColor.setNamedColor( + m_bgColor.fromString( Constants::Settings::Interface::Subtitle::BACKGROUND_COLOR_DEFAULT ); - m_strokeColor.setNamedColor( + m_strokeColor.fromString( Constants::Settings::Interface::Subtitle::STROKE_COLOR_DEFAULT ); @@ -245,19 +245,19 @@ void InterfaceSettings::restoreSaved() ).toDouble() ); - m_subColor.setNamedColor(settings.value( + m_subColor.fromString(settings.value( Constants::Settings::Interface::Subtitle::TEXT_COLOR, Constants::Settings::Interface::Subtitle::TEXT_COLOR_DEFAULT ).toString() ); setButtonColor(m_ui->buttonSubColor, m_subColor); - m_bgColor.setNamedColor(settings.value( + m_bgColor.fromString(settings.value( Constants::Settings::Interface::Subtitle::BACKGROUND_COLOR, Constants::Settings::Interface::Subtitle::BACKGROUND_COLOR_DEFAULT ).toString() ); setButtonColor(m_ui->buttonSubBackground, m_bgColor); - m_strokeColor.setNamedColor(settings.value( + m_strokeColor.fromString(settings.value( Constants::Settings::Interface::Subtitle::STROKE_COLOR, Constants::Settings::Interface::Subtitle::STROKE_COLOR_DEFAULT ).toString() diff --git a/src/gui/widgets/subtitlelistwidget.cpp b/src/gui/widgets/subtitlelistwidget.cpp index ca3ef95..eefbdef 100644 --- a/src/gui/widgets/subtitlelistwidget.cpp +++ b/src/gui/widgets/subtitlelistwidget.cpp @@ -82,10 +82,10 @@ SubtitleListWidget::SubtitleListWidget(QWidget *parent) m_primary.table = m_ui->tablePrim; m_secondary.table = m_ui->tableSec; - m_copyShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_C), this); + m_copyShortcut = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_C), this); m_copyAudioShortcut = - new QShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_C), this); - m_findShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_F), this); + new QShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_C), this); + m_findShortcut = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F), this); initTheme(); initRegex(); @@ -392,13 +392,21 @@ void SubtitleListWidget::handleTracklistChange( { if (!m_subtitleMap.contains(extSids[i])) { - m_subtitleMap[extSids[i]] = new QList; - m_subtitleParsed[extSids[i]] = new bool; + m_subtitleMap[extSids[i]] = std::make_shared< + std::vector>>(); + m_subtitleParsed[extSids[i]] = std::make_shared(false); } - *m_subtitleMap[extSids[i]] = - parser.parseSubtitles(extTracks[i]); + QList subtitles = parser.parseSubtitles(extTracks[i]); + std::transform( + std::begin(subtitles), std::end(subtitles), + std::back_inserter(*m_subtitleMap[extSids[i]]), + [] (SubtitleInfo &info) + { + return std::make_shared(info); + } + ); *m_subtitleParsed[extSids[i]] = - !m_subtitleMap[extSids[i]]->isEmpty(); + !m_subtitleMap[extSids[i]]->empty(); } m_secondary.lock.unlock(); @@ -451,14 +459,14 @@ QString SubtitleListWidget::formatTimecode(const int time) QTableWidgetItem *SubtitleListWidget::addTableItem( SubtitleList &list, - const SubtitleInfo &info, + const std::shared_ptr &info, double delay, bool regex) { QTableWidgetItem *subtitleItem; if (regex) { - QString text = QString(info.text).remove(m_subRegex); + QString text = QString(info->text).remove(m_subRegex); if (text.isEmpty()) { return nullptr; @@ -467,15 +475,15 @@ QTableWidgetItem *SubtitleListWidget::addTableItem( } else { - subtitleItem = new QTableWidgetItem(info.text); + subtitleItem = new QTableWidgetItem(info->text); } - list.itemToSub.insert(subtitleItem, &info); - QStringList lines = info.text.split('\n'); + list.itemToSub.insert(subtitleItem, info); + QStringList lines = info->text.split('\n'); for (const QString &line : lines) { list.lineToItem.insert(line, subtitleItem); } - auto endIt = list.startToItem.insert(info.start, subtitleItem); + auto endIt = list.startToItem.insert(info->start, subtitleItem); /* This is a bit of a hack to get the subtitles to appear in order. * If a subtitle starts at the same start time as another, the subtitle @@ -486,15 +494,15 @@ QTableWidgetItem *SubtitleListWidget::addTableItem( * be worth it. */ size_t i = std::distance(list.startToItem.begin(), endIt); - for (endIt += 1; - endIt != list.startToItem.end() && endIt.key() == info.start; + for (++endIt; + endIt != list.startToItem.end() && endIt.key() == info->start; ++endIt) { ++i; } QTableWidgetItem *timecodeItem = - new QTableWidgetItem(formatTimecode(info.start + delay)); + new QTableWidgetItem(formatTimecode(info->start + delay)); timecodeItem->setFlags(Qt::NoItemFlags); list.table->insertRow(i); @@ -530,17 +538,17 @@ void SubtitleListWidget::addSubtitle( QTableWidgetItem *subtitleItem = nullptr; if (it == list.startToItem.end() || it.key() - start > TIME_DELTA) { - SubtitleInfo info; - info.text = subtitle; - info.start = start; - info.end = end; - list.subList->append(info); + std::shared_ptr info = std::make_shared(); + info->text = subtitle; + info->start = start; + info->end = end; + list.subList->emplace_back(std::move(info)); if (regex) { m_subRegexLock.lock(); } - subtitleItem = addTableItem(list, list.subList->last(), delay, regex); + subtitleItem = addTableItem(list, list.subList->back(), delay, regex); if (regex) { m_subRegexLock.unlock(); @@ -565,8 +573,9 @@ void SubtitleListWidget::handlePrimaryTrackChange(int64_t sid) if (!m_subtitleMap.contains(sid)) { - m_subtitleMap[sid] = new QList; - m_subtitleParsed[sid] = new bool{false}; + m_subtitleMap[sid] = + std::make_shared>>(); + m_subtitleParsed[sid] = std::make_shared(false); } m_primary.subList = m_subtitleMap[sid]; m_primary.subsParsed = m_subtitleParsed[sid]; @@ -574,7 +583,7 @@ void SubtitleListWidget::handlePrimaryTrackChange(int64_t sid) double delay = GlobalMediator::getGlobalMediator()->getPlayerAdapter()->getSubDelay(); m_subRegexLock.lock(); - for (const SubtitleInfo &info : *m_primary.subList) + for (const auto &info : *m_primary.subList) { addTableItem(m_primary, info, delay, true); } @@ -591,15 +600,16 @@ void SubtitleListWidget::handleSecondaryTrackChange(int64_t sid) if (!m_subtitleMap.contains(sid)) { - m_subtitleMap[sid] = new QList; - m_subtitleParsed[sid] = new bool{false}; + m_subtitleMap[sid] = + std::make_shared>>(); + m_subtitleParsed[sid] = std::make_shared(false); } m_secondary.subList = m_subtitleMap[sid]; m_secondary.subsParsed = m_subtitleParsed[sid]; double delay = GlobalMediator::getGlobalMediator()->getPlayerAdapter()->getSubDelay(); - for (const SubtitleInfo &info : *m_secondary.subList) + for (const auto &info : *m_secondary.subList) { addTableItem(m_secondary, info, delay); } @@ -626,7 +636,7 @@ void SubtitleListWidget::selectSubtitles(SubtitleList &list, QList items = list.lineToItem.values(line); for (QTableWidgetItem *item : items) { - const SubtitleInfo *info = list.itemToSub[item]; + const auto &info = list.itemToSub[item]; if (info->start <= time + TIME_DELTA && info->end >= time - TIME_DELTA) { @@ -762,7 +772,7 @@ inline QPair SubtitleListWidget::getContextTime( } for (QTableWidgetItem *item : items) { - const SubtitleInfo *info = list.itemToSub[item]; + const auto &info = list.itemToSub[item]; start = start < info->start ? start : info->start; end = end > info->end ? end : info->end; } @@ -900,15 +910,7 @@ void SubtitleListWidget::clearCachedSubtitles() { clearPrimarySubtitles(); clearSecondarySubtitles(); - for (QList *l : m_subtitleMap) - { - delete l; - } m_subtitleMap.clear(); - for (bool *b : m_subtitleParsed) - { - delete b; - } m_subtitleParsed.clear(); } diff --git a/src/gui/widgets/subtitlelistwidget.h b/src/gui/widgets/subtitlelistwidget.h index 98a2ac7..5e62817 100644 --- a/src/gui/widgets/subtitlelistwidget.h +++ b/src/gui/widgets/subtitlelistwidget.h @@ -23,6 +23,9 @@ #include +#include +#include + #include #include #include @@ -268,16 +271,19 @@ private Q_SLOTS: QMutex lock; /* Holds subtitle info for the current track. */ - QList *subList; + std::shared_ptr>> subList; /* true if subtitles were parsed, false otherwise */ - bool *subsParsed = nullptr; + std::shared_ptr subsParsed = nullptr; /* Maps timecodes to table widget items for the subtitles. */ QMultiMap startToItem; /* Maps table widget items to subtitle infos. */ - QHash itemToSub; + QHash< + QTableWidgetItem *, + std::shared_ptr + > itemToSub; /* Maps subtitle lines to table widget items for parsed subtitles. */ QMultiHash lineToItem; @@ -377,7 +383,7 @@ private Q_SLOTS: * regex is true and the text is empty. */ QTableWidgetItem *addTableItem(SubtitleList &list, - const SubtitleInfo &info, + const std::shared_ptr &info, double delay, bool regex = false); @@ -443,10 +449,13 @@ private Q_SLOTS: QMutex m_subRegexLock; /* Maps sid to a list of subtitles */ - QHash *> m_subtitleMap; + QHash< + int64_t, + std::shared_ptr>> + > m_subtitleMap; /* Maps sid to whether or not the subtitle was parsed. */ - QHash m_subtitleParsed; + QHash> m_subtitleParsed; /* The primary subtitle list */ SubtitleList m_primary; diff --git a/src/main.cpp b/src/main.cpp index 9915837..1624b37 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,7 +27,6 @@ #include #include #include -#include #if defined(Q_OS_WIN) #include @@ -54,6 +53,10 @@ #error "OS not supported" #endif +Q_DECLARE_METATYPE(SharedTerm) +Q_DECLARE_METATYPE(SharedTermList) +Q_DECLARE_METATYPE(SharedKanji) + /** * Updates the QSettings before the MainWindow is created. * This is used during updates to make sure that configurations for old versions @@ -197,12 +200,6 @@ int main(int argc, char **argv) QCoreApplication::addLibraryPath(DirectoryUtils::getProgramDirectory()); #endif - /* Always assume UTF-8 unless there's a BOM */ - QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); - - /* HiDPI support */ - QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); /* Organization Info */ QCoreApplication::setOrganizationName("memento"); QCoreApplication::setOrganizationDomain("ripose.projects"); diff --git a/src/ocr/CMakeLists.txt b/src/ocr/CMakeLists.txt index 0a9c281..cdc659a 100644 --- a/src/ocr/CMakeLists.txt +++ b/src/ocr/CMakeLists.txt @@ -10,8 +10,8 @@ if(OCR_SUPPORT) target_link_libraries( ocrmodel PRIVATE mocr++ - PRIVATE Qt5::Concurrent - PRIVATE Qt5::Gui - PUBLIC Qt5::Core + PRIVATE Qt6::Concurrent + PRIVATE Qt6::Gui + PUBLIC Qt6::Core ) endif() diff --git a/src/player/CMakeLists.txt b/src/player/CMakeLists.txt index 77fdd8b..cf00037 100644 --- a/src/player/CMakeLists.txt +++ b/src/player/CMakeLists.txt @@ -4,8 +4,8 @@ target_compile_options(playeradapter PRIVATE ${MEMENTO_COMPILER_FLAGS}) target_include_directories(playeradapter PRIVATE ${MEMENTO_INCLUDE_DIRS}) target_link_libraries( playeradapter - PUBLIC Qt5::Core - PUBLIC Qt5::Gui + PUBLIC Qt6::Core + PUBLIC Qt6::Gui ) add_library( diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index 8eaf889..2d69483 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -8,7 +8,7 @@ target_compile_options(globalmediator PRIVATE ${MEMENTO_COMPILER_FLAGS}) target_include_directories(globalmediator PRIVATE ${MEMENTO_INCLUDE_DIRS}) target_link_libraries( globalmediator - PUBLIC Qt5::Core + PUBLIC Qt6::Core ) add_library( @@ -21,9 +21,9 @@ target_compile_options(utils PRIVATE ${MEMENTO_COMPILER_FLAGS}) target_include_directories(utils PRIVATE ${MEMENTO_INCLUDE_DIRS}) target_link_libraries( utils - PRIVATE Qt5::Network + PRIVATE Qt6::Network PRIVATE version - PUBLIC Qt5::Core + PUBLIC Qt6::Core ) add_library( @@ -36,8 +36,8 @@ target_compile_options(iconfactory PRIVATE ${MEMENTO_COMPILER_FLAGS}) target_include_directories(iconfactory PRIVATE ${MEMENTO_INCLUDE_DIRS}) target_link_libraries( iconfactory - PRIVATE Qt5::Core - PUBLIC Qt5::Widgets + PRIVATE Qt6::Core + PUBLIC Qt6::Widgets ) add_library( @@ -50,5 +50,5 @@ target_compile_options(subtitleparser PRIVATE ${MEMENTO_COMPILER_FLAGS}) target_include_directories(subtitleparser PRIVATE ${MEMENTO_INCLUDE_DIRS}) target_link_libraries( subtitleparser - PUBLIC Qt5::Core + PUBLIC Qt6::Core ) diff --git a/windows/build.sh b/windows/build.sh index e55bd0c..5a17190 100644 --- a/windows/build.sh +++ b/windows/build.sh @@ -48,7 +48,7 @@ python3 ../windows/mingw-bundledlls.py --copy ./Memento_$arch/memento.exe cp $PREFIX/bin/libssl-*.dll ./Memento_$arch cd Memento_$arch -windeployqt memento.exe +windeployqt6 memento.exe rm -rf translations # Get the latest youtube-dl diff --git a/windows/mingw-bundledlls.py b/windows/mingw-bundledlls.py index c227299..592360b 100644 --- a/windows/mingw-bundledlls.py +++ b/windows/mingw-bundledlls.py @@ -54,7 +54,8 @@ "avicap32.dll", "avrt.dll", "psapi.dll", "mswsock.dll", "glu32.dll", "bcrypt.dll", "rpcrt4.dll", "mfplat.dll", "cfgmgr32.dll", "ncrypt.dll", "d3d11.dll", "dxgi.dll", "dwrite.dll", "api-ms-win-core-path-l1-1-0.dll", - "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", "authz.dll", "api-ms-win-core-synch-l1-2-0.dll", + "d3d12.dll", "winhttp.dll", "libmocr.dll", "libmocr++.dll" ]