diff --git a/conanfile.txt b/conanfile.txt new file mode 100644 index 000000000..df6ca348b --- /dev/null +++ b/conanfile.txt @@ -0,0 +1,2 @@ +[requires] +xerces-c/[>=3.2,<4.0] diff --git a/qbs/module-providers/conan/provider.qbs b/qbs/module-providers/conan/provider.qbs new file mode 100644 index 000000000..19ff4561a --- /dev/null +++ b/qbs/module-providers/conan/provider.qbs @@ -0,0 +1,124 @@ +import qbs.File +import qbs.FileInfo +import qbs.TextFile + +ModuleProvider { + relativeSearchPaths: { + var conanPackageDir = FileInfo.cleanPath(FileInfo.joinPaths(outputBaseDir, "../../..", "genconan")); + var dirs = File.directoryEntries(conanPackageDir, File.AllDirs | File.NoDotAndDotDot); + var packageVersions = {}; + + /* + * The generated conanbuildinfo.json files are inside of the 'genconan' folder in the build directory. + * Since there might be more than one, they're placed inside of folders with a hashed name to avoid conflicts. + * Here we have to iterate over those folders and process the json files within. + */ + for(d in dirs) { + var conanbuildinfo = FileInfo.joinPaths(conanPackageDir, dirs[d], "conanbuildinfo.json"); + + if(!File.exists(conanbuildinfo)) { + continue; + } + + var file = new TextFile(conanbuildinfo, TextFile.ReadOnly); + var fileContent = JSON.parse(file.readAll()); + + file.close(); + + console.info(JSON.stringify(fileContent)); + + var deps = fileContent.dependencies; + + for(i in deps){ + if(packageVersions[deps[i].name]) { + if(deps[i].version != packageVersions[deps[i].name]) { + console.error("Conan package '" + deps[i].name + "' found in multiple conanfile.txt's with different versions: " + + packageVersions[deps[i].name] + " and " + deps[i].version); + + return []; + } + + console.info("Already generated module for conan package '" + deps[i].name + "', skipping...") + + continue; + } + + console.info("Generating module for conan package '" + deps[i].name + "'"); + packageVersions[deps[i].name] = deps[i].version; + + // module name can be invalid for Javascrip. Search for alternative names for cmake. + var moduleName = deps[i].name; + if (deps[i].hasOwnProperty("names")) + { + if (deps[i].names.hasOwnProperty("cmake_find_package")) + moduleName = deps[i].names.cmake_find_package; + else if (deps.names.hasOwnProperty("cmake_find_package_multi")) + moduleName = deps[i].names.cmake_find_package_multi; + } + + var moduleDir = FileInfo.joinPaths(outputBaseDir, "modules", name, moduleName); + + File.makePath(moduleDir); + + var moduleFile = new TextFile(FileInfo.joinPaths(moduleDir, moduleName + ".qbs"), TextFile.WriteOnly); + + var shared = false; + if (fileContent.options[deps[i].name].hasOwnProperty("shared")) + { + shared = (fileContent.options[deps[i].name].shared === 'True'); + } + + var cppLibraries = shared ? "\tcpp.dynamicLibraries: " : "\tcpp.staticLibraries: "; + + moduleFile.write("import qbs\n" + + "Module {\n" + + "\tproperty bool installBin: false\n" + + "\tproperty bool installLib: false\n" + + "\tproperty bool installRes: false\n" + + "\tproperty bool installInclude: false\n" + + "\tproperty string binInstallDir: \"bin\"\n" + + "\tproperty string libInstallDir: \"lib\"\n" + + "\tproperty string resInstallDir: \"res\"\n" + + "\tproperty string includeInstallDir: \"include\"\n" + + "\tproperty stringList binFilePatterns: [\"**/*\"]\n" + + "\tproperty stringList libFilePatterns: [\"**/*\"]\n" + + "\tproperty stringList resFilePatterns: [\"**/*\"]\n" + + "\tproperty stringList includeFilePatterns: [\"**/*\"]\n\n" + + "\tDepends { name: \"cpp\" }\n\n" + + "\tcpp.includePaths: " + JSON.stringify(deps[i].include_paths) + "\n" + + "\tcpp.systemIncludePaths: " + JSON.stringify(deps[i].include_paths) + "\n" + + "\tcpp.libraryPaths: " + JSON.stringify(deps[i].lib_paths) + "\n" + + cppLibraries + JSON.stringify(deps[i].libs) + "\n" + + "\tcpp.defines: " + JSON.stringify(deps[i].defines) + "\n\n"); + + function writeGroups(file, moduleName, prefix, pathList, install) { + for(j in pathList) { + file.write("\tGroup {\n" + + "\t\tname: \"" + prefix + (j > 0 ? j : "") + "\"\n" + + "\t\tprefix: \"" + FileInfo.fromNativeSeparators(pathList[j]) + "/\"\n" + + "\t\tfilesAreTargets: true\n"); + + if (install) + file.write("\t\tqbs.install: product.conan." + moduleName + ".install" + (prefix.charAt(0).toUpperCase() + prefix.substring(1)) + "\n" + + "\t\tqbs.installPrefix: \"\"\n" + + "\t\tqbs.installDir: product.conan." + moduleName + "." + prefix + "InstallDir\n" + + "\t\tqbs.installSourceBase: \"" + FileInfo.fromNativeSeparators(pathList[j]) + "\"\n"); + + file.write("\t\tfiles: product.conan." + moduleName + "." + prefix + "FilePatterns\n" + + "\t}\n"); + } + } + + writeGroups(moduleFile, moduleName, "bin", deps[i].bin_paths, true); + writeGroups(moduleFile, moduleName, "lib", deps[i].lib_paths, shared); + writeGroups(moduleFile, moduleName, "res", deps[i].res_paths, true); + writeGroups(moduleFile, moduleName, "include", deps[i].include_paths, shared); + + moduleFile.writeLine("}"); + moduleFile.close(); + } + } + + return [""]; + } +} diff --git a/qbs/modules/buildconfig/buildconfig.qbs b/qbs/modules/buildconfig/buildconfig.qbs index e2657143b..a3ff07fe9 100644 --- a/qbs/modules/buildconfig/buildconfig.qbs +++ b/qbs/modules/buildconfig/buildconfig.qbs @@ -37,6 +37,17 @@ Module { property bool treatWarningsAsErrors: true + readonly property bool useConanPackages : { + if (Utilities.versionCompare(Qt.core.version, "6") < 0) + return false; + + if (qbs.targetOS.contains("unix") && !qbs.targetOS.contains("macos")) + { + return project.enableConan; + } + return true; + } + property string libDirName: "lib" property string appTarget diff --git a/src/app/puzzle/dialogs/dialogpuzzlepreferences.cpp b/src/app/puzzle/dialogs/dialogpuzzlepreferences.cpp index deb8c4a5f..09928fcec 100644 --- a/src/app/puzzle/dialogs/dialogpuzzlepreferences.cpp +++ b/src/app/puzzle/dialogs/dialogpuzzlepreferences.cpp @@ -136,7 +136,7 @@ void DialogPuzzlePreferences::Apply() if (not preferences.isEmpty()) { const QString text = tr("Followed %n option(s) require restart to take effect: %1.", "", - preferences.size()).arg(preferences.join(QStringLiteral(", "))); + static_cast(preferences.size())).arg(preferences.join(QStringLiteral(", "))); QMessageBox::information(this, QCoreApplication::applicationName(), text); } diff --git a/src/app/puzzle/dialogs/dialogsavemanuallayout.cpp b/src/app/puzzle/dialogs/dialogsavemanuallayout.cpp index 31a2fc722..0ec51c6f6 100644 --- a/src/app/puzzle/dialogs/dialogsavemanuallayout.cpp +++ b/src/app/puzzle/dialogs/dialogsavemanuallayout.cpp @@ -45,7 +45,8 @@ #endif //--------------------------------------------------------------------------------------------------------------------- -DialogSaveManualLayout::DialogSaveManualLayout(int count, bool consoleExport, const QString &fileName, QWidget *parent) +DialogSaveManualLayout::DialogSaveManualLayout(vsizetype count, bool consoleExport, const QString &fileName, + QWidget *parent) : VAbstractLayoutDialog(parent), ui(new Ui::DialogSaveManualLayout), m_count(count), diff --git a/src/app/puzzle/dialogs/dialogsavemanuallayout.h b/src/app/puzzle/dialogs/dialogsavemanuallayout.h index 62dcbc99c..116100a4f 100644 --- a/src/app/puzzle/dialogs/dialogsavemanuallayout.h +++ b/src/app/puzzle/dialogs/dialogsavemanuallayout.h @@ -41,7 +41,7 @@ class DialogSaveManualLayout : public VAbstractLayoutDialog Q_OBJECT // NOLINT public: - explicit DialogSaveManualLayout(int count, bool consoleExport, const QString &fileName = QString(), + explicit DialogSaveManualLayout(vsizetype count, bool consoleExport, const QString &fileName = QString(), QWidget *parent = nullptr); ~DialogSaveManualLayout() override; @@ -77,7 +77,7 @@ private: // cppcheck-suppress unknownMacro Q_DISABLE_COPY_MOVE(DialogSaveManualLayout) // NOLINT Ui::DialogSaveManualLayout *ui; - int m_count; + vsizetype m_count; bool m_isInitialized{false}; bool m_scaleConnected{true}; bool m_consoleExport; diff --git a/src/app/puzzle/main.cpp b/src/app/puzzle/main.cpp index 1b5bb9174..570b8e8c3 100644 --- a/src/app/puzzle/main.cpp +++ b/src/app/puzzle/main.cpp @@ -32,7 +32,6 @@ #include "vpapplication.h" #include "../vmisc/def.h" - #if defined(APPIMAGE) && defined(Q_OS_LINUX) #if QT_VERSION < QT_VERSION_CHECK(5, 12, 0) # include "../vmisc/backport/qscopeguard.h" @@ -42,6 +41,10 @@ # include "../vmisc/appimage.h" #endif // defined(APPIMAGE) && defined(Q_OS_LINUX) +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include +#endif + auto main(int argc, char *argv[]) -> int { #if defined(APPIMAGE) && defined(Q_OS_LINUX) @@ -68,6 +71,12 @@ auto main(int argc, char *argv[]) -> int InitHighDpiScaling(argc, argv); #endif //Q_OS_MAC +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); + + auto Terminate = qScopeGuard([](){ XERCES_CPP_NAMESPACE::XMLPlatformUtils::Terminate(); }); +#endif + VPApplication app(argc, argv); app.InitOptions(); diff --git a/src/app/puzzle/scene/vpmaingraphicsview.cpp b/src/app/puzzle/scene/vpmaingraphicsview.cpp index a91f42ac8..fa97bda09 100644 --- a/src/app/puzzle/scene/vpmaingraphicsview.cpp +++ b/src/app/puzzle/scene/vpmaingraphicsview.cpp @@ -66,8 +66,13 @@ QT_WARNING_PUSH QT_WARNING_DISABLE_CLANG("-Wenum-enum-conversion") #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +Q_GLOBAL_STATIC_WITH_ARGS(const QKeySequence, restoreOriginShortcut, // NOLINT + (QKeySequence(Qt::ControlModifier | Qt::Key_Asterisk))) +#else Q_GLOBAL_STATIC_WITH_ARGS(const QKeySequence, restoreOriginShortcut, // NOLINT (QKeySequence(Qt::ControlModifier + Qt::Key_Asterisk))) +#endif QT_WARNING_POP } @@ -200,7 +205,7 @@ void VPMainGraphicsView::dropEvent(QDropEvent *event) event->acceptProposedAction(); piece->ClearTransformations(); - piece->SetPosition(mapToScene(event->pos())); + piece->SetPosition(mapToScene(DropEventPos(event))); piece->SetZValue(1.0); auto *command = new VPUndoMovePieceOnSheet(layout->GetFocusedSheet(), piece); diff --git a/src/app/puzzle/stable.h b/src/app/puzzle/stable.h index 556e99d36..b3216d33f 100644 --- a/src/app/puzzle/stable.h +++ b/src/app/puzzle/stable.h @@ -75,6 +75,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif /*__cplusplus*/ #endif // STABLE_H diff --git a/src/app/puzzle/undocommands/vpundopiecezvaluemove.cpp b/src/app/puzzle/undocommands/vpundopiecezvaluemove.cpp index bd9cea733..ccb91cf07 100644 --- a/src/app/puzzle/undocommands/vpundopiecezvaluemove.cpp +++ b/src/app/puzzle/undocommands/vpundopiecezvaluemove.cpp @@ -41,7 +41,7 @@ auto CorrectedZValues(const QList> &order) -> QHash(order.size()); } for (int i = 0; i < order.size(); ++i) @@ -266,7 +266,7 @@ auto VPUndoPieceZValueMove::LevelStep(const QList &pieces) const -> return 0; } - return 1.0/levels.size(); + return 1.0 / static_cast(levels.size()); } //--------------------------------------------------------------------------------------------------------------------- @@ -509,5 +509,5 @@ auto VPUndoPiecesZValueMove::LevelStep(const QList &pieces) -> qreal return 0; } - return 1.0/levels.size(); + return 1.0 / static_cast(levels.size()); } diff --git a/src/app/puzzle/vpapplication.cpp b/src/app/puzzle/vpapplication.cpp index e6fdb75ae..e3679737b 100644 --- a/src/app/puzzle/vpapplication.cpp +++ b/src/app/puzzle/vpapplication.cpp @@ -620,7 +620,7 @@ void VPApplication::SetPreferencesDialog(const QSharedPointer= 0; --i) + for (vsizetype i = m_mainWindows.count() - 1; i >= 0; --i) { if (m_mainWindows.at(i).isNull()) { diff --git a/src/app/puzzle/vpcommandline.cpp b/src/app/puzzle/vpcommandline.cpp index 040d46463..9cbabe54f 100644 --- a/src/app/puzzle/vpcommandline.cpp +++ b/src/app/puzzle/vpcommandline.cpp @@ -39,7 +39,7 @@ std::shared_ptr VPCommandLine::instance = nullptr; // NOLINT(cppc auto VPCommandLine::IsExportEnabled() const -> bool { const bool result = IsOptionSet(LONG_OPTION_EXPORT_FILE); - int argSize = parser.positionalArguments().size(); + auto argSize = parser.positionalArguments().size(); if (result && argSize != 1) { qCritical() << translate("Puzzle", "Export options can be used with single input file only.") << "/n"; diff --git a/src/app/puzzle/vpmainwindow.cpp b/src/app/puzzle/vpmainwindow.cpp index 44e6d5dbd..b18ada2f6 100644 --- a/src/app/puzzle/vpmainwindow.cpp +++ b/src/app/puzzle/vpmainwindow.cpp @@ -1534,24 +1534,49 @@ void VPMainWindow::InitZoomToolBar() // connect the zoom buttons and shortcuts to the slots QList zoomInShortcuts; zoomInShortcuts.append(QKeySequence(QKeySequence::ZoomIn)); - zoomInShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_Plus + Qt::KeypadModifier)); + zoomInShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(QKeyCombination(Qt::ControlModifier), Qt::Key_Plus | Qt::KeypadModifier)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_Plus + Qt::KeypadModifier)); +#endif ui->actionZoomIn->setShortcuts(zoomInShortcuts); connect(ui->actionZoomIn, &QAction::triggered, m_graphicsView, &VPMainGraphicsView::ZoomIn); QList zoomOutShortcuts; zoomOutShortcuts.append(QKeySequence(QKeySequence::ZoomOut)); - zoomOutShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_Minus + Qt::KeypadModifier)); + zoomOutShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(QKeyCombination(Qt::ControlModifier), Qt::Key_Minus | Qt::KeypadModifier)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_Minus + Qt::KeypadModifier)); +#endif ui->actionZoomOut->setShortcuts(zoomOutShortcuts); connect(ui->actionZoomOut, &QAction::triggered, m_graphicsView, &VPMainGraphicsView::ZoomOut); QList zoomOriginalShortcuts; - zoomOriginalShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_0)); - zoomOriginalShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_0 + Qt::KeypadModifier)); + zoomOriginalShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(Qt::ControlModifier | Qt::Key_0)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_0)); +#endif + zoomOriginalShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(QKeyCombination(Qt::ControlModifier), Qt::Key_0 | Qt::KeypadModifier)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_0 + Qt::KeypadModifier)); +#endif ui->actionZoomOriginal->setShortcuts(zoomOriginalShortcuts); connect(ui->actionZoomOriginal, &QAction::triggered, m_graphicsView, &VPMainGraphicsView::ZoomOriginal); QList zoomFitBestShortcuts; - zoomFitBestShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_Equal)); + zoomFitBestShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(Qt::ControlModifier | Qt::Key_Equal)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_Equal)); +#endif ui->actionZoomFitBest->setShortcuts(zoomFitBestShortcuts); connect(ui->actionZoomFitBest, &QAction::triggered, m_graphicsView, &VPMainGraphicsView::ZoomFitBest); @@ -1592,7 +1617,7 @@ void VPMainWindow::UpdateWindowTitle() } else { - int index = VPApplication::VApp()->MainWindows().indexOf(this); + vsizetype index = VPApplication::VApp()->MainWindows().indexOf(this); if (index != -1) { showName = tr("untitled %1.vlt").arg(index+1); @@ -1647,7 +1672,6 @@ void VPMainWindow::ReadSettings() if (settings->status() == QSettings::NoError) { restoreGeometry(settings->GetGeometry()); - restoreState(settings->GetWindowState()); restoreState(settings->GetToolbarsState(), AppVersion()); // Text under tool buton icon @@ -1673,7 +1697,6 @@ void VPMainWindow::WriteSettings() { VPSettings *settings = VPApplication::VApp()->PuzzleSettings(); settings->SetGeometry(saveGeometry()); - settings->SetWindowState(saveState()); settings->SetToolbarsState(saveState(AppVersion())); settings->SetDockWidgetPropertiesActive(ui->dockWidgetProperties->isEnabled()); @@ -1745,7 +1768,7 @@ void VPMainWindow::CreateWindowMenu(QMenu *menu) VPMainWindow *window = windows.at(i); QString title = QStringLiteral("%1. %2").arg(i+1).arg(window->windowTitle()); - const int index = title.lastIndexOf(QLatin1String("[*]")); + const vsizetype index = title.lastIndexOf(QLatin1String("[*]")); if (index != -1) { window->isWindowModified() ? title.replace(index, 3, QChar('*')) : title.replace(index, 3, QString()); @@ -2915,13 +2938,13 @@ void VPMainWindow::PrintLayoutSheets(QPrinter *printer, const QList firstPageNumber = 0; } - int lastPageNumber = printer->toPage() - 1; + vsizetype lastPageNumber = printer->toPage() - 1; if (lastPageNumber == -1 || lastPageNumber >= sheets.count()) { lastPageNumber = sheets.count() - 1; } - const int numPages = lastPageNumber - firstPageNumber + 1; + const vsizetype numPages = lastPageNumber - firstPageNumber + 1; int copyCount = 1; if (not printer->supportsMultipleCopies()) { @@ -2946,7 +2969,8 @@ void VPMainWindow::PrintLayoutSheets(QPrinter *printer, const QList { for (int j = 0; j < numPages; ++j) { - int index = printer->pageOrder() == QPrinter::FirstPageFirst ? firstPageNumber + j : lastPageNumber - j; + vsizetype index = printer->pageOrder() == QPrinter::FirstPageFirst ? firstPageNumber + j + : lastPageNumber - j; const VPSheetPtr& sheet = sheets.at(index); if (sheet.isNull()) @@ -3013,13 +3037,13 @@ void VPMainWindow::PrintLayoutTiledSheets(QPrinter *printer, const QListtoPage() - 1; + vsizetype lastPageNumber = printer->toPage() - 1; if (lastPageNumber == -1 || lastPageNumber >= pages.count()) { lastPageNumber = pages.count() - 1; } - const int numPages = lastPageNumber - firstPageNumber + 1; + const vsizetype numPages = lastPageNumber - firstPageNumber + 1; int copyCount = 1; if (not printer->supportsMultipleCopies()) { @@ -3036,7 +3060,8 @@ void VPMainWindow::PrintLayoutTiledSheets(QPrinter *printer, const QListpageOrder() == QPrinter::FirstPageFirst ? firstPageNumber + j : lastPageNumber - j; + vsizetype index = printer->pageOrder() == QPrinter::FirstPageFirst ? firstPageNumber + j + : lastPageNumber - j; const VPLayoutPrinterPage &page = pages.at(index); if (not PrintLayoutTiledSheetPage(printer, painter, page, firstPage)) @@ -3287,7 +3312,7 @@ void VPMainWindow::TranslatePieces() } //--------------------------------------------------------------------------------------------------------------------- -void VPMainWindow::TranslatePieceRelatively(const VPPiecePtr &piece, const QRectF &rect, int selectedPiecesCount, +void VPMainWindow::TranslatePieceRelatively(const VPPiecePtr &piece, const QRectF &rect, vsizetype selectedPiecesCount, qreal dx, qreal dy) { if (not piece.isNull()) diff --git a/src/app/puzzle/vpmainwindow.h b/src/app/puzzle/vpmainwindow.h index 993cdc462..b41ad5d79 100644 --- a/src/app/puzzle/vpmainwindow.h +++ b/src/app/puzzle/vpmainwindow.h @@ -506,7 +506,7 @@ private: auto AddLayoutPieces(const QVector &pieces) -> bool; void TranslatePieces(); - void TranslatePieceRelatively(const VPPiecePtr &piece, const QRectF &rect, int selectedPiecesCount, qreal dx, + void TranslatePieceRelatively(const VPPiecePtr &piece, const QRectF &rect, vsizetype selectedPiecesCount, qreal dx, qreal dy); void RotatePieces(); }; diff --git a/src/app/puzzle/vpsettings.cpp b/src/app/puzzle/vpsettings.cpp index 991f2d515..7aa6a2486 100644 --- a/src/app/puzzle/vpsettings.cpp +++ b/src/app/puzzle/vpsettings.cpp @@ -26,6 +26,7 @@ ** *************************************************************************/ #include "vpsettings.h" +#include "../vmisc/compatibility.h" #include @@ -66,14 +67,14 @@ VPSettings::VPSettings(Format format, Scope scope, const QString &organization, QObject *parent) : VCommonSettings(format, scope, organization, application, parent) { - qRegisterMetaTypeStreamOperators("QMarginsF"); + REGISTER_META_TYPE_STREAM_OPERATORS(QMarginsF) } //--------------------------------------------------------------------------------------------------------------------- VPSettings::VPSettings(const QString &fileName, QSettings::Format format, QObject *parent) : VCommonSettings(fileName, format, parent) { - qRegisterMetaTypeStreamOperators("QMarginsF"); + REGISTER_META_TYPE_STREAM_OPERATORS(QMarginsF) } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/puzzle/xml/vplayoutfilewriter.cpp b/src/app/puzzle/xml/vplayoutfilewriter.cpp index 37e4f04ca..3fd969cdd 100644 --- a/src/app/puzzle/xml/vplayoutfilewriter.cpp +++ b/src/app/puzzle/xml/vplayoutfilewriter.cpp @@ -44,7 +44,7 @@ template auto NumberToString(T number) -> QString { const QLocale locale = QLocale::c(); - return locale.toString(number, 'g', 12).remove(locale.groupSeparator()); + return locale.toString(number, 'g', 12).remove(LocaleGroupSeparator(locale)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/puzzle/xml/vplayoutfilewriter.h b/src/app/puzzle/xml/vplayoutfilewriter.h index 65014875f..66bcb889f 100644 --- a/src/app/puzzle/xml/vplayoutfilewriter.h +++ b/src/app/puzzle/xml/vplayoutfilewriter.h @@ -36,8 +36,8 @@ #include #include "../vmisc/literals.h" -#include "../vmisc/defglobal.h" #include "../layout/layoutdef.h" +#include "../qmuparser/qmudef.h" class VPLayout; class VPSheet; @@ -91,7 +91,7 @@ void VPLayoutFileWriter::SetAttribute(const QString &name, const T &value) { // See specification for xs:decimal const QLocale locale = QLocale::c(); - writeAttribute(name, locale.toString(value).remove(locale.groupSeparator())); + writeAttribute(name, locale.toString(value).remove(LocaleGroupSeparator(locale))); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.cpp b/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.cpp index d35c25040..b57a5fda4 100644 --- a/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.cpp +++ b/src/app/tape/dialogs/configpages/tapepreferencesconfigurationpage.cpp @@ -34,6 +34,7 @@ #if QT_VERSION < QT_VERSION_CHECK(5, 7, 0) #include "../vmisc/backport/qoverload.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0) +#include "../qmuparser/qmudef.h" //--------------------------------------------------------------------------------------------------------------------- TapePreferencesConfigurationPage::TapePreferencesConfigurationPage(QWidget *parent) @@ -163,7 +164,7 @@ void TapePreferencesConfigurationPage::changeEvent(QEvent *event) //--------------------------------------------------------------------------------------------------------------------- void TapePreferencesConfigurationPage::RetranslateUi() { - ui->osOptionCheck->setText(tr("With OS options") + QStringLiteral(" (%1)").arg(QLocale().decimalPoint())); + ui->osOptionCheck->setText(tr("With OS options") + QStringLiteral(" (%1)").arg(LocaleDecimalPoint(QLocale()))); { const auto code = qvariant_cast(ui->systemCombo->currentData()); diff --git a/src/app/tape/dialogs/dialogdimensioncustomnames.cpp b/src/app/tape/dialogs/dialogdimensioncustomnames.cpp index bf873c616..72804aead 100644 --- a/src/app/tape/dialogs/dialogdimensioncustomnames.cpp +++ b/src/app/tape/dialogs/dialogdimensioncustomnames.cpp @@ -69,7 +69,7 @@ void DialogDimensionCustomNames::InitTable(const QMaptableWidget->blockSignals(true); ui->tableWidget->clearContents(); - ui->tableWidget->setRowCount(dimensions.size()); + ui->tableWidget->setRowCount(static_cast(dimensions.size())); int row = 0; QMap::const_iterator i = dimensions.constBegin(); diff --git a/src/app/tape/dialogs/dialogdimensionlabels.cpp b/src/app/tape/dialogs/dialogdimensionlabels.cpp index 675930a68..837607d67 100644 --- a/src/app/tape/dialogs/dialogdimensionlabels.cpp +++ b/src/app/tape/dialogs/dialogdimensionlabels.cpp @@ -162,7 +162,7 @@ void DialogDimensionLabels::InitTable() const QVector bases = dimension->ValidBases(); - ui->tableWidget->setRowCount(bases.size()); + ui->tableWidget->setRowCount(static_cast(bases.size())); const DimesionLabels labels = m_labels.value(type); diff --git a/src/app/tape/dialogs/dialogmeasurementscsvcolumns.cpp b/src/app/tape/dialogs/dialogmeasurementscsvcolumns.cpp index f4199f094..3dff6a0de 100644 --- a/src/app/tape/dialogs/dialogmeasurementscsvcolumns.cpp +++ b/src/app/tape/dialogs/dialogmeasurementscsvcolumns.cpp @@ -217,7 +217,7 @@ auto DialogMeasurementsCSVColumns::ColumnMandatory(int column) const -> bool if (m_dimensions.size() > 1) { - mandatory += qMin(m_dimensions.size(), 2); + mandatory += qMin(static_cast(m_dimensions.size()), 2); } return static_cast(column) < mandatory; @@ -315,7 +315,7 @@ auto DialogMeasurementsCSVColumns::MinimumColumns() const -> int if (m_dimensions.size() > 1) { - mandatory += qMin(m_dimensions.size(), 2); + mandatory += qMin(static_cast(m_dimensions.size()), 2); } return mandatory; diff --git a/src/app/tape/dialogs/dialogmeasurementscsvcolumns.h b/src/app/tape/dialogs/dialogmeasurementscsvcolumns.h index 456aeb82f..b4c2dd311 100644 --- a/src/app/tape/dialogs/dialogmeasurementscsvcolumns.h +++ b/src/app/tape/dialogs/dialogmeasurementscsvcolumns.h @@ -34,6 +34,10 @@ class QxtCsvModel; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +class VTextCodec; +#endif + enum class IndividualMeasurementsColumns: qint8 { Name = 0, @@ -74,7 +78,7 @@ public: void SetWithHeader(bool withHeader); void SetSeparator(const QChar &separator); - void SetCodec(QTextCodec *codec); + void SetCodec(VTextCodec *codec); protected: void changeEvent(QEvent* event) override; @@ -91,7 +95,7 @@ private: QString m_fileName; bool m_withHeader{false}; QChar m_separator{','}; - QTextCodec *m_codec{nullptr}; + VTextCodec *m_codec{nullptr}; QVector m_columnsMap{}; MeasurementsType m_type; QList m_dimensions{}; @@ -149,7 +153,7 @@ inline void DialogMeasurementsCSVColumns::SetSeparator(const QChar &separator) } //--------------------------------------------------------------------------------------------------------------------- -inline void DialogMeasurementsCSVColumns::SetCodec(QTextCodec *codec) +inline void DialogMeasurementsCSVColumns::SetCodec(VTextCodec *codec) { m_codec = codec; } diff --git a/src/app/tape/dialogs/dialogrestrictdimension.cpp b/src/app/tape/dialogs/dialogrestrictdimension.cpp index 5ea0bec52..bda648491 100644 --- a/src/app/tape/dialogs/dialogrestrictdimension.cpp +++ b/src/app/tape/dialogs/dialogrestrictdimension.cpp @@ -523,7 +523,7 @@ void DialogRestrictDimension::InitTable() { MeasurementDimension_p dimension = m_dimensions.at(index); const QVector bases = dimension->ValidBases(); - ui->tableWidget->setRowCount(bases.size()); + ui->tableWidget->setRowCount(static_cast(bases.size())); ui->tableWidget->setVerticalHeaderLabels(DimensionLabels(bases, dimension)); } }; @@ -534,7 +534,7 @@ void DialogRestrictDimension::InitTable() { MeasurementDimension_p dimension = m_dimensions.at(index); const QVector bases = dimension->ValidBases(); - ui->tableWidget->setColumnCount(bases.size()); + ui->tableWidget->setColumnCount(static_cast(bases.size())); ui->tableWidget->setHorizontalHeaderLabels(DimensionLabels(bases, dimension)); } }; diff --git a/src/app/tape/dialogs/dialogtapepreferences.cpp b/src/app/tape/dialogs/dialogtapepreferences.cpp index f1350f802..e08a7d3de 100644 --- a/src/app/tape/dialogs/dialogtapepreferences.cpp +++ b/src/app/tape/dialogs/dialogtapepreferences.cpp @@ -132,7 +132,7 @@ void DialogTapePreferences::Apply() if (not preferences.isEmpty()) { const QString text = tr("Followed %n option(s) require restart to take effect: %1.", "", - preferences.size()).arg(preferences.join(QStringLiteral(", "))); + static_cast(preferences.size())).arg(preferences.join(QStringLiteral(", "))); QMessageBox::information(this, QCoreApplication::applicationName(), text); } diff --git a/src/app/tape/main.cpp b/src/app/tape/main.cpp index f5d58306e..564ebf79b 100644 --- a/src/app/tape/main.cpp +++ b/src/app/tape/main.cpp @@ -40,6 +40,10 @@ # include "../vmisc/appimage.h" #endif // defined(APPIMAGE) && defined(Q_OS_LINUX) +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include +#endif + auto main(int argc, char *argv[]) -> int { #if defined(APPIMAGE) && defined(Q_OS_LINUX) @@ -61,6 +65,12 @@ auto main(int argc, char *argv[]) -> int VAbstractApplication::WinAttachConsole(); #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); + + auto Terminate = qScopeGuard([](){ XERCES_CPP_NAMESPACE::XMLPlatformUtils::Terminate(); }); +#endif + #ifndef Q_OS_MAC // supports natively InitHighDpiScaling(argc, argv); #endif //Q_OS_MAC diff --git a/src/app/tape/mapplication.cpp b/src/app/tape/mapplication.cpp index c4769c312..9c8d46821 100644 --- a/src/app/tape/mapplication.cpp +++ b/src/app/tape/mapplication.cpp @@ -743,7 +743,7 @@ void MApplication::NewLocalSocketConnection() void MApplication::Clean() { // cleanup any deleted main windows first - for (int i = m_mainWindows.count() - 1; i >= 0; --i) + for (vsizetype i = m_mainWindows.count() - 1; i >= 0; --i) { if (m_mainWindows.at(i).isNull()) { diff --git a/src/app/tape/stable.h b/src/app/tape/stable.h index 389dadd4b..217b6067c 100644 --- a/src/app/tape/stable.h +++ b/src/app/tape/stable.h @@ -79,6 +79,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif /*__cplusplus*/ #endif // STABLE_H diff --git a/src/app/tape/tape.qbs b/src/app/tape/tape.qbs index 8a2b3e9b2..b53ec97c1 100644 --- a/src/app/tape/tape.qbs +++ b/src/app/tape/tape.qbs @@ -1,9 +1,10 @@ import qbs.FileInfo +import qbs.Utilities VToolApp { Depends { name: "buildconfig" } Depends { name: "ib"; condition: qbs.targetOS.contains("macos") } - Depends { name: "Qt"; submodules: ["widgets", "svg"] } + Depends { name: "Qt"; submodules: ["core", "widgets", "svg"] } Depends { name: "VMiscLib"; } Depends { name: "VPatternDBLib"; } Depends { name: "FervorLib"; } @@ -13,6 +14,7 @@ VToolApp { Depends { name: "VToolsLib"; } Depends { name: "ebr" } Depends { name: "multibundle"; } + Depends { name: "conan.XercesC"; condition: buildconfig.useConanPackages } name: "Tape" buildconfig.appTarget: qbs.targetOS.contains("macos") ? "Tape" : "tape" diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 16c675bb5..197f7f81c 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -59,6 +59,12 @@ #include "../vmisc/dialogs/dialogselectlanguage.h" #include "mapplication.h" // Should be last because of definning qApp +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else +#include +#endif + #if QT_VERSION < QT_VERSION_CHECK(5, 12, 0) #include "../vmisc/backport/qscopeguard.h" #else @@ -71,7 +77,6 @@ #include #include #include -#include #include #include @@ -760,11 +765,11 @@ auto TMainWindow::eventFilter(QObject *object, QEvent *event) -> bool { if (VAbstractApplication::VApp()->Settings()->GetOsSeparator()) { - plainTextEdit->insertPlainText(QLocale().decimalPoint()); + plainTextEdit->insertPlainText(LocaleDecimalPoint(QLocale())); } else { - plainTextEdit->insertPlainText(QLocale::c().decimalPoint()); + plainTextEdit->insertPlainText(LocaleDecimalPoint(QLocale::c())); } return true; } @@ -779,11 +784,11 @@ auto TMainWindow::eventFilter(QObject *object, QEvent *event) -> bool { if (VAbstractApplication::VApp()->Settings()->GetOsSeparator()) { - textEdit->insert(QLocale().decimalPoint()); + textEdit->insert(LocaleDecimalPoint(QLocale())); } else { - textEdit->insert(QLocale::c().decimalPoint()); + textEdit->insert(LocaleDecimalPoint(QLocale::c())); } return true; } @@ -849,7 +854,7 @@ void TMainWindow::ExportToCSVData(const QString &fileName, bool withHeader, int } QString error; - csv.toCSV(fileName, error, withHeader, separator, QTextCodec::codecForMib(mib)); + csv.toCSV(fileName, error, withHeader, separator, VTextCodec::codecForMib(mib)); } //--------------------------------------------------------------------------------------------------------------------- @@ -1102,12 +1107,12 @@ void TMainWindow::ImportDataFromCSV() } columns->SetWithHeader(dialog.IsWithHeader()); columns->SetSeparator(dialog.GetSeparator()); - columns->SetCodec(QTextCodec::codecForMib(dialog.GetSelectedMib())); + columns->SetCodec(VTextCodec::codecForMib(dialog.GetSelectedMib())); if (columns->exec() == QDialog::Accepted) { QxtCsvModel csv(fileName, nullptr, dialog.IsWithHeader(), dialog.GetSeparator(), - QTextCodec::codecForMib(dialog.GetSelectedMib())); + VTextCodec::codecForMib(dialog.GetSelectedMib())); const QVector map = columns->ColumnsMap(); if (m_m->Type() == MeasurementsType::Individual) @@ -1471,7 +1476,7 @@ void TMainWindow::AddKnown() QScopedPointer dialog (new DialogMDataBase(m_m->ListKnown(), this)); if (dialog->exec() == QDialog::Accepted) { - qint32 currentRow; + vsizetype currentRow; const QStringList list = dialog->GetNewNames(); if (ui->tableWidget->currentRow() == -1) @@ -1514,7 +1519,7 @@ void TMainWindow::AddKnown() RefreshData(); m_search->RefreshList(ui->lineEditFind->text()); - ui->tableWidget->selectRow(currentRow); + ui->tableWidget->selectRow(static_cast(currentRow)); ui->actionExportToCSV->setEnabled(true); @@ -1596,7 +1601,7 @@ void TMainWindow::ImportFromPattern() measurements = FilterMeasurements(measurements, m_m->ListAll()); - qint32 currentRow; + vsizetype currentRow; if (ui->tableWidget->currentRow() == -1) { @@ -1622,7 +1627,7 @@ void TMainWindow::ImportFromPattern() m_search->RefreshList(ui->lineEditFind->text()); - ui->tableWidget->selectRow(currentRow); + ui->tableWidget->selectRow(static_cast(currentRow)); MeasurementsWereSaved(false); } @@ -3020,7 +3025,7 @@ void TMainWindow::ShowHeaderUnits(QTableWidget *table, int column, const QString SCASSERT(table != nullptr) QString header = table->horizontalHeaderItem(column)->text(); - const int index = header.indexOf(QLatin1String("(")); + const auto index = header.indexOf(QLatin1String("(")); if (index != -1) { header.remove(index-1, 100); @@ -3187,7 +3192,7 @@ void TMainWindow::RefreshTable(bool freshCall) const QMap > orderedTable = OrderedMeasurments(); qint32 currentRow = -1; - ui->tableWidget->setRowCount ( orderedTable.size() ); + ui->tableWidget->setRowCount ( static_cast(orderedTable.size()) ); for (auto iMap = orderedTable.constBegin(); iMap != orderedTable.constEnd(); ++iMap) { const QSharedPointer &meash = iMap.value(); @@ -3432,7 +3437,7 @@ void TMainWindow::UpdateWindowTitle() } else { - int index = MApplication::VApp()->MainWindows().indexOf(this); + auto index = MApplication::VApp()->MainWindows().indexOf(this); if (index != -1) { showName = tr("untitled %1").arg(index+1); @@ -3483,7 +3488,7 @@ void TMainWindow::UpdateWindowTitle() auto TMainWindow::ClearCustomName(const QString &name) -> QString { QString clear = name; - const int index = clear.indexOf(CustomMSign); + const auto index = clear.indexOf(CustomMSign); if (index == 0) { clear.remove(0, 1); @@ -3606,7 +3611,6 @@ void TMainWindow::ReadSettings() if (settings->status() == QSettings::NoError) { restoreGeometry(settings->GetGeometry()); - restoreState(settings->GetWindowState()); restoreState(settings->GetToolbarsState(), AppVersion()); // Text under tool buton icon @@ -3626,7 +3630,6 @@ void TMainWindow::WriteSettings() { VTapeSettings *settings = MApplication::VApp()->TapeSettings(); settings->SetGeometry(saveGeometry()); - settings->SetWindowState(saveState()); settings->SetToolbarsState(saveState(AppVersion())); settings->SetTapeSearchOptionMatchCase(m_search->IsMatchCase()); @@ -3798,7 +3801,7 @@ void TMainWindow::CreateWindowMenu(QMenu *menu) TMainWindow *window = windows.at(i); QString title = QStringLiteral("%1. %2").arg(i+1).arg(window->windowTitle()); - const int index = title.lastIndexOf(QLatin1String("[*]")); + const auto index = title.lastIndexOf(QLatin1String("[*]")); if (index != -1) { window->isWindowModified() ? title.replace(index, 3, QChar('*')) : title.replace(index, 3, QString()); @@ -4093,11 +4096,11 @@ void TMainWindow::ImportMultisizeMeasurements(const QxtCsvModel &csv, const QVec } //--------------------------------------------------------------------------------------------------------------------- -auto TMainWindow::ImportMultisizeMeasurement( - const QxtCsvModel &csv, int i, const QVector &map,int dimensionsCount, - QSet &importedNames) -> TMainWindow::MultisizeMeasurement +auto TMainWindow::ImportMultisizeMeasurement(const QxtCsvModel &csv, int i, const QVector &map, + vsizetype dimensionsCount, + QSet &importedNames) -> TMainWindow::MultisizeMeasurement { - const int nameColumn = map.at(static_cast(MultisizeMeasurementsColumns::Name)); + const auto nameColumn = map.at(static_cast(MultisizeMeasurementsColumns::Name)); const QString name = csv.text(i, nameColumn).simplified(); if (name.isEmpty()) { @@ -4110,18 +4113,18 @@ auto TMainWindow::ImportMultisizeMeasurement( importedNames.insert(mName); measurement.name = mName; - const int baseValueColumn = map.at(static_cast(MultisizeMeasurementsColumns::BaseValue)); + const auto baseValueColumn = map.at(static_cast(MultisizeMeasurementsColumns::BaseValue)); measurement.base = ConverToDouble(csv.text(i, baseValueColumn), tr("Cannot convert base value to double in column 2.")); - const int shiftAColumn = map.at(static_cast(MultisizeMeasurementsColumns::ShiftA)); + const auto shiftAColumn = map.at(static_cast(MultisizeMeasurementsColumns::ShiftA)); measurement.shiftA = ConverToDouble(csv.text(i, shiftAColumn), tr("Cannot convert shift value to double in column %1.") .arg(shiftAColumn)); if (dimensionsCount > 1) { - const int shiftBColumn = map.at(static_cast(MultisizeMeasurementsColumns::ShiftB)); + const auto shiftBColumn = map.at(static_cast(MultisizeMeasurementsColumns::ShiftB)); measurement.shiftB = ConverToDouble(csv.text(i, shiftBColumn), tr("Cannot convert shift value to double in column %1.") .arg(shiftBColumn)); @@ -4129,7 +4132,7 @@ auto TMainWindow::ImportMultisizeMeasurement( if (dimensionsCount > 2) { - const int shiftCColumn = map.at(static_cast(MultisizeMeasurementsColumns::ShiftC)); + const auto shiftCColumn = map.at(static_cast(MultisizeMeasurementsColumns::ShiftC)); measurement.shiftC = ConverToDouble(csv.text(i, shiftCColumn), tr("Cannot convert shift value to double in column %1.") .arg(shiftCColumn)); @@ -4139,7 +4142,7 @@ auto TMainWindow::ImportMultisizeMeasurement( const bool custom = name.startsWith(CustomMSign); if (columns > 4 && custom) { - const int fullNameColumn = map.at(static_cast(MultisizeMeasurementsColumns::FullName)); + const auto fullNameColumn = map.at(static_cast(MultisizeMeasurementsColumns::FullName)); if (fullNameColumn >= 0) { measurement.fullName = csv.text(i, fullNameColumn).simplified(); @@ -4148,7 +4151,7 @@ auto TMainWindow::ImportMultisizeMeasurement( if (columns > 5 && custom) { - const int descriptionColumn = map.at(static_cast(MultisizeMeasurementsColumns::Description)); + const auto descriptionColumn = map.at(static_cast(MultisizeMeasurementsColumns::Description)); if (descriptionColumn >= 0) { measurement.description = csv.text(i, descriptionColumn).simplified(); diff --git a/src/app/tape/tmainwindow.h b/src/app/tape/tmainwindow.h index daf856c48..1fc7887ec 100644 --- a/src/app/tape/tmainwindow.h +++ b/src/app/tape/tmainwindow.h @@ -266,7 +266,7 @@ private: void ImportIndividualMeasurements(const QxtCsvModel &csv, const QVector &map, bool withHeader); void ImportMultisizeMeasurements(const QxtCsvModel &csv, const QVector &map, bool withHeader); auto ImportMultisizeMeasurement(const QxtCsvModel &csv, int i, const QVector &map, - int dimensionsCount, QSet &importedNames) -> MultisizeMeasurement; + vsizetype dimensionsCount, QSet &importedNames) -> MultisizeMeasurement; void SetCurrentPatternUnit(); diff --git a/src/app/tape/vtapesettings.cpp b/src/app/tape/vtapesettings.cpp index 3daa0025a..2a0f96391 100644 --- a/src/app/tape/vtapesettings.cpp +++ b/src/app/tape/vtapesettings.cpp @@ -28,9 +28,6 @@ #include "vtapesettings.h" -#include -#include -#include #include #include diff --git a/src/app/valentina/core/vapplication.cpp b/src/app/valentina/core/vapplication.cpp index ed5f50178..6de88b815 100644 --- a/src/app/valentina/core/vapplication.cpp +++ b/src/app/valentina/core/vapplication.cpp @@ -49,10 +49,13 @@ #include #include #include -#include #include #include +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +#include +#endif + #if !defined(BUILD_REVISION) && defined(QBS_BUILD) #include #define BUILD_REVISION VCS_REPO_STATE_REVISION @@ -265,11 +268,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con vStdOut().flush(); vStdErr().flush(); -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - (*VApplication::VApp()->LogFile()) << debugdate << endl; -#else (*VApplication::VApp()->LogFile()) << debugdate << Qt::endl; -#endif } if (isGuiThread) diff --git a/src/app/valentina/core/vcmdexport.cpp b/src/app/valentina/core/vcmdexport.cpp index 00285e150..26044e89c 100644 --- a/src/app/valentina/core/vcmdexport.cpp +++ b/src/app/valentina/core/vcmdexport.cpp @@ -36,7 +36,12 @@ #include "../vmisc/dialogs/dialogexporttocsv.h" #include "../vlayout/vlayoutgenerator.h" #include + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else #include +#endif VCommandLinePtr VCommandLine::instance = nullptr; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables) @@ -736,7 +741,7 @@ void VCommandLine::InitCommandLineOptions() "Qt. Default value depend from system. On Windows, the codec will be based on a system locale. On Unix " "systems, the codec will might fall back to using the iconv library if no builtin codec for the locale can be " "found. Valid values for this installation:") + DialogExportToCSV::MakeHelpCodecsList(), - translate("VCommandLine", "Codec name"), QString(QTextCodec::codecForLocale()->name())}, + translate("VCommandLine", "Codec name"), QString(VTextCodec::codecForLocale()->name())}, {LONG_OPTION_CSVSEPARATOR, translate("VCommandLine", "Specify csv separator character. Default value is '%1'. Valid characters:") .arg(VCommonSettings::GetDefCSVSeparator()) + DialogExportToCSV::MakeHelpSeparatorList(), diff --git a/src/app/valentina/core/vformulaproperty.cpp b/src/app/valentina/core/vformulaproperty.cpp index 9e64d7549..7a4e4b666 100644 --- a/src/app/valentina/core/vformulaproperty.cpp +++ b/src/app/valentina/core/vformulaproperty.cpp @@ -37,7 +37,12 @@ //--------------------------------------------------------------------------------------------------------------------- VFormulaProperty::VFormulaProperty(const QString &name) - : VProperty(name, static_cast(VFormula::FormulaTypeId())) + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + static_cast(VFormula::FormulaTypeId())) +#else + static_cast(VFormula::FormulaTypeId())) +#endif { d_ptr->type = VPE::Property::Complex; @@ -183,11 +188,19 @@ void VFormulaProperty::SetFormula(const VFormula &formula) QVariant value; value.setValue(formula); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + value.convert(QMetaType(VFormula::FormulaTypeId())); +#else value.convert(VFormula::FormulaTypeId()); +#endif VProperty::d_ptr->VariantValue = value; QVariant tmpFormula(formula.GetFormula()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + tmpFormula.convert(QMetaType(QMetaType::QString)); +#else tmpFormula.convert(QVariant::String); +#endif VProperty::d_ptr->Children.at(0)->setValue(tmpFormula); diff --git a/src/app/valentina/core/vtooloptionspropertybrowser.cpp b/src/app/valentina/core/vtooloptionspropertybrowser.cpp index 1c85657b1..6960978e3 100644 --- a/src/app/valentina/core/vtooloptionspropertybrowser.cpp +++ b/src/app/valentina/core/vtooloptionspropertybrowser.cpp @@ -737,7 +737,7 @@ void VToolOptionsPropertyBrowser::AddPropertyLineType(Tool *i, const QString &pr { auto *lineTypeProperty = new VPE::VLineTypeProperty(propertyName); lineTypeProperty->setStyles(styles); - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(styles, i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(styles, i->getLineType()); if (index == -1) { qWarning()<<"Can't find line style" << i->getLineType()<<"in list"; @@ -753,7 +753,7 @@ void VToolOptionsPropertyBrowser::AddPropertyCurvePenStyle(Tool *i, const QStrin { auto *penStyleProperty = new VPE::VLineTypeProperty(propertyName); penStyleProperty->setStyles(styles); - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(styles, i->GetPenStyle()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(styles, i->GetPenStyle()); if (index == -1) { qWarning()<<"Can't find pen style" << i->getLineType()<<"in list"; @@ -769,7 +769,7 @@ void VToolOptionsPropertyBrowser::AddPropertyLineColor(Tool *i, const QString &p { auto *lineColorProperty = new VPE::VLineColorProperty(propertyName); lineColorProperty->setColors(colors); - const qint32 index = VPE::VLineColorProperty::IndexOfColor(colors, i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(colors, i->GetLineColor()); if (index == -1) { qWarning()<<"Can't find line style" << i->GetLineColor()<<"in list"; @@ -3348,12 +3348,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolEndLine() m_idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); m_idToProperty[AttrTypeLine]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrLineColor]->setValue(index); } @@ -3379,12 +3379,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolAlongLine() m_idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); m_idToProperty[AttrTypeLine]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrLineColor]->setValue(index); } @@ -3423,12 +3423,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolArc() m_idToProperty[AttrAngle2]->setValue(valueSecondAngle); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); m_idToProperty[AttrPenStyle]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrColor]->setValue(index); } @@ -3465,12 +3465,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolArcWithLength() m_idToProperty[AttrLength]->setValue(valueLength); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); m_idToProperty[AttrPenStyle]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrColor]->setValue(index); } @@ -3499,12 +3499,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolBisector() m_idToProperty[AttrLength]->setValue(valueFormula); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); m_idToProperty[AttrTypeLine]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrLineColor]->setValue(index); } @@ -3625,12 +3625,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolHeight() m_idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); m_idToProperty[AttrTypeLine]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrLineColor]->setValue(index); } @@ -3655,12 +3655,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolLine() auto *i = qgraphicsitem_cast(m_currentItem); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); m_idToProperty[AttrTypeLine]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrLineColor]->setValue(index); } @@ -3715,12 +3715,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolNormal() m_idToProperty[AttrAngle]->setValue( i->GetAngle()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); m_idToProperty[AttrTypeLine]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrLineColor]->setValue(index); } @@ -3899,12 +3899,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolShoulderPoint() m_idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); m_idToProperty[AttrTypeLine]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrLineColor]->setValue(index); } @@ -3968,7 +3968,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolSpline() m_idToProperty[AttrLength2]->setValue(length2); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); m_idToProperty[AttrPenStyle]->setValue(index); } @@ -3992,7 +3992,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolCubicBezier() m_idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); m_idToProperty[AttrPenStyle]->setValue(index); } @@ -4032,7 +4032,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolSplinePath() m_idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); m_idToProperty[AttrPenStyle]->setValue(index); } @@ -4056,7 +4056,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolCubicBezierPath() m_idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); m_idToProperty[AttrPenStyle]->setValue(index); } @@ -4105,12 +4105,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolLineIntersectAxis() m_idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); m_idToProperty[AttrTypeLine]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrLineColor]->setValue(index); } @@ -4140,12 +4140,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolCurveIntersectAxis() m_idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); + const auto index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); m_idToProperty[AttrTypeLine]->setValue(index); } { - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrLineColor]->setValue(index); } @@ -4264,7 +4264,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolEllipticalArc() valueFormulaRotationAngle.setValue(i->GetFormulaRotationAngle()); m_idToProperty[AttrRotationAngle]->setValue(valueFormulaRotationAngle); - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + const auto index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); m_idToProperty[AttrColor]->setValue(index); QVariant valueCenterPoint; diff --git a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp index f8fb7a85c..5e5f1bd74 100644 --- a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp +++ b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp @@ -35,6 +35,7 @@ #if QT_VERSION < QT_VERSION_CHECK(5, 7, 0) #include "../vmisc/backport/qoverload.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0) +#include "../qmuparser/qmudef.h" #include #include @@ -281,7 +282,7 @@ void PreferencesConfigurationPage::InitUnits() //--------------------------------------------------------------------------------------------------------------------- void PreferencesConfigurationPage::RetranslateUi() { - ui->osOptionCheck->setText(tr("With OS options") + QStringLiteral(" (%1)").arg(QLocale().decimalPoint())); + ui->osOptionCheck->setText(tr("With OS options") + QStringLiteral(" (%1)").arg(LocaleDecimalPoint(QLocale()))); { ui->unitCombo->blockSignals(true); diff --git a/src/app/valentina/dialogs/dialogfinalmeasurements.cpp b/src/app/valentina/dialogs/dialogfinalmeasurements.cpp index adcc8a596..59fb81d9a 100644 --- a/src/app/valentina/dialogs/dialogfinalmeasurements.cpp +++ b/src/app/valentina/dialogs/dialogfinalmeasurements.cpp @@ -147,11 +147,11 @@ auto DialogFinalMeasurements::eventFilter(QObject *object, QEvent *event) -> boo { if (VAbstractApplication::VApp()->Settings()->GetOsSeparator()) { - textEdit->insert(QLocale().decimalPoint()); + textEdit->insert(LocaleDecimalPoint(QLocale())); } else { - textEdit->insert(QLocale::c().decimalPoint()); + textEdit->insert(LocaleDecimalPoint(QLocale::c())); } return true; } @@ -483,7 +483,7 @@ void DialogFinalMeasurements::FillFinalMeasurements(bool freshCall) ui->tableWidget->blockSignals(true); ui->tableWidget->clearContents(); - ui->tableWidget->setRowCount(m_measurements.size()); + ui->tableWidget->setRowCount(static_cast(m_measurements.size())); for (int i=0; i < m_measurements.size(); ++i) { const VFinalMeasurement &m = m_measurements.at(i); diff --git a/src/app/valentina/dialogs/dialoghistory.cpp b/src/app/valentina/dialogs/dialoghistory.cpp index 7fcf2e877..8e70caa5f 100644 --- a/src/app/valentina/dialogs/dialoghistory.cpp +++ b/src/app/valentina/dialogs/dialoghistory.cpp @@ -177,7 +177,7 @@ void DialogHistory::FillTable() QVector history = m_doc->getLocalHistory(); qint32 currentRow = -1; qint32 count = 0; - ui->tableWidget->setRowCount(history.size());//Make row count max possible number + ui->tableWidget->setRowCount(static_cast(history.size()));//Make row count max possible number std::function CreateRecord = [this](const VToolRecord &tool) { diff --git a/src/app/valentina/dialogs/dialogincrements.cpp b/src/app/valentina/dialogs/dialogincrements.cpp index d23391b85..2a453ef9b 100644 --- a/src/app/valentina/dialogs/dialogincrements.cpp +++ b/src/app/valentina/dialogs/dialogincrements.cpp @@ -203,7 +203,7 @@ void DialogIncrements::FillTable(const QMap &varTable, QTableWidget i.next(); qreal length = *i.value()->GetValue(); currentRow++; - table->setRowCount ( varTable.size() ); + table->setRowCount ( static_cast(varTable.size()) ); auto *item = new QTableWidgetItem(i.key()); item->setTextAlignment(Qt::AlignLeft); @@ -349,7 +349,7 @@ auto DialogIncrements::GetCustomName() const -> QString auto DialogIncrements::ClearIncrementName(const QString &name) -> QString { QString clear = name; - const int index = clear.indexOf(CustomIncrSign); + const auto index = clear.indexOf(CustomIncrSign); if (index == 0) { clear.remove(0, 1); @@ -1315,7 +1315,7 @@ void DialogIncrements::FillIncrementsTable(QTableWidget *table, qint32 currentRow = -1; QMapIterator iMap(map); - table->setRowCount ( map.size() ); + table->setRowCount ( static_cast(map.size()) ); while (iMap.hasNext()) { iMap.next(); @@ -1933,11 +1933,11 @@ auto DialogIncrements::eventFilter(QObject *object, QEvent *event) -> bool { if (VAbstractApplication::VApp()->Settings()->GetOsSeparator()) { - textEdit->insert(QLocale().decimalPoint()); + textEdit->insert(LocaleDecimalPoint(QLocale())); } else { - textEdit->insert(QLocale::c().decimalPoint()); + textEdit->insert(LocaleDecimalPoint(QLocale::c())); } return true; } diff --git a/src/app/valentina/dialogs/dialogpreferences.cpp b/src/app/valentina/dialogs/dialogpreferences.cpp index ad5640120..fd79d9661 100644 --- a/src/app/valentina/dialogs/dialogpreferences.cpp +++ b/src/app/valentina/dialogs/dialogpreferences.cpp @@ -148,7 +148,7 @@ void DialogPreferences::Apply() if (not preferences.isEmpty()) { const QString text = tr("Followed %n option(s) require restart to take effect: %1.", "", - preferences.size()).arg(preferences.join(QStringLiteral(", "))); + static_cast(preferences.size())).arg(preferences.join(QStringLiteral(", "))); QMessageBox::information(this, QCoreApplication::applicationName(), text); } diff --git a/src/app/valentina/dialogs/vwidgetbackgroundimages.cpp b/src/app/valentina/dialogs/vwidgetbackgroundimages.cpp index 1432a0ec9..7622c89bf 100644 --- a/src/app/valentina/dialogs/vwidgetbackgroundimages.cpp +++ b/src/app/valentina/dialogs/vwidgetbackgroundimages.cpp @@ -732,7 +732,7 @@ void VWidgetBackgroundImages::FillTable(const QVector & ui->tableWidget->clear(); ui->tableWidget->setColumnCount(3); - ui->tableWidget->setRowCount(images.size()); + ui->tableWidget->setRowCount(static_cast(images.size())); qint32 currentRow = -1; auto ReadOnly = [](QTableWidgetItem *item) diff --git a/src/app/valentina/dialogs/vwidgetdetails.cpp b/src/app/valentina/dialogs/vwidgetdetails.cpp index e472eba11..0946d23e0 100644 --- a/src/app/valentina/dialogs/vwidgetdetails.cpp +++ b/src/app/valentina/dialogs/vwidgetdetails.cpp @@ -173,7 +173,7 @@ void VWidgetDetails::FillTable(const QHash *details) ui->tableWidget->clearContents(); ui->tableWidget->setColumnCount(2); - ui->tableWidget->setRowCount(details->size()); + ui->tableWidget->setRowCount(static_cast(details->size())); qint32 currentRow = -1; auto i = details->constBegin(); while (i != details->constEnd()) diff --git a/src/app/valentina/dialogs/vwidgetgroups.cpp b/src/app/valentina/dialogs/vwidgetgroups.cpp index 6354eb2ce..7fcef6168 100644 --- a/src/app/valentina/dialogs/vwidgetgroups.cpp +++ b/src/app/valentina/dialogs/vwidgetgroups.cpp @@ -338,7 +338,7 @@ void VWidgetGroups::FillTable(QMap groups) ui->tableWidget->clear(); ui->tableWidget->setColumnCount(2); - ui->tableWidget->setRowCount(groups.size()); + ui->tableWidget->setRowCount(static_cast(groups.size())); qint32 currentRow = -1; auto i = groups.constBegin(); while (i != groups.constEnd()) diff --git a/src/app/valentina/main.cpp b/src/app/valentina/main.cpp index 761bf9ba5..89aa3cd35 100644 --- a/src/app/valentina/main.cpp +++ b/src/app/valentina/main.cpp @@ -43,6 +43,10 @@ # include "../vmisc/appimage.h" #endif // defined(APPIMAGE) && defined(Q_OS_LINUX) +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include +#endif + //--------------------------------------------------------------------------------------------------------------------- auto main(int argc, char *argv[]) -> int @@ -69,14 +73,20 @@ auto main(int argc, char *argv[]) -> int #endif // Need to internally move a node inside a piece main path - qRegisterMetaTypeStreamOperators("VPieceNode"); + REGISTER_META_TYPE_STREAM_OPERATORS(VPieceNode); // Need to internally move a node inside a custom seam allowance path - qRegisterMetaTypeStreamOperators("CustomSARecord"); + REGISTER_META_TYPE_STREAM_OPERATORS(CustomSARecord); #ifndef Q_OS_MAC // supports natively InitHighDpiScaling(argc, argv); #endif //Q_OS_MAC +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); + + auto Terminate = qScopeGuard([](){ XERCES_CPP_NAMESPACE::XMLPlatformUtils::Terminate(); }); +#endif + VApplication app(argc, argv); app.InitOptions(); diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 8d6203cf5..7a734f2c7 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -49,13 +49,20 @@ #include "../ifc/xml/vvitconverter.h" #include "../vwidgets/vwidgetpopup.h" #include "../vwidgets/vmaingraphicsscene.h" - #include "../vtools/undocommands/undogroup.h" #include "../vformat/vpatternrecipe.h" #include "../vlayout/dialogs/watermarkwindow.h" + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else +#include +#endif + #if QT_VERSION < QT_VERSION_CHECK(5, 7, 0) #include "../vmisc/backport/qoverload.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0) + #include "../vlayout/vlayoutexporter.h" #include "../vwidgets/vgraphicssimpletextitem.h" #include "../vlayout/dialogs/dialoglayoutscale.h" @@ -183,20 +190,22 @@ #include #include #include + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include +#endif + #include #include #include #include #include #include -#include #include #include #include #include #include -#include #include #include #include @@ -1919,7 +1928,7 @@ void MainWindow::ExportToCSVData(const QString &fileName, bool withHeader, int m SavePreviewCalculation(true); QString error; - csv.toCSV(fileName, error, withHeader, separator, QTextCodec::codecForMib(mib)); + csv.toCSV(fileName, error, withHeader, separator, VTextCodec::codecForMib(mib)); } //--------------------------------------------------------------------------------------------------------------------- @@ -2693,7 +2702,7 @@ auto MainWindow::FullParsePattern() -> bool { if (VAbstractValApplication::VApp()->getOpeningPattern()) { - futureTestUniqueId = QtConcurrent::run(static_cast(doc), &VDomDocument::TestUniqueId); // clazy:exclude=unneeded-cast + futureTestUniqueId = QtConcurrent::run([this](){doc->TestUniqueId();}); } SetEnabledGUI(true); @@ -2898,36 +2907,71 @@ void MainWindow::ToolBarTools() QList zoomInShortcuts; zoomInShortcuts.append(QKeySequence(QKeySequence::ZoomIn)); - zoomInShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_Plus + Qt::KeypadModifier)); + zoomInShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(QKeyCombination(Qt::ControlModifier), Qt::Key_Plus | Qt::KeypadModifier)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_Plus + Qt::KeypadModifier)); +#endif ui->actionZoomIn->setShortcuts(zoomInShortcuts); connect(ui->actionZoomIn, &QAction::triggered, ui->view, &VMainGraphicsView::ZoomIn); QList zoomOutShortcuts; zoomOutShortcuts.append(QKeySequence(QKeySequence::ZoomOut)); - zoomOutShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_Minus + Qt::KeypadModifier)); + zoomOutShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(QKeyCombination(Qt::ControlModifier), Qt::Key_Minus | Qt::KeypadModifier)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_Minus + Qt::KeypadModifier)); +#endif ui->actionZoomOut->setShortcuts(zoomOutShortcuts); connect(ui->actionZoomOut, &QAction::triggered, ui->view, &VMainGraphicsView::ZoomOut); QList zoomOriginalShortcuts; - zoomOriginalShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_0)); - zoomOriginalShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_0 + Qt::KeypadModifier)); + zoomOriginalShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(Qt::ControlModifier | Qt::Key_0)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_0)); +#endif + zoomOriginalShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(QKeyCombination(Qt::ControlModifier), Qt::Key_0 | Qt::KeypadModifier)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_0 + Qt::KeypadModifier)); +#endif ui->actionZoomOriginal->setShortcuts(zoomOriginalShortcuts); connect(ui->actionZoomOriginal, &QAction::triggered, ui->view, &VMainGraphicsView::ZoomOriginal); QList zoomFitBestShortcuts; - zoomFitBestShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_Equal)); + zoomFitBestShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(Qt::ControlModifier | Qt::Key_Equal)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_Equal)); +#endif ui->actionZoomFitBest->setShortcuts(zoomFitBestShortcuts); connect(ui->actionZoomFitBest, &QAction::triggered, ui->view, &VMainGraphicsView::ZoomFitBest); QList zoomFitBestCurrentShortcuts; - zoomFitBestCurrentShortcuts.append(QKeySequence(Qt::ControlModifier + Qt::Key_M)); + zoomFitBestCurrentShortcuts.append( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(Qt::ControlModifier | Qt::Key_M)); +#else + QKeySequence(Qt::ControlModifier + Qt::Key_M)); +#endif ui->actionZoomFitBestCurrent->setShortcuts(zoomFitBestCurrentShortcuts); connect(ui->actionZoomFitBestCurrent, &QAction::triggered, this, &MainWindow::ZoomFitBestCurrent); connect(ui->actionPreviousPatternPiece, &QAction::triggered, this, &MainWindow::PreviousPatternPiece); connect(ui->actionNextPatternPiece, &QAction::triggered, this, &MainWindow::NextPatternPiece); - ui->actionIncreaseLabelFont->setShortcut(QKeySequence(Qt::ShiftModifier + Qt::Key_Plus)); + ui->actionIncreaseLabelFont->setShortcut( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(Qt::ShiftModifier | Qt::Key_Plus)); +#else + QKeySequence(Qt::ShiftModifier + Qt::Key_Plus)); +#endif connect(ui->actionIncreaseLabelFont, &QAction::triggered, this, [this]() { VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings(); @@ -2943,7 +2987,12 @@ void MainWindow::ToolBarTools() } }); - ui->actionDecreaseLabelFont->setShortcut(QKeySequence(Qt::ShiftModifier + Qt::Key_Minus)); + ui->actionDecreaseLabelFont->setShortcut( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(Qt::ShiftModifier | Qt::Key_Minus)); +#else + QKeySequence(Qt::ShiftModifier + Qt::Key_Minus)); +#endif connect(ui->actionDecreaseLabelFont, &QAction::triggered, this, [this]() { VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings(); @@ -2959,7 +3008,12 @@ void MainWindow::ToolBarTools() } }); - ui->actionOriginalLabelFont->setShortcut(QKeySequence(Qt::ShiftModifier + Qt::Key_0)); + ui->actionOriginalLabelFont->setShortcut( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(Qt::ShiftModifier | Qt::Key_0)); +#else + QKeySequence(Qt::ShiftModifier + Qt::Key_0)); +#endif connect(ui->actionOriginalLabelFont, &QAction::triggered, this, [this]() { VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings(); @@ -2975,7 +3029,12 @@ void MainWindow::ToolBarTools() } }); - ui->actionHideLabels->setShortcut(QKeySequence(Qt::AltModifier + Qt::Key_L)); + ui->actionHideLabels->setShortcut( +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QKeySequence(Qt::AltModifier | Qt::Key_L)); +#else + QKeySequence(Qt::AltModifier + Qt::Key_L)); +#endif ui->actionHideLabels->setChecked(VAbstractValApplication::VApp()->ValentinaSettings()->GetHideLabels()); connect(ui->actionHideLabels, &QAction::triggered, this, [this](bool checked) { @@ -5145,7 +5204,6 @@ void MainWindow::ReadSettings() if (settings->status() == QSettings::NoError) { restoreGeometry(settings->GetGeometry()); - restoreState(settings->GetWindowState()); restoreState(settings->GetToolbarsState(), AppVersion()); m_groupsActive = settings->IsDockWidgetGroupsActive(); @@ -5190,7 +5248,6 @@ void MainWindow::WriteSettings() VValentinaSettings *settings = VAbstractValApplication::VApp()->ValentinaSettings(); settings->SetGeometry(saveGeometry()); - settings->SetWindowState(saveState()); settings->SetToolbarsState(saveState(AppVersion())); settings->SetDockWidgetGroupsActive(ui->dockWidgetGroups->isVisible()); @@ -6203,7 +6260,8 @@ void MainWindow::ExportLayoutAs() try { m_dialogSaveLayout = QSharedPointer( - new DialogSaveLayout(m_layoutSettings->LayoutScenes().size(), Draw::Layout, FileName(), this)); + new DialogSaveLayout(static_cast(m_layoutSettings->LayoutScenes().size()), Draw::Layout, FileName(), + this)); if (m_dialogSaveLayout->exec() == QDialog::Rejected) { @@ -6616,8 +6674,8 @@ auto MainWindow::DoExport(const VCommandLinePtr &expParams) -> bool try { m_dialogSaveLayout = QSharedPointer( - new DialogSaveLayout(m_layoutSettings->LayoutScenes().size(), - Draw::Layout, expParams->OptBaseName(), this)); + new DialogSaveLayout(static_cast(m_layoutSettings->LayoutScenes().size()), + Draw::Layout, expParams->OptBaseName(), this)); m_dialogSaveLayout->SetDestinationPath(expParams->OptDestinationPath()); m_dialogSaveLayout->SelectFormat(static_cast(expParams->OptExportType())); m_dialogSaveLayout->SetBinaryDXFFormat(expParams->IsBinaryDXF()); @@ -6679,10 +6737,10 @@ auto MainWindow::DoFMExport(const VCommandLinePtr &expParams) -> bool } const QString codecName = expParams->OptCSVCodecName(); - int mib = QTextCodec::codecForLocale()->mibEnum(); + int mib = VTextCodec::codecForLocale()->mibEnum(); if (not codecName.isEmpty()) { - if (QTextCodec *codec = QTextCodec::codecForName(codecName.toLatin1())) + if (VTextCodec *codec = VTextCodec::codecForName(codecName.toLatin1())) { mib = codec->mibEnum(); } diff --git a/src/app/valentina/mainwindowsnogui.cpp b/src/app/valentina/mainwindowsnogui.cpp index 403566b4c..64096015f 100644 --- a/src/app/valentina/mainwindowsnogui.cpp +++ b/src/app/valentina/mainwindowsnogui.cpp @@ -48,6 +48,12 @@ #include "../vmisc/vvalentinasettings.h" #include "../vdxf/libdxfrw/drw_base.h" +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else +#include +#endif + #include #include #include @@ -249,7 +255,7 @@ bool MainWindowsNoGUI::GenerateLayout(VLayoutGenerator& lGenerator) int rotatate = 1; lGenerator.SetShift(-1); // Trigger first shift calulation lGenerator.SetRotate(false); - int papersCount = INT_MAX; + vsizetype papersCount = INT_MAX; qreal efficiency = 0; bool hasResult = false; @@ -913,7 +919,7 @@ QVector MainWindowsNoGUI::PrepareDetailsForLayout(const QVectorgetData()); }; - QProgressDialog progress(tr("Preparing details for layout"), QString(), 0, details.size()); + QProgressDialog progress(tr("Preparing details for layout"), QString(), 0, static_cast(details.size())); progress.setWindowModality(Qt::ApplicationModal); QFutureWatcher futureWatcher; @@ -1307,7 +1313,7 @@ bool MainWindowsNoGUI::ExportFMeasurementsToCSVData(const QString &fileName, boo } QString error; - const bool success = csv.toCSV(fileName, error, withHeader, separator, QTextCodec::codecForMib(mib)); + const bool success = csv.toCSV(fileName, error, withHeader, separator, VTextCodec::codecForMib(mib)); if (not success) { diff --git a/src/app/valentina/stable.h b/src/app/valentina/stable.h index 0c7176aa2..e4273b46e 100644 --- a/src/app/valentina/stable.h +++ b/src/app/valentina/stable.h @@ -79,6 +79,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif /*__cplusplus*/ #endif // STABLE_H diff --git a/src/app/valentina/valentina.qbs b/src/app/valentina/valentina.qbs index 949ea417e..6ff3c5f3f 100644 --- a/src/app/valentina/valentina.qbs +++ b/src/app/valentina/valentina.qbs @@ -1,9 +1,10 @@ import qbs.FileInfo +import qbs.Utilities VToolApp { Depends { name: "buildconfig" } Depends { name: "ib"; condition: qbs.targetOS.contains("macos") } - Depends { name: "Qt"; submodules: ["widgets", "svg", "xmlpatterns", "concurrent"] } + Depends { name: "Qt"; submodules: ["core", "widgets", "svg", "concurrent"] } Depends { name: "VPatternDBLib"; } Depends { name: "VWidgetsLib"; } Depends { name: "FervorLib"; } @@ -13,7 +14,10 @@ VToolApp { Depends { name: "VFormatLib"; } Depends { name: "VMiscLib"; } - primaryApp: true + Depends { + name: "Qt.xmlpatterns" + condition: Utilities.versionCompare(Qt.core.version, "6") < 0 + } Depends { name: "Qt.winextras" @@ -22,6 +26,8 @@ VToolApp { required: false } + primaryApp: true + name: "Valentina" buildconfig.appTarget: qbs.targetOS.contains("macos") ? "Valentina" : "valentina" targetName: buildconfig.appTarget diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index 85ebbac39..8853a8767 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -1025,9 +1025,12 @@ void VPattern::ParseDetailInternals(const QDomElement &domElement, VPiece &detai // TODO. Delete if minimal supported version is 0.4.0 Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FormatVersion(0, 4, 0), "Time to refactor the code."); - const bool closed = GetParametrUInt(domElement, AttrClosed, QChar('1')); - const qreal width = GetParametrDouble(domElement, AttrWidth, QStringLiteral("0.0")); - futurePathV1 = QtConcurrent::run(this, &VPattern::ParseDetailNodes, element, width, closed); + futurePathV1 = QtConcurrent::run([this, domElement, element]() + { + const bool closed = GetParametrUInt(domElement, AttrClosed, QChar('1')); + const qreal width = GetParametrDouble(domElement, AttrWidth, QStringLiteral("0.0")); + return ParseDetailNodes(element, width, closed); + }); } else { @@ -1035,16 +1038,22 @@ void VPattern::ParseDetailInternals(const QDomElement &domElement, VPiece &detai } break; case 1:// TagData - futurePPData = QtConcurrent::run(this, &VPattern::ParsePieceDataTag, element, - detail.GetPieceLabelData()); + futurePPData = QtConcurrent::run([this, element, detail]() + { + return ParsePieceDataTag(element, detail.GetPieceLabelData()); + }); break; case 2:// TagPatternInfo - futurePatternInfo = QtConcurrent::run(this, &VPattern::ParsePiecePatternInfo, element, - detail.GetPatternLabelData()); + futurePatternInfo = QtConcurrent::run([this, element, detail]() + { + return ParsePiecePatternInfo(element, detail.GetPatternLabelData()); + }); break; case 3:// TagGrainline - futureGGeometry = QtConcurrent::run(this, &VPattern::ParsePieceGrainline, element, - detail.GetGrainlineGeometry()); + futureGGeometry = QtConcurrent::run([this, element, detail]() + { + return ParsePieceGrainline(element, detail.GetGrainlineGeometry()); + }); break; case 4:// VToolSeamAllowance::TagCSA futureRecords = QtConcurrent::run(&VPattern::ParsePieceCSARecords, element); @@ -1537,7 +1546,7 @@ QString VPattern::GetLabelBase(quint32 index) const QString base; const int count = qFloor(index/static_cast(alphabet.size())); - const int number = static_cast(index) - alphabet.size() * count; + const int number = static_cast(index) - static_cast(alphabet.size()) * count; int i = 0; do { @@ -1638,7 +1647,13 @@ void VPattern::ParseToolAlongLine(VMainGraphicsScene *scene, QDomElement &domEle try { + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + VToolAlongLineInitData initData; + + QT_WARNING_POP + initData.scene = scene; initData.doc = this; initData.data = data; @@ -2328,7 +2343,13 @@ void VPattern::ParseToolCurveIntersectAxis(VMainGraphicsScene *scene, QDomElemen try { + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + VToolCurveIntersectAxisInitData initData; + + QT_WARNING_POP + initData.scene = scene; initData.doc = this; initData.data = data; @@ -2452,7 +2473,13 @@ void VPattern::ParseToolPointOfIntersectionCurves(VMainGraphicsScene *scene, QDo try { + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + VToolPointOfIntersectionCurvesInitData initData; + + QT_WARNING_POP + initData.scene = scene; initData.doc = this; initData.data = data; @@ -4229,13 +4256,13 @@ void VPattern::SetIncrementSpecialUnits(const QString &name, bool special) //--------------------------------------------------------------------------------------------------------------------- void VPattern::ReplaceNameInFormula(QVector &expressions, const QString &name, const QString &newName) { - const int bias = name.length() - newName.length(); + const auto bias = name.length() - newName.length(); for(int i = 0; i < expressions.size(); ++i) { if (expressions.at(i).expression.indexOf(name) != -1) { - QMap tokens; + QMap tokens; // Eval formula try @@ -4256,7 +4283,7 @@ void VPattern::ReplaceNameInFormula(QVector &expressions, const Q continue; } - QList tKeys = tokens.keys();// Take all tokens positions + QList tKeys = tokens.keys();// Take all tokens positions QString newFormula = expressions.at(i).expression; for (int i = 0; i < tKeys.size(); ++i) diff --git a/src/libs/fervor/fvupdater.cpp b/src/libs/fervor/fvupdater.cpp index a7cc2b64c..24fcb6632 100644 --- a/src/libs/fervor/fvupdater.cpp +++ b/src/libs/fervor/fvupdater.cpp @@ -33,11 +33,7 @@ #include #include #include -#include -#include -#include #include -#include #include #include #include diff --git a/src/libs/fervor/stable.h b/src/libs/fervor/stable.h index ca3731074..ff2ab3331 100644 --- a/src/libs/fervor/stable.h +++ b/src/libs/fervor/stable.h @@ -77,6 +77,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/ifc/ifc.qbs b/src/libs/ifc/ifc.qbs index 76b79c458..096d3109c 100644 --- a/src/libs/ifc/ifc.qbs +++ b/src/libs/ifc/ifc.qbs @@ -1,7 +1,29 @@ +import qbs.Utilities + VLib { - Depends { name: "Qt"; submodules: ["gui", "xml", "svg", "xmlpatterns", "concurrent"] } + Depends { name: "Qt"; submodules: ["core", "gui", "xml", "svg", "concurrent"] } Depends { name: "VMiscLib" } + Depends { + name: "Qt.xmlpatterns" + condition: Utilities.versionCompare(Qt.core.version, "6") < 0 + } + + Depends { + name: "xerces-c" + condition: !buildconfig.useConanPackages + } + + Depends { + name: "conan.XercesC" + condition: buildconfig.useConanPackages + } + + Properties { + condition: buildconfig.useConan && (qbs.targetOS.contains("macos") || qbs.targetOS.contains("windows")) + conan.XercesC.installLib: true + } + name: "IFCLib" files: [ "ifcdef.h", @@ -31,7 +53,7 @@ VLib { "vexceptionwrongid.cpp", "vexceptionundo.cpp", "vexceptioninvalidnotch.cpp", - "vexceptioninvalidhistory.cpp", + "vexceptioninvalidhistory.cpp" ] } @@ -44,6 +66,8 @@ VLib { "vbackgroundpatternimage.h", "vdomdocument.h", "vlayoutconverter.h", + "vparsererrorhandler.cpp", + "vparsererrorhandler.h", "vpatternconverter.h", "vpatternimage.h", "vtoolrecord.h", @@ -81,6 +105,7 @@ VLib { Depends { name: "cpp" } Depends { name: "Qt"; submodules: ["xml"] } Depends { name: "VMiscLib" } + Depends { name: "conan.XercesC"; condition: buildconfig.useConanPackages } cpp.includePaths: [exportingProduct.sourceDirectory] } } diff --git a/src/libs/ifc/ifcdef.cpp b/src/libs/ifc/ifcdef.cpp index 56db11f4b..74577a105 100644 --- a/src/libs/ifc/ifcdef.cpp +++ b/src/libs/ifc/ifcdef.cpp @@ -34,9 +34,6 @@ #include #include #include -#include -#include -#include #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "../vmisc/diagnostic.h" diff --git a/src/libs/ifc/schema/individual_measurements/v0.4.0.xsd b/src/libs/ifc/schema/individual_measurements/v0.4.0.xsd index 9b908798a..ff22d0750 100644 --- a/src/libs/ifc/schema/individual_measurements/v0.4.0.xsd +++ b/src/libs/ifc/schema/individual_measurements/v0.4.0.xsd @@ -41,7 +41,7 @@ - + diff --git a/src/libs/ifc/schema/individual_measurements/v0.5.0.xsd b/src/libs/ifc/schema/individual_measurements/v0.5.0.xsd index fd8ba97f7..a45d77139 100644 --- a/src/libs/ifc/schema/individual_measurements/v0.5.0.xsd +++ b/src/libs/ifc/schema/individual_measurements/v0.5.0.xsd @@ -42,7 +42,7 @@ - + diff --git a/src/libs/ifc/schema/individual_measurements/v0.5.1.xsd b/src/libs/ifc/schema/individual_measurements/v0.5.1.xsd index 6a174d8f9..322f58358 100644 --- a/src/libs/ifc/schema/individual_measurements/v0.5.1.xsd +++ b/src/libs/ifc/schema/individual_measurements/v0.5.1.xsd @@ -44,7 +44,7 @@ - + diff --git a/src/libs/ifc/schema/individual_measurements/v0.5.2.xsd b/src/libs/ifc/schema/individual_measurements/v0.5.2.xsd index 95bd2655b..cd9d49402 100644 --- a/src/libs/ifc/schema/individual_measurements/v0.5.2.xsd +++ b/src/libs/ifc/schema/individual_measurements/v0.5.2.xsd @@ -45,7 +45,7 @@ - + diff --git a/src/libs/ifc/schema/multisize_measurements/v0.4.4.xsd b/src/libs/ifc/schema/multisize_measurements/v0.4.4.xsd index c49f3ee16..2b15e8f22 100644 --- a/src/libs/ifc/schema/multisize_measurements/v0.4.4.xsd +++ b/src/libs/ifc/schema/multisize_measurements/v0.4.4.xsd @@ -43,7 +43,7 @@ - + diff --git a/src/libs/ifc/schema/multisize_measurements/v0.5.0.xsd b/src/libs/ifc/schema/multisize_measurements/v0.5.0.xsd index 82ba0a452..16b5e4b1c 100644 --- a/src/libs/ifc/schema/multisize_measurements/v0.5.0.xsd +++ b/src/libs/ifc/schema/multisize_measurements/v0.5.0.xsd @@ -82,7 +82,7 @@ - + diff --git a/src/libs/ifc/schema/multisize_measurements/v0.5.1.xsd b/src/libs/ifc/schema/multisize_measurements/v0.5.1.xsd index cf3689c46..31b0504bb 100644 --- a/src/libs/ifc/schema/multisize_measurements/v0.5.1.xsd +++ b/src/libs/ifc/schema/multisize_measurements/v0.5.1.xsd @@ -94,7 +94,7 @@ - + diff --git a/src/libs/ifc/schema/multisize_measurements/v0.5.2.xsd b/src/libs/ifc/schema/multisize_measurements/v0.5.2.xsd index 1054fc282..a0f1b9eb1 100644 --- a/src/libs/ifc/schema/multisize_measurements/v0.5.2.xsd +++ b/src/libs/ifc/schema/multisize_measurements/v0.5.2.xsd @@ -95,7 +95,7 @@ - + diff --git a/src/libs/ifc/schema/multisize_measurements/v0.5.3.xsd b/src/libs/ifc/schema/multisize_measurements/v0.5.3.xsd index 7b5878642..044030672 100644 --- a/src/libs/ifc/schema/multisize_measurements/v0.5.3.xsd +++ b/src/libs/ifc/schema/multisize_measurements/v0.5.3.xsd @@ -96,7 +96,7 @@ - + diff --git a/src/libs/ifc/schema/multisize_measurements/v0.5.4.xsd b/src/libs/ifc/schema/multisize_measurements/v0.5.4.xsd index 825fb200c..75a7bddfd 100644 --- a/src/libs/ifc/schema/multisize_measurements/v0.5.4.xsd +++ b/src/libs/ifc/schema/multisize_measurements/v0.5.4.xsd @@ -96,7 +96,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.7.10.xsd b/src/libs/ifc/schema/pattern/v0.7.10.xsd index c50be206f..c3fed7a9a 100644 --- a/src/libs/ifc/schema/pattern/v0.7.10.xsd +++ b/src/libs/ifc/schema/pattern/v0.7.10.xsd @@ -757,7 +757,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.7.11.xsd b/src/libs/ifc/schema/pattern/v0.7.11.xsd index deedcfe29..b7d3fc726 100644 --- a/src/libs/ifc/schema/pattern/v0.7.11.xsd +++ b/src/libs/ifc/schema/pattern/v0.7.11.xsd @@ -760,7 +760,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.7.12.xsd b/src/libs/ifc/schema/pattern/v0.7.12.xsd index 1080cf218..e818fdbd7 100644 --- a/src/libs/ifc/schema/pattern/v0.7.12.xsd +++ b/src/libs/ifc/schema/pattern/v0.7.12.xsd @@ -763,7 +763,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.7.13.xsd b/src/libs/ifc/schema/pattern/v0.7.13.xsd index 14c976091..8f509c5fb 100644 --- a/src/libs/ifc/schema/pattern/v0.7.13.xsd +++ b/src/libs/ifc/schema/pattern/v0.7.13.xsd @@ -773,7 +773,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.7.6.xsd b/src/libs/ifc/schema/pattern/v0.7.6.xsd index 3b7848d76..8b9a28cf3 100644 --- a/src/libs/ifc/schema/pattern/v0.7.6.xsd +++ b/src/libs/ifc/schema/pattern/v0.7.6.xsd @@ -751,7 +751,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.7.7.xsd b/src/libs/ifc/schema/pattern/v0.7.7.xsd index 671f81c8c..f0205b9a3 100644 --- a/src/libs/ifc/schema/pattern/v0.7.7.xsd +++ b/src/libs/ifc/schema/pattern/v0.7.7.xsd @@ -754,7 +754,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.7.8.xsd b/src/libs/ifc/schema/pattern/v0.7.8.xsd index e26d9db5e..325803e35 100644 --- a/src/libs/ifc/schema/pattern/v0.7.8.xsd +++ b/src/libs/ifc/schema/pattern/v0.7.8.xsd @@ -754,7 +754,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.7.9.xsd b/src/libs/ifc/schema/pattern/v0.7.9.xsd index ec6b4ae78..be259e207 100644 --- a/src/libs/ifc/schema/pattern/v0.7.9.xsd +++ b/src/libs/ifc/schema/pattern/v0.7.9.xsd @@ -755,7 +755,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.0.xsd b/src/libs/ifc/schema/pattern/v0.8.0.xsd index 012aa52fc..f2c899ce4 100644 --- a/src/libs/ifc/schema/pattern/v0.8.0.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.0.xsd @@ -776,7 +776,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.1.xsd b/src/libs/ifc/schema/pattern/v0.8.1.xsd index e90ac4e73..67bad5556 100644 --- a/src/libs/ifc/schema/pattern/v0.8.1.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.1.xsd @@ -791,7 +791,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.10.xsd b/src/libs/ifc/schema/pattern/v0.8.10.xsd index c619bee02..072878cb0 100644 --- a/src/libs/ifc/schema/pattern/v0.8.10.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.10.xsd @@ -775,7 +775,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.11.xsd b/src/libs/ifc/schema/pattern/v0.8.11.xsd index f5af96d4e..bc28740c3 100644 --- a/src/libs/ifc/schema/pattern/v0.8.11.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.11.xsd @@ -780,7 +780,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.12.xsd b/src/libs/ifc/schema/pattern/v0.8.12.xsd index 9b20f38f9..8f1b40115 100644 --- a/src/libs/ifc/schema/pattern/v0.8.12.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.12.xsd @@ -781,7 +781,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.13.xsd b/src/libs/ifc/schema/pattern/v0.8.13.xsd index fd4684858..f994b56b2 100644 --- a/src/libs/ifc/schema/pattern/v0.8.13.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.13.xsd @@ -781,7 +781,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.2.xsd b/src/libs/ifc/schema/pattern/v0.8.2.xsd index 636bf0e6c..27239cfc1 100644 --- a/src/libs/ifc/schema/pattern/v0.8.2.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.2.xsd @@ -795,7 +795,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.3.xsd b/src/libs/ifc/schema/pattern/v0.8.3.xsd index 66ffcf282..5c211d7f6 100644 --- a/src/libs/ifc/schema/pattern/v0.8.3.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.3.xsd @@ -801,7 +801,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.4.xsd b/src/libs/ifc/schema/pattern/v0.8.4.xsd index f4d2b56d3..2e6adbc19 100644 --- a/src/libs/ifc/schema/pattern/v0.8.4.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.4.xsd @@ -801,7 +801,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.5.xsd b/src/libs/ifc/schema/pattern/v0.8.5.xsd index c5186fe34..37b54ea99 100644 --- a/src/libs/ifc/schema/pattern/v0.8.5.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.5.xsd @@ -841,7 +841,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.6.xsd b/src/libs/ifc/schema/pattern/v0.8.6.xsd index 7f860f2ac..a3697b61f 100644 --- a/src/libs/ifc/schema/pattern/v0.8.6.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.6.xsd @@ -827,7 +827,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.7.xsd b/src/libs/ifc/schema/pattern/v0.8.7.xsd index 26e7571a0..517564498 100644 --- a/src/libs/ifc/schema/pattern/v0.8.7.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.7.xsd @@ -829,7 +829,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.8.xsd b/src/libs/ifc/schema/pattern/v0.8.8.xsd index be5cf7ba7..b9a9b065f 100644 --- a/src/libs/ifc/schema/pattern/v0.8.8.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.8.xsd @@ -761,7 +761,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.8.9.xsd b/src/libs/ifc/schema/pattern/v0.8.9.xsd index 664dd2202..aee27e9f6 100644 --- a/src/libs/ifc/schema/pattern/v0.8.9.xsd +++ b/src/libs/ifc/schema/pattern/v0.8.9.xsd @@ -767,7 +767,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.9.0.xsd b/src/libs/ifc/schema/pattern/v0.9.0.xsd index e6ac4b6e1..67577b868 100644 --- a/src/libs/ifc/schema/pattern/v0.9.0.xsd +++ b/src/libs/ifc/schema/pattern/v0.9.0.xsd @@ -808,7 +808,7 @@ - + @@ -836,7 +836,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.9.1.xsd b/src/libs/ifc/schema/pattern/v0.9.1.xsd index 2b807169f..802eae918 100644 --- a/src/libs/ifc/schema/pattern/v0.9.1.xsd +++ b/src/libs/ifc/schema/pattern/v0.9.1.xsd @@ -817,7 +817,7 @@ - + @@ -845,7 +845,7 @@ - + diff --git a/src/libs/ifc/schema/pattern/v0.9.2.xsd b/src/libs/ifc/schema/pattern/v0.9.2.xsd index d2c07bd79..773a0c21d 100644 --- a/src/libs/ifc/schema/pattern/v0.9.2.xsd +++ b/src/libs/ifc/schema/pattern/v0.9.2.xsd @@ -822,12 +822,12 @@ - + - + @@ -855,7 +855,7 @@ - + diff --git a/src/libs/ifc/stable.h b/src/libs/ifc/stable.h index c38a29241..ad8942aad 100644 --- a/src/libs/ifc/stable.h +++ b/src/libs/ifc/stable.h @@ -77,6 +77,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/ifc/xml/utils.h b/src/libs/ifc/xml/utils.h index 6c9487158..3f9d7d94a 100644 --- a/src/libs/ifc/xml/utils.h +++ b/src/libs/ifc/xml/utils.h @@ -30,10 +30,13 @@ class QMimeType; class QString; -class QStringList; class QMimeType; class QByteArray; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +class QStringList; +#endif + auto IsMimeTypeImage(const QMimeType &mime) -> bool; auto SplitString(QString str) -> QStringList; auto MimeTypeFromByteArray(const QByteArray &data) -> QMimeType; diff --git a/src/libs/ifc/xml/vabstractconverter.cpp b/src/libs/ifc/xml/vabstractconverter.cpp index 5c3ac669e..127cc6f52 100644 --- a/src/libs/ifc/xml/vabstractconverter.cpp +++ b/src/libs/ifc/xml/vabstractconverter.cpp @@ -27,8 +27,15 @@ *************************************************************************/ #include "vabstractconverter.h" +#include "vparsererrorhandler.h" + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include +#else +#include +#include +#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) -#include #include #include #include @@ -39,76 +46,13 @@ #include #include #include -#include -#include -#include -#include #include #include #include -#include -#include #include "../exception/vexception.h" #include "vdomdocument.h" -//This class need for validation pattern file using XSD shema -class MessageHandler : public QAbstractMessageHandler -{ -public: - MessageHandler() - : QAbstractMessageHandler(), - m_messageType(QtMsgType()), - m_description(), - m_sourceLocation(QSourceLocation()) - {} - - QString statusMessage() const; - qint64 line() const; - qint64 column() const; -protected: - // cppcheck-suppress unusedFunction - virtual void handleMessage(QtMsgType type, const QString &description, - const QUrl &identifier, const QSourceLocation &sourceLocation) override; -private: - QtMsgType m_messageType; - QString m_description; - QSourceLocation m_sourceLocation; -}; - -//--------------------------------------------------------------------------------------------------------------------- -QString MessageHandler::statusMessage() const -{ - QTextDocument doc; - doc.setHtml(m_description); - return doc.toPlainText(); -} - -//--------------------------------------------------------------------------------------------------------------------- -inline qint64 MessageHandler::line() const -{ - return m_sourceLocation.line(); -} - -//--------------------------------------------------------------------------------------------------------------------- -inline qint64 MessageHandler::column() const -{ - return m_sourceLocation.column(); -} - -//--------------------------------------------------------------------------------------------------------------------- -// cppcheck-suppress unusedFunction -void MessageHandler::handleMessage(QtMsgType type, const QString &description, const QUrl &identifier, - const QSourceLocation &sourceLocation) -{ - Q_UNUSED(type) - Q_UNUSED(identifier) - - m_messageType = type; - m_description = description; - m_sourceLocation = sourceLocation; -} - //--------------------------------------------------------------------------------------------------------------------- VAbstractConverter::VAbstractConverter(const QString &fileName) : m_ver(0x0), @@ -178,15 +122,16 @@ void VAbstractConverter::ReserveFile() const } //--------------------------------------------------------------------------------------------------------------------- -void VAbstractConverter::Replace(QString &formula, const QString &newName, int position, const QString &token, - int &bias) const +void VAbstractConverter::Replace(QString &formula, const QString &newName, vsizetype position, const QString &token, + vsizetype &bias) const { formula.replace(position, token.length(), newName); bias = token.length() - newName.length(); } //--------------------------------------------------------------------------------------------------------------------- -void VAbstractConverter::CorrectionsPositions(int position, int bias, QMap &tokens) const +void VAbstractConverter::CorrectionsPositions(vsizetype position, vsizetype bias, + QMap &tokens) const { if (bias == 0) { @@ -197,10 +142,10 @@ void VAbstractConverter::CorrectionsPositions(int position, int bias, QMap &tokens) +void VAbstractConverter::BiasTokens(vsizetype position, vsizetype bias, QMap &tokens) { - QMap newTokens; - QMap::const_iterator i = tokens.constBegin(); + QMap newTokens; + QMap::const_iterator i = tokens.constBegin(); while (i != tokens.constEnd()) { if (i.key()<= position) @@ -224,6 +169,70 @@ void VAbstractConverter::BiasTokens(int position, int bias, QMap & void VAbstractConverter::ValidateXML(const QString &schema) const { qCDebug(vXML, "Validation xml file %s.", qUtf8Printable(m_convertedFileName)); + + QFile fileSchema(schema); + if (not fileSchema.open(QIODevice::ReadOnly)) + { + const QString errorMsg(tr("Can't open schema file %1:\n%2.").arg(schema, fileSchema.errorString())); + throw VException(errorMsg); + } + + VParserErrorHandler parserErrorHandler; + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QScopedPointer tempSchema(QTemporaryFile::createNativeFile(fileSchema)); + if (tempSchema == nullptr) + { + const QString errorMsg(tr("Can't create native file for schema file %1:\n%2.") + .arg(schema, fileSchema.errorString())); + throw VException(errorMsg); + } + + if (tempSchema->open()) + { + XercesDOMParser domParser; + domParser.setErrorHandler(&parserErrorHandler); + + if (domParser.loadGrammar( + tempSchema->fileName().toUtf8().constData(), Grammar::SchemaGrammarType, true) == nullptr) + { + VException e(parserErrorHandler.StatusMessage()); + e.AddMoreInformation(tr("Could not load schema file '%1'.").arg(fileSchema.fileName())); + throw e; + } + + qCDebug(vXML, "Schema loaded."); + + if (parserErrorHandler.HasError()) + { + VException e(parserErrorHandler.StatusMessage()); + e.AddMoreInformation(tr("Schema file %3 invalid in line %1 column %2").arg(parserErrorHandler.Line()) + .arg(parserErrorHandler.Column()).arg(fileSchema.fileName())); + throw e; + } + + domParser.setValidationScheme(XercesDOMParser::Val_Always); + domParser.setDoNamespaces(true); + domParser.setDoSchema(true); + domParser.setValidationConstraintFatal(true); + domParser.setValidationSchemaFullChecking(true); + domParser.useCachedGrammarInParse(true); + + domParser.parse(m_convertedFileName.toUtf8().constData()); + + if (domParser.getErrorCount() > 0) + { + VException e(parserErrorHandler.StatusMessage()); + e.AddMoreInformation(tr("Validation error file %3 in line %1 column %2").arg(parserErrorHandler.Line()) + .arg(parserErrorHandler.Column()).arg(m_originalFileName)); + throw e; + } + } + else + { + qCritical() << tr("Unable to open native file for schema"); + } +#else QFile pattern(m_convertedFileName); if (not pattern.open(QIODevice::ReadOnly)) { @@ -231,22 +240,11 @@ void VAbstractConverter::ValidateXML(const QString &schema) const throw VException(errorMsg); } - QFile fileSchema(schema); - if (not fileSchema.open(QIODevice::ReadOnly)) - { - pattern.close(); - const QString errorMsg(tr("Can't open schema file %1:\n%2.").arg(schema, fileSchema.errorString())); - throw VException(errorMsg); - } - - MessageHandler messageHandler; QXmlSchema sch; - sch.setMessageHandler(&messageHandler); + sch.setMessageHandler(&parserErrorHandler); if (sch.load(&fileSchema, QUrl::fromLocalFile(fileSchema.fileName()))==false) { - pattern.close(); - fileSchema.close(); - VException e(messageHandler.statusMessage()); + VException e(parserErrorHandler.StatusMessage()); e.AddMoreInformation(tr("Could not load schema file '%1'.").arg(fileSchema.fileName())); throw e; } @@ -268,15 +266,12 @@ void VAbstractConverter::ValidateXML(const QString &schema) const if (errorOccurred) { - pattern.close(); - fileSchema.close(); - VException e(messageHandler.statusMessage()); - e.AddMoreInformation(tr("Validation error file %3 in line %1 column %2").arg(messageHandler.line()) - .arg(messageHandler.column()).arg(m_originalFileName)); + VException e(parserErrorHandler.StatusMessage()); + e.AddMoreInformation(tr("Validation error file %3 in line %1 column %2").arg(parserErrorHandler.Line()) + .arg(parserErrorHandler.Column()).arg(m_originalFileName)); throw e; } - pattern.close(); - fileSchema.close(); +#endif // QT_VERSION < QT_VERSION_CHECK(6, 0, 0) } //--------------------------------------------------------------------------------------------------------------------- @@ -342,7 +337,9 @@ void VAbstractConverter::Save() m_tmpFile.resize(0);//clear previous content const int indent = 4; QTextStream out(&m_tmpFile); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) out.setCodec("UTF-8"); +#endif save(out, indent); if (not m_tmpFile.flush()) @@ -362,3 +359,15 @@ void VAbstractConverter::SetVersion(const QString &version) throw e; } } + +//--------------------------------------------------------------------------------------------------------------------- +QString VAbstractConverter::XSDSchema(unsigned int ver) const +{ + const QHash schemas = Schemas(); + if (schemas.contains(ver)) + { + return schemas.value(ver); + } + + InvalidVersion(ver); +} diff --git a/src/libs/ifc/xml/vabstractconverter.h b/src/libs/ifc/xml/vabstractconverter.h index 36ae8d69d..468883d16 100644 --- a/src/libs/ifc/xml/vabstractconverter.h +++ b/src/libs/ifc/xml/vabstractconverter.h @@ -36,7 +36,6 @@ #include #include "vdomdocument.h" -#include "../vmisc/projectversion.h" QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Wsuggest-final-types") @@ -69,15 +68,18 @@ protected: virtual QString MinVerStr() const =0; virtual QString MaxVerStr() const =0; - virtual QString XSDSchema(unsigned ver) const =0; + virtual QString XSDSchema(unsigned ver) const; virtual void ApplyPatches() =0; virtual void DowngradeToCurrentMaxVersion() =0; virtual bool IsReadOnly() const =0; - void Replace(QString &formula, const QString &newName, int position, const QString &token, int &bias) const; - void CorrectionsPositions(int position, int bias, QMap &tokens) const; - static void BiasTokens(int position, int bias, QMap &tokens); + virtual auto Schemas() const -> QHash =0; + + void Replace(QString &formula, const QString &newName, vsizetype position, const QString &token, + vsizetype &bias) const; + void CorrectionsPositions(vsizetype position, vsizetype bias, QMap &tokens) const; + static void BiasTokens(vsizetype position, vsizetype bias, QMap &tokens); void ValidateXML(const QString &schema) const; diff --git a/src/libs/ifc/xml/vabstractmconverter.cpp b/src/libs/ifc/xml/vabstractmconverter.cpp index f6967f1f8..8461d36e5 100644 --- a/src/libs/ifc/xml/vabstractmconverter.cpp +++ b/src/libs/ifc/xml/vabstractmconverter.cpp @@ -29,9 +29,6 @@ #include "vabstractmconverter.h" #include -#include -#include -#include #include "vabstractconverter.h" diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index 5ada9dfbb..c031bf88f 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -34,9 +34,6 @@ #include #include #include -#include -#include -#include #include #include #include @@ -278,7 +275,7 @@ template auto NumberToString(T number) -> QString { const QLocale locale = QLocale::c(); - return locale.toString(number, 'g', 12).remove(locale.groupSeparator()); + return locale.toString(number, 'g', 12).remove(LocaleGroupSeparator(locale)); } //--------------------------------------------------------------------------------------------------------------------- @@ -327,7 +324,7 @@ bool VAbstractPattern::RequiresMeasurements() const //--------------------------------------------------------------------------------------------------------------------- QStringList VAbstractPattern::ListMeasurements() const { - const QFuture futureIncrements = QtConcurrent::run(this, &VAbstractPattern::ListIncrements); + const QFuture futureIncrements = QtConcurrent::run([this](){return ListIncrements();}); const QList tokens = ConvertToList(QtConcurrent::blockingMappedReduced(ListExpressions(), GetTokens, GatherTokens)); @@ -1418,7 +1415,12 @@ auto VAbstractPattern::GetBackgroundImage(const QUuid &id) const -> VBackgroundP return GetBackgroundPatternImage(imageElement); } + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + return {}; + + QT_WARNING_POP } //--------------------------------------------------------------------------------------------------------------------- @@ -1661,7 +1663,7 @@ auto VAbstractPattern::CheckTagExists(const QString &tag) -> QDomElement void VAbstractPattern::InsertTag(const QStringList &tags, const QDomElement &element) { QDomElement pattern = documentElement(); - for (int i = tags.indexOf(element.tagName())-1; i >= 0; --i) + for (vsizetype i = tags.indexOf(element.tagName())-1; i >= 0; --i) { const QDomNodeList list = elementsByTagName(tags.at(i)); if (not list.isEmpty()) @@ -1725,16 +1727,15 @@ QVector VAbstractPattern::ListExpressions() const // If new tool bring absolutely new type and has formula(s) create new method to cover it. // Note. Tool Union Details also contains formulas, but we don't use them for union and keep only to simplifying // working with nodes. Same code for saving reading. - auto futurePointExpressions = QtConcurrent::run(this, &VAbstractPattern::ListPointExpressions); - auto futureArcExpressions = QtConcurrent::run(this, &VAbstractPattern::ListArcExpressions); - auto futureElArcExpressions = QtConcurrent::run(this, &VAbstractPattern::ListElArcExpressions); - auto futureSplineExpressions = QtConcurrent::run(this, &VAbstractPattern::ListSplineExpressions); - auto futureIncrementExpressions = QtConcurrent::run(this, &VAbstractPattern::ListIncrementExpressions); - auto futureOperationExpressions = QtConcurrent::run(this, &VAbstractPattern::ListOperationExpressions); - auto futurePathExpressions = QtConcurrent::run(this, &VAbstractPattern::ListPathExpressions); - auto futurePieceExpressions = QtConcurrent::run(this, &VAbstractPattern::ListPieceExpressions); - auto futureFinalMeasurementsExpressions = QtConcurrent::run(this, - &VAbstractPattern::ListFinalMeasurementsExpressions); + auto futurePointExpressions = QtConcurrent::run([this](){return ListPointExpressions();}); + auto futureArcExpressions = QtConcurrent::run([this](){return ListArcExpressions();}); + auto futureElArcExpressions = QtConcurrent::run([this](){return ListElArcExpressions();}); + auto futureSplineExpressions = QtConcurrent::run([this](){return ListSplineExpressions();}); + auto futureIncrementExpressions = QtConcurrent::run([this](){return ListIncrementExpressions();}); + auto futureOperationExpressions = QtConcurrent::run([this](){return ListOperationExpressions();}); + auto futurePathExpressions = QtConcurrent::run([this](){return ListPathExpressions();}); + auto futurePieceExpressions = QtConcurrent::run([this](){return ListPieceExpressions();}); + auto futureFinalMeasurementsExpressions = QtConcurrent::run([this](){return ListFinalMeasurementsExpressions();}); QVector list; list << futurePointExpressions.result(); diff --git a/src/libs/ifc/xml/vbackgroundpatternimage.cpp b/src/libs/ifc/xml/vbackgroundpatternimage.cpp index 34961934f..e8e06c0c3 100644 --- a/src/libs/ifc/xml/vbackgroundpatternimage.cpp +++ b/src/libs/ifc/xml/vbackgroundpatternimage.cpp @@ -72,7 +72,13 @@ auto ScaleVectorImage(const QSvgRenderer &renderer) -> QSize //--------------------------------------------------------------------------------------------------------------------- auto VBackgroundPatternImage::FromFile(const QString &fileName, bool builtIn) -> VBackgroundPatternImage { + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + VBackgroundPatternImage image; + + QT_WARNING_POP + QMimeType mime = QMimeDatabase().mimeTypeForFile(fileName); if (not IsMimeTypeImage(mime)) diff --git a/src/libs/ifc/xml/vbackgroundpatternimage.h b/src/libs/ifc/xml/vbackgroundpatternimage.h index 21e7f54a1..79083dd88 100644 --- a/src/libs/ifc/xml/vbackgroundpatternimage.h +++ b/src/libs/ifc/xml/vbackgroundpatternimage.h @@ -33,8 +33,6 @@ #include #include -#include "../vmisc/typedef.h" - class QPixmap; class QMimeType; diff --git a/src/libs/ifc/xml/vdomdocument.cpp b/src/libs/ifc/xml/vdomdocument.cpp index 159445960..9e676c40b 100644 --- a/src/libs/ifc/xml/vdomdocument.cpp +++ b/src/libs/ifc/xml/vdomdocument.cpp @@ -39,7 +39,11 @@ #include "../exception/vexception.h" #include "../ifcdef.h" +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include +#include +#endif + #include #include #include @@ -47,7 +51,6 @@ #include #include #include -#include #include #include #include @@ -703,7 +706,7 @@ void VDomDocument::RefreshElementIdCache() { if (m_watcher->isFinished()) { - m_watcher->setFuture(QtConcurrent::run(this, &VDomDocument::RefreshCache, documentElement())); + m_watcher->setFuture(QtConcurrent::run([this](){return RefreshCache(documentElement());})); } } @@ -788,7 +791,9 @@ bool VDomDocument::SaveDocument(const QString &fileName, QString &error) } // Left these strings in case we will need them for testing purposes // QTextStream out(&file); +//#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // out.setCodec("UTF-8"); +//#endif // save(out, indent); success = file.commit(); diff --git a/src/libs/ifc/xml/vdomdocument.h b/src/libs/ifc/xml/vdomdocument.h index a8b5a6637..0aa56ba77 100644 --- a/src/libs/ifc/xml/vdomdocument.h +++ b/src/libs/ifc/xml/vdomdocument.h @@ -35,10 +35,7 @@ #include #include #include -#include #include -#include -#include #include #include #include @@ -50,10 +47,13 @@ #include "../vmisc/diagnostic.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "../vmisc/literals.h" +#include "../qmuparser/qmudef.h" class QDomElement; class QDomNode; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) template class QVector; +#endif template class QFutureWatcher; Q_DECLARE_LOGGING_CATEGORY(vXML) @@ -187,7 +187,7 @@ inline void VDomDocument::SetAttribute(QDomElement &domElement, const QString &n { // See specification for xs:decimal const QLocale locale = QLocale::c(); - domElement.setAttribute(name, locale.toString(value).remove(locale.groupSeparator())); + domElement.setAttribute(name, locale.toString(value).remove(LocaleGroupSeparator(locale))); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/ifc/xml/vlabeltemplateconverter.cpp b/src/libs/ifc/xml/vlabeltemplateconverter.cpp index 990fa2442..3803ad6c9 100644 --- a/src/libs/ifc/xml/vlabeltemplateconverter.cpp +++ b/src/libs/ifc/xml/vlabeltemplateconverter.cpp @@ -51,6 +51,17 @@ VLabelTemplateConverter::VLabelTemplateConverter(const QString &fileName) ValidateInputFile(CurrentSchema); } +//--------------------------------------------------------------------------------------------------------------------- +auto VLabelTemplateConverter::XSDSchemas() -> QHash +{ + static const auto schemas = QHash + { + std::make_pair(FormatVersion(1, 0, 0), CurrentSchema) + }; + + return schemas; +} + //--------------------------------------------------------------------------------------------------------------------- unsigned VLabelTemplateConverter::MinVer() const { @@ -75,20 +86,6 @@ QString VLabelTemplateConverter::MaxVerStr() const return LabelTemplateMaxVerStr; } -//--------------------------------------------------------------------------------------------------------------------- -QString VLabelTemplateConverter::XSDSchema(unsigned ver) const -{ - switch (ver) - { - case (FormatVersion(1, 0, 0)): - return CurrentSchema; - default: - InvalidVersion(ver); - break; - } - return QString();//unreachable code -} - //--------------------------------------------------------------------------------------------------------------------- void VLabelTemplateConverter::ApplyPatches() { @@ -108,3 +105,9 @@ void VLabelTemplateConverter::DowngradeToCurrentMaxVersion() SetVersion(LabelTemplateMaxVerStr); Save(); } + +//--------------------------------------------------------------------------------------------------------------------- +auto VLabelTemplateConverter::Schemas() const -> QHash +{ + return XSDSchemas(); +} diff --git a/src/libs/ifc/xml/vlabeltemplateconverter.h b/src/libs/ifc/xml/vlabeltemplateconverter.h index 920134e14..09a2098fa 100644 --- a/src/libs/ifc/xml/vlabeltemplateconverter.h +++ b/src/libs/ifc/xml/vlabeltemplateconverter.h @@ -30,6 +30,7 @@ #define VLABELTEMPLATECONVERTER_H #include "vabstractconverter.h" +#include "../vmisc/projectversion.h" class VLabelTemplateConverter : public VAbstractConverter { @@ -42,6 +43,8 @@ public: static Q_DECL_CONSTEXPR const unsigned LabelTemplateMinVer = FormatVersion(1, 0, 0); static Q_DECL_CONSTEXPR const unsigned LabelTemplateMaxVer = FormatVersion(1, 0, 0); + static auto XSDSchemas() -> QHash ; + protected: virtual unsigned MinVer() const override; virtual unsigned MaxVer() const override; @@ -49,12 +52,13 @@ protected: virtual QString MinVerStr() const override; virtual QString MaxVerStr() const override; - virtual QString XSDSchema(unsigned ver) const override; - virtual void ApplyPatches() override; - virtual void DowngradeToCurrentMaxVersion() override; + virtual void ApplyPatches() override; + virtual void DowngradeToCurrentMaxVersion() override; virtual bool IsReadOnly() const override {return false;} + auto Schemas() const -> QHash override; + private: Q_DISABLE_COPY_MOVE(VLabelTemplateConverter) // NOLINT static const QString LabelTemplateMinVerStr; diff --git a/src/libs/ifc/xml/vlayoutconverter.cpp b/src/libs/ifc/xml/vlayoutconverter.cpp index c9882a440..6c93c9086 100644 --- a/src/libs/ifc/xml/vlayoutconverter.cpp +++ b/src/libs/ifc/xml/vlayoutconverter.cpp @@ -117,6 +117,20 @@ auto VLayoutConverter::GetFormatVersionStr() const -> QString return QStringLiteral("0.0.0"); } +//--------------------------------------------------------------------------------------------------------------------- +auto VLayoutConverter::XSDSchemas() -> QHash +{ + static auto schemas = QHash + { + std::make_pair(FormatVersion(0, 1, 0), QStringLiteral("://schema/layout/v0.1.0.xsd")), + std::make_pair(FormatVersion(0, 1, 1), QStringLiteral("://schema/layout/v0.1.1.xsd")), + std::make_pair(FormatVersion(0, 1, 2), QStringLiteral("://schema/layout/v0.1.2.xsd")), + std::make_pair(FormatVersion(0, 1, 3), CurrentSchema), + }; + + return schemas; +} + //--------------------------------------------------------------------------------------------------------------------- void VLayoutConverter::SetVersion(const QString &version) { @@ -133,25 +147,6 @@ void VLayoutConverter::SetVersion(const QString &version) } } -//--------------------------------------------------------------------------------------------------------------------- -auto VLayoutConverter::XSDSchema(unsigned ver) const -> QString -{ - QHash schemas = - { - std::make_pair(FormatVersion(0, 1, 0), QStringLiteral("://schema/layout/v0.1.0.xsd")), - std::make_pair(FormatVersion(0, 1, 1), QStringLiteral("://schema/layout/v0.1.1.xsd")), - std::make_pair(FormatVersion(0, 1, 2), QStringLiteral("://schema/layout/v0.1.2.xsd")), - std::make_pair(FormatVersion(0, 1, 3), CurrentSchema), - }; - - if (schemas.contains(ver)) - { - return schemas.value(ver); - } - - InvalidVersion(ver); -} - //--------------------------------------------------------------------------------------------------------------------- void VLayoutConverter::ApplyPatches() { @@ -183,6 +178,12 @@ auto VLayoutConverter::IsReadOnly() const -> bool return false; } +//--------------------------------------------------------------------------------------------------------------------- +auto VLayoutConverter::Schemas() const -> QHash +{ + return XSDSchemas(); +} + //--------------------------------------------------------------------------------------------------------------------- void VLayoutConverter::ConvertPiecesToV0_1_3() { diff --git a/src/libs/ifc/xml/vlayoutconverter.h b/src/libs/ifc/xml/vlayoutconverter.h index 5ebda1305..65277b2c7 100644 --- a/src/libs/ifc/xml/vlayoutconverter.h +++ b/src/libs/ifc/xml/vlayoutconverter.h @@ -29,6 +29,7 @@ #define VLAYOUTCONVERTER_H #include "vabstractconverter.h" +#include "../vmisc/projectversion.h" class QDomElement; class QString; @@ -47,6 +48,8 @@ public: static Q_DECL_CONSTEXPR const unsigned LayoutMinVer = FormatVersion(0, 1, 0); static Q_DECL_CONSTEXPR const unsigned LayoutMaxVer = FormatVersion(0, 1, 3); + static auto XSDSchemas() -> QHash ; + protected: void SetVersion(const QString &version) override; @@ -56,12 +59,13 @@ protected: auto MinVerStr() const -> QString override; auto MaxVerStr() const -> QString override; - auto XSDSchema(unsigned ver) const -> QString override; void ApplyPatches() override; void DowngradeToCurrentMaxVersion() override; auto IsReadOnly() const -> bool override; + auto Schemas() const -> QHash override; + void ConvertPiecesToV0_1_3(); void ConvertPathToV0_1_3(QDomElement &node); diff --git a/src/libs/ifc/xml/vparsererrorhandler.cpp b/src/libs/ifc/xml/vparsererrorhandler.cpp new file mode 100644 index 000000000..f59e7321a --- /dev/null +++ b/src/libs/ifc/xml/vparsererrorhandler.cpp @@ -0,0 +1,135 @@ +/************************************************************************ + ** + ** @file vparsererrorhandler.cpp + ** @author Roman Telezhynskyi + ** @date 8 2, 2023 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2023 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#include "vparsererrorhandler.h" + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +//--------------------------------------------------------------------------------------------------------------------- +auto VParserErrorHandler::StatusMessage() const -> QString +{ + QTextDocument doc; + doc.setHtml(m_description); + return doc.toPlainText(); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VParserErrorHandler::Line() const -> qint64 +{ + return m_sourceLocation.line(); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VParserErrorHandler::Column() const -> qint64 +{ + return m_sourceLocation.column(); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VParserErrorHandler::HasError() const -> bool +{ + return m_hasError; +} + +//--------------------------------------------------------------------------------------------------------------------- +// cppcheck-suppress unusedFunction +void VParserErrorHandler::handleMessage(QtMsgType type, const QString &description, const QUrl &identifier, + const QSourceLocation &sourceLocation) +{ + Q_UNUSED(type) + Q_UNUSED(identifier) + + m_messageType = type; + m_description = description; + m_sourceLocation = sourceLocation; + m_hasError = true; +} + +#else + +//--------------------------------------------------------------------------------------------------------------------- +auto VParserErrorHandler::StatusMessage() const -> QString +{ + return m_description; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VParserErrorHandler::Line() const -> XMLFileLoc +{ + return m_line; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VParserErrorHandler::Column() const -> XMLFileLoc +{ + return m_column; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VParserErrorHandler::handleMessage(const SAXParseException &ex) +{ + char* msg = XMLString::transcode(ex.getMessage()); + m_description = QString(msg); + m_line = ex.getLineNumber(); + m_column = ex.getColumnNumber(); + m_hasError = true; + XMLString::release(&msg); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VParserErrorHandler::warning(const SAXParseException &ex) +{ + handleMessage(ex); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VParserErrorHandler::error(const SAXParseException &ex) +{ + handleMessage(ex); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VParserErrorHandler::fatalError(const SAXParseException &ex) +{ + handleMessage(ex); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VParserErrorHandler::resetErrors() +{ + m_description.clear(); + m_line = 0; + m_column = 0; + m_hasError = false; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VParserErrorHandler::HasError() const -> bool +{ + return m_hasError; +} + +#endif // QT_VERSION < QT_VERSION_CHECK(6, 0, 0) diff --git a/src/libs/ifc/xml/vparsererrorhandler.h b/src/libs/ifc/xml/vparsererrorhandler.h new file mode 100644 index 000000000..46874fede --- /dev/null +++ b/src/libs/ifc/xml/vparsererrorhandler.h @@ -0,0 +1,89 @@ +/************************************************************************ + ** + ** @file vparsererrorhandler.h + ** @author Roman Telezhynskyi + ** @date 8 2, 2023 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2023 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#ifndef VPARSERERRORHANDLER_H +#define VPARSERERRORHANDLER_H + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +#include +#include + +//This class need for validation pattern file using XSD shema +class VParserErrorHandler : public QAbstractMessageHandler +{ +public: + VParserErrorHandler() =default; + + auto StatusMessage() const -> QString; + auto Line() const -> qint64; + auto Column() const -> qint64; + + auto HasError() const -> bool; +protected: + // cppcheck-suppress unusedFunction + void handleMessage(QtMsgType type, const QString &description, + const QUrl &identifier, const QSourceLocation &sourceLocation) override; +private: + QtMsgType m_messageType{}; + QString m_description{}; + QSourceLocation m_sourceLocation{}; + bool m_hasError{false}; +}; + +#else + +#include +#include + +XERCES_CPP_NAMESPACE_USE + +class VParserErrorHandler : public ErrorHandler +{ +public: + auto StatusMessage() const -> QString; + auto Line() const -> XMLFileLoc; + auto Column() const -> XMLFileLoc; + + void warning(const SAXParseException& ex) override; + void error(const SAXParseException& ex) override; + void fatalError(const SAXParseException& ex) override; + void resetErrors() override; + + auto HasError() const -> bool; + +private: + XMLFileLoc m_line{0}; + XMLFileLoc m_column{0}; + QString m_description{}; + bool m_hasError{false}; + + void handleMessage(const SAXParseException& ex); +}; + +#endif // QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + +#endif // VPARSERERRORHANDLER_H diff --git a/src/libs/ifc/xml/vpatternconverter.cpp b/src/libs/ifc/xml/vpatternconverter.cpp index cc1e5de88..8a08feaa1 100644 --- a/src/libs/ifc/xml/vpatternconverter.cpp +++ b/src/libs/ifc/xml/vpatternconverter.cpp @@ -36,9 +36,6 @@ #include #include #include -#include -#include -#include #include #include #include @@ -184,25 +181,9 @@ VPatternConverter::VPatternConverter(const QString &fileName) } //--------------------------------------------------------------------------------------------------------------------- -void VPatternConverter::Save() +auto VPatternConverter::XSDSchemas() -> QHash { - try - { - TestUniqueId(); - } - catch (const VExceptionWrongId &e) - { - Q_UNUSED(e) - throw VException(tr("Error no unique id.")); - } - - VAbstractConverter::Save(); -} - -//--------------------------------------------------------------------------------------------------------------------- -auto VPatternConverter::XSDSchema(unsigned ver) const -> QString -{ - QHash schemas = + static const auto schemas = QHash { std::make_pair(FormatVersion(0, 1, 4), QStringLiteral("://schema/pattern/v0.1.4.xsd")), std::make_pair(FormatVersion(0, 2, 0), QStringLiteral("://schema/pattern/v0.2.0.xsd")), @@ -274,12 +255,23 @@ auto VPatternConverter::XSDSchema(unsigned ver) const -> QString std::make_pair(FormatVersion(0, 9, 2), CurrentSchema) }; - if (schemas.contains(ver)) + return schemas; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPatternConverter::Save() +{ + try { - return schemas.value(ver); + TestUniqueId(); + } + catch (const VExceptionWrongId &e) + { + Q_UNUSED(e) + throw VException(tr("Error no unique id.")); } - InvalidVersion(ver); + VAbstractConverter::Save(); } //--------------------------------------------------------------------------------------------------------------------- @@ -417,6 +409,12 @@ bool VPatternConverter::IsReadOnly() const return GetParametrBool(pattern, *strReadOnly, falseStr); } +//--------------------------------------------------------------------------------------------------------------------- +auto VPatternConverter::Schemas() const -> QHash +{ + return XSDSchemas(); +} + //--------------------------------------------------------------------------------------------------------------------- void VPatternConverter::ToV0_2_0() { @@ -1004,10 +1002,10 @@ QString VPatternConverter::FixMeasurementInFormulaToV0_2_0(const QString &formul "Time to refactor the code."); QScopedPointer cal(new qmu::QmuTokenParser(formula, false, false));// Eval formula - QMap tokens = cal->GetTokens();// Tokens (variables, measurements) + QMap tokens = cal->GetTokens();// Tokens (variables, measurements) delete cal.take(); - QList tKeys = tokens.keys();// Take all tokens positions + QList tKeys = tokens.keys();// Take all tokens positions QList tValues = tokens.values(); QString newFormula = formula;// Local copy for making changes @@ -1018,7 +1016,7 @@ QString VPatternConverter::FixMeasurementInFormulaToV0_2_0(const QString &formul continue; } - int bias = 0; + vsizetype bias = 0; Replace(newFormula, names.value(tValues.at(i)), tKeys.at(i), tValues.at(i), bias); if (bias != 0) {// Translated token has different length than original. Position next tokens need to be corrected. @@ -1038,21 +1036,21 @@ QString VPatternConverter::FixIncrementInFormulaToV0_2_0(const QString &formula, "Time to refactor the code."); qmu::QmuTokenParser *cal = new qmu::QmuTokenParser(formula, false, false);// Eval formula - QMap tokens = cal->GetTokens();// Tokens (variables, measurements) + QMap tokens = cal->GetTokens();// Tokens (variables, measurements) delete cal; - QList tKeys = tokens.keys();// Take all tokens positions + QList tKeys = tokens.keys();// Take all tokens positions QList tValues = tokens.values(); QString newFormula = formula;// Local copy for making changes - for (int i = 0; i < tValues.size(); ++i) + for (vsizetype i = 0; i < tValues.size(); ++i) { if (not names.contains(tValues.at(i))) { continue; } - int bias = 0; + vsizetype bias = 0; Replace(newFormula, "#"+tValues.at(i), tKeys.at(i), tValues.at(i), bias); if (bias != 0) {// Translated token has different length than original. Position next tokens need to be corrected. @@ -1873,7 +1871,7 @@ QDomElement VPatternConverter::AddTagPatternLabelV0_5_1() QDomElement element = createElement(*strPatternLabel); QDomElement pattern = documentElement(); - for (int i = tags.indexOf(element.tagName())-1; i >= 0; --i) + for (vsizetype i = tags.indexOf(element.tagName())-1; i >= 0; --i) { const QDomNodeList list = elementsByTagName(tags.at(i)); if (not list.isEmpty()) diff --git a/src/libs/ifc/xml/vpatternconverter.h b/src/libs/ifc/xml/vpatternconverter.h index a52c9aed1..88f2b93b4 100644 --- a/src/libs/ifc/xml/vpatternconverter.h +++ b/src/libs/ifc/xml/vpatternconverter.h @@ -40,6 +40,7 @@ #include #include "vabstractconverter.h" +#include "../vmisc/projectversion.h" class QDomElement; @@ -55,6 +56,8 @@ public: static Q_DECL_CONSTEXPR const unsigned PatternMinVer = FormatVersion(0, 1, 4); static Q_DECL_CONSTEXPR const unsigned PatternMaxVer = FormatVersion(0, 9, 2); + static auto XSDSchemas() -> QHash ; + protected: void Save() override; @@ -64,12 +67,13 @@ protected: virtual QString MinVerStr() const override; virtual QString MaxVerStr() const override; - virtual QString XSDSchema(unsigned ver) const override; - virtual void ApplyPatches() override; - virtual void DowngradeToCurrentMaxVersion() override; + virtual void ApplyPatches() override; + virtual void DowngradeToCurrentMaxVersion() override; virtual bool IsReadOnly() const override; + auto Schemas() const -> QHash override; + private: Q_DISABLE_COPY_MOVE(VPatternConverter) // NOLINT static const QString PatternMinVerStr; diff --git a/src/libs/ifc/xml/vvitconverter.cpp b/src/libs/ifc/xml/vvitconverter.cpp index 38d2b1982..b1d9992fd 100644 --- a/src/libs/ifc/xml/vvitconverter.cpp +++ b/src/libs/ifc/xml/vvitconverter.cpp @@ -36,9 +36,6 @@ #include #include #include -#include -#include -#include #include #include "../exception/vexception.h" @@ -79,9 +76,9 @@ VVITConverter::VVITConverter(const QString &fileName) } //--------------------------------------------------------------------------------------------------------------------- -QString VVITConverter::XSDSchema(unsigned ver) const +auto VVITConverter::XSDSchemas() -> QHash { - QHash schemas = + static auto schemas = QHash { std::make_pair(FormatVersion(0, 2, 0), QStringLiteral("://schema/individual_measurements/v0.2.0.xsd")), std::make_pair(FormatVersion(0, 3, 0), QStringLiteral("://schema/individual_measurements/v0.3.0.xsd")), @@ -94,14 +91,7 @@ QString VVITConverter::XSDSchema(unsigned ver) const std::make_pair(FormatVersion(0, 5, 2), CurrentSchema), }; - if (schemas.contains(ver)) - { - return schemas.value(ver); - } - else - { - InvalidVersion(ver); - } + return schemas; } //--------------------------------------------------------------------------------------------------------------------- @@ -159,6 +149,12 @@ bool VVITConverter::IsReadOnly() const return UniqueTagText(*strTagRead_Only, falseStr) == trueStr; } +//--------------------------------------------------------------------------------------------------------------------- +auto VVITConverter::Schemas() const -> QHash +{ + return XSDSchemas(); +} + //--------------------------------------------------------------------------------------------------------------------- void VVITConverter::AddNewTagsForV0_3_0() { diff --git a/src/libs/ifc/xml/vvitconverter.h b/src/libs/ifc/xml/vvitconverter.h index dcb6c6ad3..e25cabe62 100644 --- a/src/libs/ifc/xml/vvitconverter.h +++ b/src/libs/ifc/xml/vvitconverter.h @@ -35,7 +35,7 @@ #include #include "vabstractmconverter.h" -#include "vabstractconverter.h" +#include "../vmisc/projectversion.h" class QDomElement; @@ -51,6 +51,8 @@ public: static Q_DECL_CONSTEXPR const unsigned MeasurementMinVer = FormatVersion(0, 2, 0); static Q_DECL_CONSTEXPR const unsigned MeasurementMaxVer = FormatVersion(0, 5, 2); + static auto XSDSchemas() -> QHash ; + protected: virtual unsigned MinVer() const override; virtual unsigned MaxVer() const override; @@ -58,10 +60,11 @@ protected: virtual QString MinVerStr() const override; virtual QString MaxVerStr() const override; - virtual QString XSDSchema(unsigned ver) const override; - virtual void ApplyPatches() override; - virtual void DowngradeToCurrentMaxVersion() override; - virtual bool IsReadOnly() const override; + virtual void ApplyPatches() override; + virtual void DowngradeToCurrentMaxVersion() override; + virtual bool IsReadOnly() const override; + + auto Schemas() const -> QHash override; private: Q_DISABLE_COPY_MOVE(VVITConverter) // NOLINT diff --git a/src/libs/ifc/xml/vvstconverter.cpp b/src/libs/ifc/xml/vvstconverter.cpp index 6b5928973..92b7c5387 100644 --- a/src/libs/ifc/xml/vvstconverter.cpp +++ b/src/libs/ifc/xml/vvstconverter.cpp @@ -36,9 +36,6 @@ #include #include #include -#include -#include -#include #include #include "../exception/vexception.h" @@ -76,9 +73,9 @@ VVSTConverter::VVSTConverter(const QString &fileName) } //--------------------------------------------------------------------------------------------------------------------- -auto VVSTConverter::XSDSchema(unsigned ver) const -> QString +auto VVSTConverter::XSDSchemas() -> QHash { - QHash schemas = + static auto schemas = QHash { std::make_pair(FormatVersion(0, 3, 0), QStringLiteral("://schema/multisize_measurements/v0.3.0.xsd")), std::make_pair(FormatVersion(0, 4, 0), QStringLiteral("://schema/multisize_measurements/v0.4.0.xsd")), @@ -93,12 +90,7 @@ auto VVSTConverter::XSDSchema(unsigned ver) const -> QString std::make_pair(FormatVersion(0, 5, 4), CurrentSchema), }; - if (schemas.contains(ver)) - { - return schemas.value(ver); - } - - InvalidVersion(ver); + return schemas; } //--------------------------------------------------------------------------------------------------------------------- @@ -156,6 +148,12 @@ auto VVSTConverter::IsReadOnly() const -> bool return UniqueTagText(*strTagRead_Only, falseStr) == trueStr; } +//--------------------------------------------------------------------------------------------------------------------- +auto VVSTConverter::Schemas() const -> QHash +{ + return XSDSchemas(); +} + //--------------------------------------------------------------------------------------------------------------------- void VVSTConverter::AddNewTagsForV0_4_0() { diff --git a/src/libs/ifc/xml/vvstconverter.h b/src/libs/ifc/xml/vvstconverter.h index 23a749f8d..012230263 100644 --- a/src/libs/ifc/xml/vvstconverter.h +++ b/src/libs/ifc/xml/vvstconverter.h @@ -35,7 +35,7 @@ #include #include "vabstractmconverter.h" -#include "vabstractconverter.h" +#include "../vmisc/projectversion.h" class QDomElement; @@ -51,6 +51,8 @@ public: static Q_DECL_CONSTEXPR const unsigned MeasurementMinVer = FormatVersion(0, 3, 0); static Q_DECL_CONSTEXPR const unsigned MeasurementMaxVer = FormatVersion(0, 5, 4); + static auto XSDSchemas() -> QHash ; + protected: virtual unsigned MinVer() const override; virtual unsigned MaxVer() const override; @@ -58,10 +60,11 @@ protected: virtual QString MinVerStr() const override; virtual QString MaxVerStr() const override; - virtual QString XSDSchema(unsigned ver) const override; - virtual void ApplyPatches() override; - virtual void DowngradeToCurrentMaxVersion() override; - virtual bool IsReadOnly() const override; + virtual void ApplyPatches() override; + virtual void DowngradeToCurrentMaxVersion() override; + virtual bool IsReadOnly() const override; + + auto Schemas() const -> QHash override; private: Q_DISABLE_COPY_MOVE(VVSTConverter) // NOLINT diff --git a/src/libs/ifc/xml/vwatermarkconverter.cpp b/src/libs/ifc/xml/vwatermarkconverter.cpp index 4b26fde3d..118887d1d 100644 --- a/src/libs/ifc/xml/vwatermarkconverter.cpp +++ b/src/libs/ifc/xml/vwatermarkconverter.cpp @@ -52,6 +52,18 @@ VWatermarkConverter::VWatermarkConverter(const QString &fileName) ValidateInputFile(CurrentSchema); } +//--------------------------------------------------------------------------------------------------------------------- +auto VWatermarkConverter::XSDSchemas() -> QHash +{ + static auto schemas = QHash + { + std::make_pair(FormatVersion(1, 0, 0), QStringLiteral("://schema/watermark/v1.0.0.xsd")), + std::make_pair(FormatVersion(1, 1, 0), CurrentSchema) + }; + + return schemas; +} + //--------------------------------------------------------------------------------------------------------------------- unsigned VWatermarkConverter::MinVer() const { @@ -76,23 +88,6 @@ QString VWatermarkConverter::MaxVerStr() const return WatermarkMaxVerStr; } -//--------------------------------------------------------------------------------------------------------------------- -QString VWatermarkConverter::XSDSchema(unsigned ver) const -{ - QHash schemas = - { - std::make_pair(FormatVersion(1, 0, 0), QStringLiteral("://schema/watermark/v1.0.0.xsd")), - std::make_pair(FormatVersion(1, 1, 0), CurrentSchema) - }; - - if (schemas.contains(ver)) - { - return schemas.value(ver); - } - - InvalidVersion(ver); -} - //--------------------------------------------------------------------------------------------------------------------- void VWatermarkConverter::ApplyPatches() { @@ -116,6 +111,12 @@ void VWatermarkConverter::DowngradeToCurrentMaxVersion() Save(); } +//--------------------------------------------------------------------------------------------------------------------- +auto VWatermarkConverter::Schemas() const -> QHash +{ + return XSDSchemas(); +} + //--------------------------------------------------------------------------------------------------------------------- void VWatermarkConverter::ToV1_1_0() { diff --git a/src/libs/ifc/xml/vwatermarkconverter.h b/src/libs/ifc/xml/vwatermarkconverter.h index 246dce5b4..98765b1f5 100644 --- a/src/libs/ifc/xml/vwatermarkconverter.h +++ b/src/libs/ifc/xml/vwatermarkconverter.h @@ -29,6 +29,7 @@ #define VWATERMARKCONVERTER_H #include "vabstractconverter.h" +#include "../vmisc/projectversion.h" class VWatermarkConverter final : public VAbstractConverter { @@ -41,6 +42,8 @@ public: static Q_DECL_CONSTEXPR const unsigned WatermarkMinVer = FormatVersion(1, 0, 0); static Q_DECL_CONSTEXPR const unsigned WatermarkMaxVer = FormatVersion(1, 1, 0); + static auto XSDSchemas() -> QHash ; + protected: virtual unsigned MinVer() const override; virtual unsigned MaxVer() const override; @@ -48,12 +51,13 @@ protected: virtual QString MinVerStr() const override; virtual QString MaxVerStr() const override; - virtual QString XSDSchema(unsigned ver) const override; - virtual void ApplyPatches() override; - virtual void DowngradeToCurrentMaxVersion() override; + virtual void ApplyPatches() override; + virtual void DowngradeToCurrentMaxVersion() override; virtual bool IsReadOnly() const override {return false;} + auto Schemas() const -> QHash override; + private: Q_DISABLE_COPY_MOVE(VWatermarkConverter) // NOLINT static const QString WatermarkMinVerStr; diff --git a/src/libs/ifc/xml/xml.pri b/src/libs/ifc/xml/xml.pri index c142d3cd4..0b78e5809 100644 --- a/src/libs/ifc/xml/xml.pri +++ b/src/libs/ifc/xml/xml.pri @@ -15,7 +15,8 @@ HEADERS += \ $$PWD//vvitconverter.h \ $$PWD//vabstractmconverter.h \ $$PWD/vlabeltemplateconverter.h \ - $$PWD/vwatermarkconverter.h + $$PWD/vwatermarkconverter.h \ + $$PWD/vparsererrorhandler.h SOURCES += \ $$PWD/utils.cpp \ @@ -31,4 +32,5 @@ SOURCES += \ $$PWD//vvitconverter.cpp \ $$PWD//vabstractmconverter.cpp \ $$PWD/vlabeltemplateconverter.cpp \ - $$PWD/vwatermarkconverter.cpp + $$PWD/vwatermarkconverter.cpp \ + $$PWD/vparsererrorhandler.cpp diff --git a/src/libs/qmuparser/qmudef.cpp b/src/libs/qmuparser/qmudef.cpp index 7bc8a9f6c..62f0dc1bf 100644 --- a/src/libs/qmuparser/qmudef.cpp +++ b/src/libs/qmuparser/qmudef.cpp @@ -167,7 +167,8 @@ static int CheckChar(QChar &c, const QLocale &locale, const QChar &decimal, cons } //--------------------------------------------------------------------------------------------------------------------- -int ReadVal(const QString &formula, qreal &val, const QLocale &locale, const QChar &decimal, const QChar &thousand) +qmusizetype ReadVal(const QString &formula, qreal &val, const QLocale &locale, const QChar &decimal, + const QChar &thousand) { // Must not be equal if (decimal == thousand || formula.isEmpty()) @@ -240,8 +241,8 @@ int ReadVal(const QString &formula, qreal &val, const QLocale &locale, const QCh { // Convert to C locale QLocale cLocale(QLocale::C); - const QChar cDecimal = cLocale.decimalPoint(); - const QChar cThousand = cLocale.groupSeparator(); + const QChar cDecimal = LocaleDecimalPoint(cLocale); + const QChar cThousand = LocaleGroupSeparator(cLocale); if (locale != cLocale && (cDecimal != decimal || cThousand != thousand)) { if (decimal == cThousand) @@ -265,11 +266,9 @@ int ReadVal(const QString &formula, qreal &val, const QLocale &locale, const QCh val = d; return buf.size(); } - else - { - val = 0; - return -1; - } + + val = 0; + return -1; } buf.append(c); @@ -296,24 +295,24 @@ QString NameRegExp() for(const auto &locale : allLocales) { - if (not positiveSigns.contains(locale.positiveSign())) + if (not positiveSigns.contains(LocalePositiveSign(locale))) { - positiveSigns.append(locale.positiveSign()); + positiveSigns.append(LocalePositiveSign(locale)); } - if (not negativeSigns.contains(locale.negativeSign())) + if (not negativeSigns.contains(LocaleNegativeSign(locale))) { - negativeSigns.append(locale.negativeSign()); + negativeSigns.append(LocaleNegativeSign(locale)); } - if (not decimalPoints.contains(locale.decimalPoint())) + if (not decimalPoints.contains(LocaleDecimalPoint(locale))) { - decimalPoints.append(locale.decimalPoint()); + decimalPoints.append(LocaleDecimalPoint(locale)); } - if (not groupSeparators.contains(locale.groupSeparator())) + if (not groupSeparators.contains(LocaleGroupSeparator(locale))) { - groupSeparators.append(locale.groupSeparator()); + groupSeparators.append(LocaleGroupSeparator(locale)); } } @@ -335,9 +334,9 @@ QString NameRegExp() } //--------------------------------------------------------------------------------------------------------------------- -int FindFirstNotOf(const QString &string, const QString &chars, int pos) +qmusizetype FindFirstNotOf(const QString &string, const QString &chars, qmusizetype pos) { - int chPos = pos; + qmusizetype chPos = pos; QString::const_iterator it = string.constBegin() + pos; QString::const_iterator end = string.constEnd(); while (it != end) @@ -352,3 +351,284 @@ int FindFirstNotOf(const QString &string, const QString &chars, int pos) return -1; } + +//--------------------------------------------------------------------------------------------------------------------- +bool SupportedLocale(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return locale.positiveSign().size() == 1 && + locale.negativeSign().size() == 1 && + locale.toString(0).size() == 1 && + locale.toString(1).size() == 1 && + locale.toString(2).size() == 1 && + locale.toString(3).size() == 1 && + locale.toString(4).size() == 1 && + locale.toString(5).size() == 1 && + locale.toString(6).size() == 1 && + locale.toString(7).size() == 1 && + locale.toString(8).size() == 1 && + locale.toString(9).size() == 1 && + locale.exponential().size() == 1 && + locale.decimalPoint().size() == 1 && + locale.groupSeparator().size() == 1; +#else + Q_UNUSED(locale) + return true; +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocalePositiveSign(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.positiveSign(); + if (sign.size() == 1) + { + return sign.front(); + } + + return QLocale::c().positiveSign().front(); +#else + return locale.positiveSign(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleNegativeSign(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.negativeSign(); + if (sign.size() == 1) + { + return sign.front(); + } + + return QLocale::c().negativeSign().front(); +#else + return locale.negativeSign(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign0(const QLocale &locale) +{ + const QString sign = locale.toString(0); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'0'}; +#else + return QChar('0'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign1(const QLocale &locale) +{ + const QString sign = locale.toString(1); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'1'}; +#else + return QChar('1'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign2(const QLocale &locale) +{ + const QString sign = locale.toString(2); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'2'}; +#else + return QChar('2'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign3(const QLocale &locale) +{ + const QString sign = locale.toString(3); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'3'}; +#else + return QChar('3'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign4(const QLocale &locale) +{ + const QString sign = locale.toString(4); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'4'}; +#else + return QChar('4'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign5(const QLocale &locale) +{ + const QString sign = locale.toString(5); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'5'}; +#else + return QChar('5'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign6(const QLocale &locale) +{ + const QString sign = locale.toString(6); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'6'}; +#else + return QChar('6'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign7(const QLocale &locale) +{ + const QString sign = locale.toString(7); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'7'}; +#else + return QChar('7'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign8(const QLocale &locale) +{ + const QString sign = locale.toString(8); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'8'}; +#else + return QChar('8'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleSign9(const QLocale &locale) +{ + const QString sign = locale.toString(9); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'9'}; +#else + return QChar('9'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleExpUpper(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.exponential(); + if (sign.size() == 1) + { + return sign.front().toUpper(); + } + + return QLocale::c().exponential().front().toUpper(); +#else + return locale.exponential().toUpper(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleExpLower(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.exponential(); + if (sign.size() == 1) + { + return sign.front().toLower(); + } + + return QLocale::c().exponential().front().toLower(); +#else + return locale.exponential().toLower(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleDecimalPoint(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.decimalPoint(); + if (sign.size() == 1) + { + return sign.front(); + } + + return QLocale::c().decimalPoint().front(); +#else + return locale.decimalPoint(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar LocaleGroupSeparator(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.groupSeparator(); + if (sign.size() == 1) + { + return sign.front(); + } + + return QLocale::c().groupSeparator().front(); +#else + return locale.groupSeparator(); +#endif +} diff --git a/src/libs/qmuparser/qmudef.h b/src/libs/qmuparser/qmudef.h index 4e2b4ac81..75c5b1058 100644 --- a/src/libs/qmuparser/qmudef.h +++ b/src/libs/qmuparser/qmudef.h @@ -23,6 +23,7 @@ #define QMUDEF_H #include "qmuparser_global.h" +#include "qmuparserdef.h" #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) @@ -83,18 +84,17 @@ #endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #if QT_VERSION < QT_VERSION_CHECK(5, 13, 0) -#define Q_DISABLE_MOVE(Class) \ - Class(Class &&) = delete; \ - Class &operator=(Class &&) = delete; #define Q_DISABLE_COPY_MOVE(Class) \ Q_DISABLE_COPY(Class) \ - Q_DISABLE_MOVE(Class) + Class(Class &&) = delete; \ + Class &operator=(Class &&) = delete; #endif #ifndef Q_DISABLE_ASSIGN_MOVE #define Q_DISABLE_ASSIGN_MOVE(Class) \ Q_DISABLE_ASSIGN(Class) \ - Q_DISABLE_MOVE(Class) + Class(Class &&) = delete; \ + Class &operator=(Class &&) = delete; #endif QT_WARNING_PUSH @@ -106,23 +106,42 @@ class QLocale; class QChar; class QString; -#define INIT_LOCALE_VARIABLES(locale) \ -const QChar positiveSign = (locale).positiveSign(); \ -const QChar negativeSign = (locale).negativeSign(); \ -const QChar sign0 = (locale).toString(0).at(0); \ -const QChar sign1 = (locale).toString(1).at(0); \ -const QChar sign2 = (locale).toString(2).at(0); \ -const QChar sign3 = (locale).toString(3).at(0); \ -const QChar sign4 = (locale).toString(4).at(0); \ -const QChar sign5 = (locale).toString(5).at(0); \ -const QChar sign6 = (locale).toString(6).at(0); \ -const QChar sign7 = (locale).toString(7).at(0); \ -const QChar sign8 = (locale).toString(8).at(0); \ -const QChar sign9 = (locale).toString(9).at(0); \ -const QChar expUpper = (locale).exponential().toUpper(); \ -const QChar expLower = (locale).exponential().toLower(); \ -const QChar decimalPoint = (locale).decimalPoint(); \ -const QChar groupSeparator = (locale).groupSeparator() \ +QMUPARSERSHARED_EXPORT auto SupportedLocale(const QLocale &locale) -> bool; + +QMUPARSERSHARED_EXPORT auto LocalePositiveSign(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleNegativeSign(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign0(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign1(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign2(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign3(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign4(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign5(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign6(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign7(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign8(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleSign9(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleExpUpper(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleExpLower(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleDecimalPoint(const QLocale &locale) -> QChar; +QMUPARSERSHARED_EXPORT auto LocaleGroupSeparator(const QLocale &locale) -> QChar; + +#define INIT_LOCALE_VARIABLES(locale) \ +const QChar positiveSign = LocalePositiveSign((locale)); \ +const QChar negativeSign = LocaleNegativeSign((locale)); \ +const QChar sign0 = LocaleSign0((locale)); \ +const QChar sign1 = LocaleSign1((locale)); \ +const QChar sign2 = LocaleSign2((locale)); \ +const QChar sign3 = LocaleSign3((locale)); \ +const QChar sign4 = LocaleSign4((locale)); \ +const QChar sign5 = LocaleSign5((locale)); \ +const QChar sign6 = LocaleSign6((locale)); \ +const QChar sign7 = LocaleSign7((locale)); \ +const QChar sign8 = LocaleSign8((locale)); \ +const QChar sign9 = LocaleSign9((locale)); \ +const QChar expUpper = LocaleExpUpper((locale)); \ +const QChar expLower = LocaleExpLower((locale)); \ +const QChar decimalPoint = LocaleDecimalPoint((locale)); \ +const QChar groupSeparator = LocaleGroupSeparator((locale)); QMUPARSERSHARED_EXPORT QString NameRegExp(); @@ -135,19 +154,18 @@ static inline bool QmuFuzzyComparePossibleNulls(double p1, double p2) { return qFuzzyIsNull(p2); } - else if(qFuzzyIsNull(p2)) + + if(qFuzzyIsNull(p2)) { return false; } - else - { - return qFuzzyCompare(p1, p2); - } + + return qFuzzyCompare(p1, p2); } -QMUPARSERSHARED_EXPORT int ReadVal(const QString &formula, qreal &val, const QLocale &locale, const QChar &decimal, - const QChar &thousand); +QMUPARSERSHARED_EXPORT qmusizetype ReadVal(const QString &formula, qreal &val, const QLocale &locale, + const QChar &decimal, const QChar &thousand); -QMUPARSERSHARED_EXPORT int FindFirstNotOf(const QString &string, const QString &chars, int pos = 0); +QMUPARSERSHARED_EXPORT qmusizetype FindFirstNotOf(const QString &string, const QString &chars, qmusizetype pos = 0); #endif // QMUDEF_H diff --git a/src/libs/qmuparser/qmuformulabase.cpp b/src/libs/qmuparser/qmuformulabase.cpp index 28f610ea4..9bd0b3812 100644 --- a/src/libs/qmuparser/qmuformulabase.cpp +++ b/src/libs/qmuparser/qmuformulabase.cpp @@ -25,9 +25,6 @@ #include #include #include -#include -#include -#include #include #include "qmudef.h" @@ -150,8 +147,8 @@ void QmuFormulaBase::SetSepForTr(bool osSeparator, bool fromUser) setCNumbers(not osSeparator); if (osSeparator) { - setDecimalPoint(loc.decimalPoint()); - setThousandsSeparator(loc.groupSeparator()); + setDecimalPoint(LocaleDecimalPoint(loc)); + setThousandsSeparator(LocaleGroupSeparator(loc)); return; } } @@ -180,9 +177,9 @@ void QmuFormulaBase::SetSepForEval() * @param map map with tokens * @param val token that need delete */ -void QmuFormulaBase::RemoveAll(QMap &map, const QString &val) +void QmuFormulaBase::RemoveAll(QMap &map, const QString &val) { - const QList listKeys = map.keys(val);//Take all keys that contain token. + const QList listKeys = map.keys(val);//Take all keys that contain token. for (auto key : listKeys) { map.remove(key); diff --git a/src/libs/qmuparser/qmuformulabase.h b/src/libs/qmuparser/qmuformulabase.h index d8d2061be..bbcc43a13 100644 --- a/src/libs/qmuparser/qmuformulabase.h +++ b/src/libs/qmuparser/qmuformulabase.h @@ -45,7 +45,7 @@ public: void SetSepForTr(bool osSeparator, bool fromUser); - static void RemoveAll(QMap &map, const QString &val); + static void RemoveAll(QMap &map, const QString &val); protected: static qreal* AddVariable(const QString &a_szName, void *a_pUserData); diff --git a/src/libs/qmuparser/qmuparser.cpp b/src/libs/qmuparser/qmuparser.cpp index 3b1dc9f71..12e850e17 100644 --- a/src/libs/qmuparser/qmuparser.cpp +++ b/src/libs/qmuparser/qmuparser.cpp @@ -23,9 +23,6 @@ #include #include -#include -#include -#include #include #include #include @@ -302,7 +299,7 @@ qreal QmuParser::FMod(qreal number, qreal denom) * @param [in] a_afArg Vector with the function arguments * @param [in] a_iArgc The size of a_afArg */ -qreal QmuParser::Sum(const qreal *a_afArg, int a_iArgc) +qreal QmuParser::Sum(const qreal *a_afArg, qmusizetype a_iArgc) { if (a_iArgc == 0) { @@ -323,7 +320,7 @@ qreal QmuParser::Sum(const qreal *a_afArg, int a_iArgc) * @param [in] a_afArg Vector with the function arguments * @param [in] a_iArgc The size of a_afArg */ -qreal QmuParser::Avg(const qreal *a_afArg, int a_iArgc) +qreal QmuParser::Avg(const qreal *a_afArg, qmusizetype a_iArgc) { if (a_iArgc == 0) { @@ -344,7 +341,7 @@ qreal QmuParser::Avg(const qreal *a_afArg, int a_iArgc) * @param [in] a_afArg Vector with the function arguments * @param [in] a_iArgc The size of a_afArg */ -qreal QmuParser::Min(const qreal *a_afArg, int a_iArgc) +qreal QmuParser::Min(const qreal *a_afArg, qmusizetype a_iArgc) { if (a_iArgc == 0) { @@ -365,7 +362,7 @@ qreal QmuParser::Min(const qreal *a_afArg, int a_iArgc) * @param [in] a_afArg Vector with the function arguments * @param [in] a_iArgc The size of a_afArg */ -qreal QmuParser::Max(const qreal *a_afArg, int a_iArgc) +qreal QmuParser::Max(const qreal *a_afArg, qmusizetype a_iArgc) { if (a_iArgc == 0) { @@ -388,12 +385,13 @@ qreal QmuParser::Max(const qreal *a_afArg, int a_iArgc) * @param [out] a_fVal Pointer where the value should be stored in case one is found. * @return 1 if a value was found 0 otherwise. */ -int QmuParser::IsVal(const QString &a_szExpr, int *a_iPos, qreal *a_fVal, const QLocale &locale, bool cNumbers, +int QmuParser::IsVal(const QString &a_szExpr, qmusizetype *a_iPos, qreal *a_fVal, const QLocale &locale, bool cNumbers, const QChar &decimal, const QChar &thousand) { qreal fVal(0); - int pos = ReadVal(a_szExpr, fVal, locale != QLocale::c() && cNumbers ? QLocale::c() : locale, decimal, thousand); + qmusizetype pos = ReadVal(a_szExpr, fVal, locale != QLocale::c() && cNumbers ? QLocale::c() : locale, decimal, + thousand); if (pos == -1) { @@ -443,21 +441,45 @@ void QmuParser::InitFun() DefineFun(QStringLiteral("degTorad"), DegreeToRadian); DefineFun(QStringLiteral("radTodeg"), RadianToDegree); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + #define QSIN_FUN qSin + #define QCOS_FUN qCos + #define QTAN_FUN qTan + #define QASIN_FUN qAsin + #define QACOS_FUN qAcos + #define QATAN_FUN qAtan + #define QATAN2_FUN qAtan2 + #define QLN_FUN qLn + #define QEXP_FUN qExp + #define QSQRT_FUN qSqrt +#else + #define QSIN_FUN qSin + #define QCOS_FUN qCos + #define QTAN_FUN qTan + #define QASIN_FUN qAsin + #define QACOS_FUN qAcos + #define QATAN_FUN qAtan + #define QATAN2_FUN qAtan2 + #define QLN_FUN qLn + #define QEXP_FUN qExp + #define QSQRT_FUN qSqrt +#endif + // trigonometric functions - DefineFun(QStringLiteral("sin"), qSin); - DefineFun(QStringLiteral("cos"), qCos); - DefineFun(QStringLiteral("tan"), qTan); - DefineFun(QStringLiteral("sinD"), SinD); - DefineFun(QStringLiteral("cosD"), CosD); - DefineFun(QStringLiteral("tanD"), TanD); + DefineFun(QStringLiteral("sin"), QSIN_FUN); + DefineFun(QStringLiteral("cos"), QCOS_FUN); + DefineFun(QStringLiteral("tan"), QTAN_FUN); + DefineFun(QStringLiteral("sinD"), SinD); + DefineFun(QStringLiteral("cosD"), CosD); + DefineFun(QStringLiteral("tanD"), TanD); // arcus functions - DefineFun(QStringLiteral("asin"), qAsin); - DefineFun(QStringLiteral("acos"), qAcos); - DefineFun(QStringLiteral("atan"), qAtan); - DefineFun(QStringLiteral("atan2"), qAtan2); - DefineFun(QStringLiteral("asinD"), ASinD); - DefineFun(QStringLiteral("acosD"), ACosD); - DefineFun(QStringLiteral("atanD"), ATanD); + DefineFun(QStringLiteral("asin"), QASIN_FUN); + DefineFun(QStringLiteral("acos"), QACOS_FUN); + DefineFun(QStringLiteral("atan"), QATAN_FUN); + DefineFun(QStringLiteral("atan2"), QATAN2_FUN); + DefineFun(QStringLiteral("asinD"), ASinD); + DefineFun(QStringLiteral("acosD"), ACosD); + DefineFun(QStringLiteral("atanD"), ATanD); // hyperbolic functions DefineFun(QStringLiteral("sinh"), Sinh); DefineFun(QStringLiteral("cosh"), Cosh); @@ -470,10 +492,10 @@ void QmuParser::InitFun() DefineFun(QStringLiteral("log2"), Log2); DefineFun(QStringLiteral("log10"), Log10); DefineFun(QStringLiteral("log"), Log10); - DefineFun(QStringLiteral("ln"), qLn); + DefineFun(QStringLiteral("ln"), QLN_FUN); // misc - DefineFun(QStringLiteral("exp"), qExp); - DefineFun(QStringLiteral("sqrt"), qSqrt); + DefineFun(QStringLiteral("exp"), QEXP_FUN); + DefineFun(QStringLiteral("sqrt"), QSQRT_FUN); DefineFun(QStringLiteral("sign"), Sign); DefineFun(QStringLiteral("rint"), Rint); DefineFun(QStringLiteral("r2cm"), R2CM); @@ -509,11 +531,11 @@ void QmuParser::InitConst() */ void QmuParser::InitOprt() { - DefineInfixOprt(m_locale.negativeSign(), UnaryMinus); + DefineInfixOprt(LocaleNegativeSign(m_locale), UnaryMinus); } //--------------------------------------------------------------------------------------------------------------------- -void QmuParser::OnDetectVar(const QString &pExpr, int &nStart, int &nEnd) +void QmuParser::OnDetectVar(const QString &pExpr, qmusizetype &nStart, qmusizetype &nEnd) { Q_UNUSED(pExpr) Q_UNUSED(nStart) diff --git a/src/libs/qmuparser/qmuparser.h b/src/libs/qmuparser/qmuparser.h index c91974df5..5da818713 100644 --- a/src/libs/qmuparser/qmuparser.h +++ b/src/libs/qmuparser/qmuparser.h @@ -58,11 +58,11 @@ namespace qmu virtual void InitFun() override; virtual void InitConst() override; virtual void InitOprt() override; - virtual void OnDetectVar(const QString &pExpr, int &nStart, int &nEnd) override; + virtual void OnDetectVar(const QString &pExpr, qmusizetype &nStart, qmusizetype &nEnd) override; qreal Diff(qreal *a_Var, qreal a_fPos, qreal a_fEpsilon = 0) const; protected: - static int IsVal(const QString &a_szExpr, int *a_iPos, qreal *a_fVal, const QLocale &locale, bool cNumbers, - const QChar &decimal, const QChar &thousand); + static int IsVal(const QString &a_szExpr, qmusizetype *a_iPos, qreal *a_fVal, const QLocale &locale, + bool cNumbers, const QChar &decimal, const QChar &thousand); // hyperbolic functions static qreal Sinh(qreal); static qreal Cosh(qreal); @@ -96,10 +96,10 @@ namespace qmu // !!! Unary Minus is a MUST if you want to use negative signs !!! static qreal UnaryMinus(qreal v); // Functions with variable number of arguments - static qreal Sum(const qreal*, int); // sum - static qreal Avg(const qreal*, int); // mean value - static qreal Min(const qreal*, int); // minimum - static qreal Max(const qreal*, int); // maximum + static qreal Sum(const qreal*, qmusizetype); // sum + static qreal Avg(const qreal*, qmusizetype); // mean value + static qreal Min(const qreal*, qmusizetype); // minimum + static qreal Max(const qreal*, qmusizetype); // maximum }; QT_WARNING_POP diff --git a/src/libs/qmuparser/qmuparserbase.cpp b/src/libs/qmuparser/qmuparserbase.cpp index bc61fa601..339697714 100644 --- a/src/libs/qmuparser/qmuparserbase.cpp +++ b/src/libs/qmuparser/qmuparserbase.cpp @@ -64,8 +64,8 @@ const QStringList QmuParserBase::c_DefaultOprt = QStringList()<< "<=" << ">=" << */ QmuParserBase::QmuParserBase() : m_locale(QLocale::c()), - m_decimalPoint(QLocale::c().decimalPoint()), - m_thousandsSeparator(QLocale::c().groupSeparator()), + m_decimalPoint(LocaleDecimalPoint(QLocale::c())), + m_thousandsSeparator(LocaleGroupSeparator(QLocale::c())), m_FunDef(), m_pTokenReader(), m_pParseFormula(&QmuParserBase::ParseString), @@ -85,8 +85,8 @@ QmuParserBase::QmuParserBase() m_nIfElseCounter(0), m_vStackBuffer(), m_nFinalResultIdx(0), - m_Tokens(QMap()), - m_Numbers(QMap()), + m_Tokens(QMap()), + m_Numbers(QMap()), allowSubexpressions(true) { InitTokenReader(); @@ -121,8 +121,8 @@ QmuParserBase::QmuParserBase(const QmuParserBase &a_Parser) m_nIfElseCounter(0), m_vStackBuffer(), m_nFinalResultIdx(0), - m_Tokens(QMap()), - m_Numbers(QMap()), + m_Tokens(QMap()), + m_Numbers(QMap()), allowSubexpressions(true) { m_pTokenReader.reset(new token_reader_type(this)); @@ -204,8 +204,8 @@ void QmuParserBase::Assign(const QmuParserBase &a_Parser) void QmuParserBase::ResetLocale() { setLocale(QLocale::c()); - m_decimalPoint = m_locale.decimalPoint(); - m_thousandsSeparator = m_locale.groupSeparator(); + m_decimalPoint = LocaleDecimalPoint(m_locale); + m_thousandsSeparator = LocaleGroupSeparator(m_locale); m_cNumbers = false; SetArgSep(';'); } @@ -229,7 +229,7 @@ void QmuParserBase::ReInit() const } //--------------------------------------------------------------------------------------------------------------------- -void QmuParserBase::OnDetectVar(const QString &pExpr, int &nStart, int &nEnd) +void QmuParserBase::OnDetectVar(const QString &pExpr, qmusizetype &nStart, qmusizetype &nEnd) { Q_UNUSED(pExpr) Q_UNUSED(nStart) @@ -440,7 +440,7 @@ void QmuParserBase::SetExpr(const QString &a_sExpr) { // Check locale compatibility std::locale loc; - if (m_pTokenReader->GetArgSep()==std::use_facet >(loc).decimal_point()) + if (m_pTokenReader->GetArgSep() == QChar(std::use_facet >(loc).decimal_point())) { Error(ecLOCALE); } @@ -1023,7 +1023,7 @@ qreal QmuParserBase::ParseCmdCodeBulk(int nOffset, int nThreadID) const qreal *Stack = ((nOffset==0) && (nThreadID==0)) ? &m_vStackBuffer[0] : &m_vStackBuffer[nThreadID * (m_vStackBuffer.size() / s_MaxNumOpenMPThreads)]; qreal buf; - int sidx(0); + qmusizetype sidx(0); for (const SToken *pTok = m_vRPN.GetBase(); pTok->Cmd!=cmEND ; ++pTok) { switch (pTok->Cmd) @@ -1143,7 +1143,7 @@ QT_WARNING_POP // Next is treatment of numeric functions case cmFUNC: { - int iArgCount = pTok->Fun.argc; + qmusizetype iArgCount = pTok->Fun.argc; QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Wcast-function-type") @@ -1224,7 +1224,7 @@ QT_WARNING_DISABLE_MSVC(4191) sidx -= pTok->Fun.argc -1; // The index of the string argument in the string table - int iIdxStack = pTok->Fun.idx; + qmusizetype iIdxStack = pTok->Fun.idx; Q_ASSERT( iIdxStack>=0 && iIdxStackFun.argc) // switch according to argument count @@ -1248,7 +1248,7 @@ QT_WARNING_DISABLE_MSVC(4191) } case cmFUNC_BULK: { - int iArgCount = pTok->Fun.argc; + qmusizetype iArgCount = pTok->Fun.argc; // switch according to argument count switch (iArgCount) @@ -1648,7 +1648,7 @@ qreal QmuParserBase::ParseString() const * @param a_sTok [in] The token string representation associated with the error. * @throw ParserException always throws thats the only purpose of this function. */ -void Q_NORETURN QmuParserBase::Error(EErrorCodes a_iErrc, int a_iPos, const QString &a_sTok) const +Q_NORETURN void QmuParserBase::Error(EErrorCodes a_iErrc, qmusizetype a_iPos, const QString &a_sTok) const { throw qmu::QmuParserError (a_iErrc, a_sTok, m_pTokenReader->GetExpr(), a_iPos); } @@ -1898,11 +1898,7 @@ void QmuParserBase::StackDump(const QStack &a_stVal, const QStack GetTokens() const; - QMap GetNumbers() const; + QMap GetTokens() const; + QMap GetNumbers() const; void DefineNameChars(const QString &a_szCharset); void DefineOprtChars(const QString &a_szCharset); void DefineInfixOprtChars(const QString &a_szCharset); @@ -121,7 +121,7 @@ public: const QString& ValidInfixOprtChars() const; void SetArgSep(char_type cArgSep); QChar GetArgSep() const; - void Q_NORETURN Error(EErrorCodes a_iErrc, int a_iPos = -1, const QString &a_sTok = QString() ) const; + Q_NORETURN void Error(EErrorCodes a_iErrc, qmusizetype a_iPos = -1, const QString &a_sTok = QString() ) const; template void DefineFun(const QString &a_strName, T a_pFun, bool a_bAllowOpt = true); @@ -162,7 +162,7 @@ protected: virtual void InitFun() = 0; virtual void InitConst() = 0; virtual void InitOprt() = 0; - virtual void OnDetectVar(const QString &pExpr, int &nStart, int &nEnd); + virtual void OnDetectVar(const QString &pExpr, qmusizetype &nStart, qmusizetype &nEnd); /** * @brief A facet class used to change decimal and thousands separator. */ @@ -256,8 +256,8 @@ private: // items merely used for caching state information mutable valbuf_type m_vStackBuffer; ///< This is merely a buffer used for the stack in the cmd parsing routine mutable int m_nFinalResultIdx; - mutable QMap m_Tokens;///< Keep all tokens that we can translate - mutable QMap m_Numbers;///< Keep all numbers what exist in formula + mutable QMap m_Tokens;///< Keep all tokens that we can translate + mutable QMap m_Numbers;///< Keep all numbers what exist in formula bool allowSubexpressions; @@ -337,13 +337,13 @@ inline const QStringList &QmuParserBase::GetOprtDef() } //--------------------------------------------------------------------------------------------------------------------- -inline QMap QmuParserBase::GetTokens() const +inline QMap QmuParserBase::GetTokens() const { return m_Tokens; } //--------------------------------------------------------------------------------------------------------------------- -inline QMap QmuParserBase::GetNumbers() const +inline QMap QmuParserBase::GetNumbers() const { return m_Numbers; } diff --git a/src/libs/qmuparser/qmuparserbytecode.cpp b/src/libs/qmuparser/qmuparserbytecode.cpp index 1123e3a9f..e727ad25a 100644 --- a/src/libs/qmuparser/qmuparserbytecode.cpp +++ b/src/libs/qmuparser/qmuparserbytecode.cpp @@ -139,7 +139,7 @@ void QmuParserByteCode::AddVal(qreal a_fVal) //--------------------------------------------------------------------------------------------------------------------- void QmuParserByteCode::ConstantFolding(ECmdCode a_Oprt) { - int sz = m_vRPN.size(); + qmusizetype sz = m_vRPN.size(); qreal &x = m_vRPN[sz-2].Val.data2, &y = m_vRPN[sz-1].Val.data2; switch (a_Oprt) @@ -216,7 +216,7 @@ void QmuParserByteCode::ConstantFolding(ECmdCode a_Oprt) } //--------------------------------------------------------------------------------------------------------------------- -void QmuParserByteCode::OpPOW(int sz, bool &bOptimized) +void QmuParserByteCode::OpPOW(qmusizetype sz, bool &bOptimized) { if (m_vRPN.at(sz-2).Cmd == cmVAR && m_vRPN.at(sz-1).Cmd == cmVAL) //-V807 { @@ -242,7 +242,7 @@ void QmuParserByteCode::OpPOW(int sz, bool &bOptimized) } //--------------------------------------------------------------------------------------------------------------------- -void QmuParserByteCode::OpSUBADD(ECmdCode a_Oprt, int sz, bool &bOptimized) +void QmuParserByteCode::OpSUBADD(ECmdCode a_Oprt, qmusizetype sz, bool &bOptimized) { if ( (m_vRPN.at(sz-1).Cmd == cmVAR && m_vRPN.at(sz-2).Cmd == cmVAL) || (m_vRPN.at(sz-1).Cmd == cmVAL && m_vRPN.at(sz-2).Cmd == cmVAR) || @@ -273,7 +273,7 @@ void QmuParserByteCode::OpSUBADD(ECmdCode a_Oprt, int sz, bool &bOptimized) } //--------------------------------------------------------------------------------------------------------------------- -void QmuParserByteCode::OpMUL(int sz, bool &bOptimized) +void QmuParserByteCode::OpMUL(qmusizetype sz, bool &bOptimized) { if ( (m_vRPN.at(sz-1).Cmd == cmVAR && m_vRPN.at(sz-2).Cmd == cmVAL) || (m_vRPN.at(sz-1).Cmd == cmVAL && m_vRPN.at(sz-2).Cmd == cmVAR) ) @@ -319,7 +319,7 @@ void QmuParserByteCode::OpMUL(int sz, bool &bOptimized) } //--------------------------------------------------------------------------------------------------------------------- -void QmuParserByteCode::OpDIV(int sz, bool &bOptimized) +void QmuParserByteCode::OpDIV(qmusizetype sz, bool &bOptimized) { if (m_vRPN.at(sz-1).Cmd == cmVAL && m_vRPN.at(sz-2).Cmd == cmVARMUL && not qFuzzyIsNull(m_vRPN.at(sz-1).Val.data2)) @@ -370,7 +370,7 @@ void QmuParserByteCode::AddOp(ECmdCode a_Oprt) return; } - int sz = m_vRPN.size(); + qmusizetype sz = m_vRPN.size(); // Check for foldable constants like: // cmVAL cmVAL cmADD @@ -477,7 +477,7 @@ void QmuParserByteCode::AddFun(generic_fun_type a_pFun, int a_iArgc) * @param a_iArgc Number of arguments, negative numbers indicate multiarg functions. * @param a_pFun Pointer to function callback. */ -void QmuParserByteCode::AddBulkFun(generic_fun_type a_pFun, int a_iArgc) +void QmuParserByteCode::AddBulkFun(generic_fun_type a_pFun, qmusizetype a_iArgc) { m_iStackPos = static_cast(static_cast(m_iStackPos) - a_iArgc + 1); m_iMaxStackSize = qMax(m_iMaxStackSize, m_iStackPos); @@ -497,7 +497,7 @@ void QmuParserByteCode::AddBulkFun(generic_fun_type a_pFun, int a_iArgc) * A string function entry consists of the stack position of the return value, followed by a cmSTRFUNC code, the * function pointer and an index into the string buffer maintained by the parser. */ -void QmuParserByteCode::AddStrFun(generic_fun_type a_pFun, int a_iArgc, int a_iIdx) +void QmuParserByteCode::AddStrFun(generic_fun_type a_pFun, int a_iArgc, qmusizetype a_iIdx) { m_iStackPos = static_cast(static_cast(m_iStackPos) - a_iArgc + 1); diff --git a/src/libs/qmuparser/qmuparserbytecode.h b/src/libs/qmuparser/qmuparserbytecode.h index 694643c42..9fc0a15ce 100644 --- a/src/libs/qmuparser/qmuparserbytecode.h +++ b/src/libs/qmuparser/qmuparserbytecode.h @@ -58,8 +58,8 @@ struct SToken // pointer due to constraints in the ANSI standard which allows // data pointers and function pointers to differ in size. generic_fun_type ptr; - int argc; - int idx; + qmusizetype argc; + qmusizetype idx; } Fun; struct //SOprtData @@ -98,13 +98,13 @@ public: void AddIfElse(ECmdCode a_Oprt); void AddAssignOp(qreal *a_pVar); void AddFun(generic_fun_type a_pFun, int a_iArgc); - void AddBulkFun(generic_fun_type a_pFun, int a_iArgc); - void AddStrFun(generic_fun_type a_pFun, int a_iArgc, int a_iIdx); + void AddBulkFun(generic_fun_type a_pFun, qmusizetype a_iArgc); + void AddStrFun(generic_fun_type a_pFun, int a_iArgc, qmusizetype a_iIdx); void EnableOptimizer(bool bStat); void Finalize(); void clear(); auto GetMaxStackSize() const -> int; - auto GetSize() const -> int; + auto GetSize() const -> qmusizetype; auto GetBase() const -> const SToken*; void AsciiDump(); private: @@ -127,10 +127,10 @@ private: void ConstantFolding(ECmdCode a_Oprt); - void OpPOW(int sz, bool &bOptimized); - void OpSUBADD(ECmdCode a_Oprt, int sz, bool &bOptimized); - void OpMUL(int sz, bool &bOptimized); - void OpDIV(int sz, bool &bOptimized); + void OpPOW(qmusizetype sz, bool &bOptimized); + void OpSUBADD(ECmdCode a_Oprt, qmusizetype sz, bool &bOptimized); + void OpMUL(qmusizetype sz, bool &bOptimized); + void OpDIV(qmusizetype sz, bool &bOptimized); }; //--------------------------------------------------------------------------------------------------------------------- @@ -150,7 +150,7 @@ inline auto QmuParserByteCode::GetMaxStackSize() const -> int * @brief Returns the number of entries in the bytecode. */ // cppcheck-suppress unusedFunction -inline auto QmuParserByteCode::GetSize() const -> int +inline auto QmuParserByteCode::GetSize() const -> qmusizetype { return m_vRPN.size(); } diff --git a/src/libs/qmuparser/qmuparserdef.h b/src/libs/qmuparser/qmuparserdef.h index a5bda09a4..937e32314 100644 --- a/src/libs/qmuparser/qmuparserdef.h +++ b/src/libs/qmuparser/qmuparserdef.h @@ -26,8 +26,11 @@ #include #include #include +#include +#ifdef __INTEL_COMPILER #include "qmuparserfixes.h" +#endif /** @file @brief This file contains standard definitions used by the parser. @@ -99,6 +102,22 @@ class QLocale; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +using qmusizetype = qsizetype; +#else +using qmusizetype = int; +#endif + +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +namespace Qt +{ +static auto endl = ::endl; +static auto flush = ::flush; +static auto dec = ::dec; +static auto SkipEmptyParts = QString::SkipEmptyParts; +} +#endif + namespace qmu { //------------------------------------------------------------------------------ @@ -224,7 +243,7 @@ typedef std::map varmap_type; typedef std::map valmap_type; /** @brief Type for assigning a string name to an index in the internal string table. */ -typedef std::map strmap_type; +typedef std::map strmap_type; // Parser callbacks @@ -298,7 +317,7 @@ typedef qreal ( *bulkfun_type9 ) ( int, int, qreal, qreal, qreal, qreal, qreal, typedef qreal ( *bulkfun_type10 ) ( int, int, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal, qreal ); /** @brief Callback type used for functions with a variable argument list. */ -typedef qreal ( *multfun_type ) ( const qreal*, int ); +typedef qreal ( *multfun_type ) ( const qreal*, qmusizetype ); /** @brief Callback type used for functions taking a string as an argument. */ typedef qreal ( *strfun_type1 ) ( const QString & ); @@ -310,8 +329,8 @@ typedef qreal ( *strfun_type2 ) ( const QString &, qreal ); typedef qreal ( *strfun_type3 ) ( const QString &, qreal, qreal ); /** @brief Callback used for functions that identify values in a string. */ -typedef int ( *identfun_type ) ( const QString &sExpr, int *nPos, qreal *fVal, const QLocale &locale, bool cNumbers, - const QChar &decimal, const QChar &thousand ); +typedef int ( *identfun_type ) ( const QString &sExpr, qmusizetype *nPos, qreal *fVal, const QLocale &locale, + bool cNumbers, const QChar &decimal, const QChar &thousand ); /** @brief Callback used for variable creation factory functions. */ typedef qreal* ( *facfun_type ) ( const QString &, void* ); diff --git a/src/libs/qmuparser/qmuparsererror.cpp b/src/libs/qmuparser/qmuparsererror.cpp index 987a09c4b..54dad5f2e 100644 --- a/src/libs/qmuparser/qmuparsererror.cpp +++ b/src/libs/qmuparser/qmuparsererror.cpp @@ -203,7 +203,7 @@ QmuParserError::QmuParserError ( const QString &sMsg ) * @param [in] sExpr The expression related to the error. * @param [in] iPos the position in the expression where the error occured. */ -QmuParserError::QmuParserError ( EErrorCodes iErrc, const QString &sTok, const QString &sExpr, int iPos ) +QmuParserError::QmuParserError (EErrorCodes iErrc, const QString &sTok, const QString &sExpr, qmusizetype iPos ) : QException(), m_sMsg(), m_sExpr ( sExpr ), m_sTok ( sTok ), m_iPos ( iPos ), m_iErrc ( iErrc ), m_ErrMsg ( QmuParserErrorMsg::Instance() ) { diff --git a/src/libs/qmuparser/qmuparsererror.h b/src/libs/qmuparser/qmuparsererror.h index 9a85cd40c..5017473c2 100644 --- a/src/libs/qmuparser/qmuparsererror.h +++ b/src/libs/qmuparser/qmuparsererror.h @@ -170,7 +170,7 @@ public: QmuParserError(); explicit QmuParserError ( EErrorCodes a_iErrc ); explicit QmuParserError ( const QString &sMsg ); - QmuParserError ( EErrorCodes a_iErrc, const QString &sTok, const QString &sFormula = QString(), int a_iPos = -1 ); + QmuParserError ( EErrorCodes a_iErrc, const QString &sTok, const QString &sFormula = QString(), qmusizetype a_iPos = -1 ); QmuParserError ( EErrorCodes a_iErrc, int a_iPos, const QString &sTok ); QmuParserError ( const QString &szMsg, int iPos, const QString &sTok = QString() ); QmuParserError ( const QmuParserError &a_Obj ); @@ -180,7 +180,7 @@ public: void SetFormula ( const QString &a_strFormula ); const QString& GetExpr() const; const QString& GetMsg() const; - int GetPos() const; + qmusizetype GetPos() const; const QString& GetToken() const; EErrorCodes GetCode() const; Q_NORETURN virtual void raise() const override; @@ -189,7 +189,7 @@ private: QString m_sMsg; ///< The message string QString m_sExpr; ///< Formula string QString m_sTok; ///< Token related with the error - int m_iPos; ///< Formula position related to the error + qmusizetype m_iPos; ///< Formula position related to the error EErrorCodes m_iErrc; ///< Error code const QmuParserErrorMsg &m_ErrMsg; void Reset(); @@ -228,7 +228,7 @@ inline const QString& QmuParserError::GetMsg() const * * If the error is not related to a distinct position this will return -1 */ -inline int QmuParserError::GetPos() const +inline qmusizetype QmuParserError::GetPos() const { return m_iPos; } diff --git a/src/libs/qmuparser/qmuparsertest.cpp b/src/libs/qmuparser/qmuparsertest.cpp index a090a5eb2..c87f8b21d 100644 --- a/src/libs/qmuparser/qmuparsertest.cpp +++ b/src/libs/qmuparser/qmuparsertest.cpp @@ -74,7 +74,7 @@ QmuParserTester::QmuParserTester(QObject *parent) } //--------------------------------------------------------------------------------------------------------------------- -int QmuParserTester::IsHexVal ( const QString &a_szExpr, int *a_iPos, qreal *a_fVal, const QLocale &locale, +int QmuParserTester::IsHexVal ( const QString &a_szExpr, qmusizetype *a_iPos, qreal *a_fVal, const QLocale &locale, bool cNumbers, const QChar &decimal, const QChar &thousand ) { Q_UNUSED(locale) @@ -102,7 +102,7 @@ int QmuParserTester::IsHexVal ( const QString &a_szExpr, int *a_iPos, qreal *a_f return 1; } - *a_iPos += static_cast(2 + nPos); + *a_iPos += static_cast(2 + nPos); *a_fVal = static_cast(iVal); return 1; } diff --git a/src/libs/qmuparser/qmuparsertest.h b/src/libs/qmuparser/qmuparsertest.h index 66db9d8e1..908f05f1c 100644 --- a/src/libs/qmuparser/qmuparsertest.h +++ b/src/libs/qmuparser/qmuparsertest.h @@ -201,7 +201,7 @@ private: return static_cast( v1 ) & static_cast( v2 ); } - static qreal FirstArg ( const qreal* a_afArg, int a_iArgc ) + static qreal FirstArg ( const qreal* a_afArg, qmusizetype a_iArgc ) { if ( a_iArgc == 0) { @@ -211,7 +211,7 @@ private: return a_afArg[0]; } - static qreal LastArg ( const qreal* a_afArg, int a_iArgc ) + static qreal LastArg ( const qreal* a_afArg, qmusizetype a_iArgc ) { if ( a_iArgc == 0) { @@ -221,7 +221,7 @@ private: return a_afArg[a_iArgc - 1]; } - static qreal Sum ( const qreal* a_afArg, int a_iArgc ) + static qreal Sum ( const qreal* a_afArg, qmusizetype a_iArgc ) { if ( a_iArgc == 0) { @@ -307,8 +307,8 @@ private: } // Custom value recognition - static int IsHexVal (const QString &a_szExpr, int *a_iPos, qreal *a_fVal, const QLocale &locale, bool cNumbers, - const QChar &decimal, const QChar &thousand); + static int IsHexVal (const QString &a_szExpr, qmusizetype *a_iPos, qreal *a_fVal, const QLocale &locale, + bool cNumbers, const QChar &decimal, const QChar &thousand); int TestNames(); int TestSyntax(); diff --git a/src/libs/qmuparser/qmuparsertoken.h b/src/libs/qmuparser/qmuparsertoken.h index 630878c65..82640576b 100644 --- a/src/libs/qmuparser/qmuparsertoken.h +++ b/src/libs/qmuparser/qmuparsertoken.h @@ -215,7 +215,7 @@ public: * Member variables not necessary for variable tokens will be invalidated. * @throw nothrow */ - auto SetString ( const TString &a_strTok, int a_iSize ) -> QmuParserToken& + auto SetString ( const TString &a_strTok, qmusizetype a_iSize ) -> QmuParserToken& { m_iCode = cmSTRING; m_iType = tpSTR; @@ -235,7 +235,7 @@ public: * @param a_iIdx The index the string function result will take in the bytecode parser. * @throw QmuParserError if #a_iIdx<0 or #m_iType!=cmSTRING */ - void SetIdx ( int a_iIdx ) + void SetIdx ( qmusizetype a_iIdx ) { if ( m_iCode != cmSTRING || a_iIdx < 0 ) { @@ -254,7 +254,7 @@ public: * @throw QmuParserError if #m_iIdx<0 or #m_iType!=cmSTRING * @return The index the result will take in the Bytecode calculatin array (#m_iIdx). */ - auto GetIdx() const -> int + auto GetIdx() const -> qmusizetype { if ( m_iIdx < 0 || m_iCode != cmSTRING ) { @@ -465,7 +465,7 @@ private: ECmdCode m_iCode{cmUNKNOWN}; ///< Type of the token; The token type is a constant of type #ECmdCode. ETypeCode m_iType{tpVOID}; void *m_pTok{nullptr}; ///< Stores Token pointer; not applicable for all tokens - int m_iIdx{-1}; ///< An otional index to an external buffer storing the token data + qmusizetype m_iIdx{-1}; ///< An otional index to an external buffer storing the token data TString m_strTok{}; ///< Token string TString m_strVal{}; ///< Value for string variables qreal m_fVal{}; ///< the value diff --git a/src/libs/qmuparser/qmuparsertokenreader.cpp b/src/libs/qmuparser/qmuparsertokenreader.cpp index 733d9ff8b..fbc265607 100644 --- a/src/libs/qmuparser/qmuparsertokenreader.cpp +++ b/src/libs/qmuparser/qmuparsertokenreader.cpp @@ -22,7 +22,6 @@ #include "qmuparsertokenreader.h" #include -#include #include #include #include @@ -284,7 +283,7 @@ auto QmuParserTokenReader::ReadNextToken(const QLocale &locale, bool cNumbers, c // !!! From this point on there is no exit without an exception possible... // QString strTok; - int iEnd = ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ); + qmusizetype iEnd = ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ); if ( iEnd != m_iPos ) { Error ( ecUNASSIGNABLE_TOKEN, m_iPos, strTok ); @@ -319,9 +318,10 @@ void QmuParserTokenReader::SetParent ( QmuParserBase *a_pParent ) */ QT_WARNING_PUSH QT_WARNING_DISABLE_MSVC(4309) -auto QmuParserTokenReader::ExtractToken ( const QString &a_szCharSet, QString &a_sTok, int a_iPos ) const -> int +auto QmuParserTokenReader::ExtractToken ( const QString &a_szCharSet, QString &a_sTok, + qmusizetype a_iPos ) const -> qmusizetype { - int iEnd = FindFirstNotOf(m_strFormula, a_szCharSet, a_iPos); + qmusizetype iEnd = FindFirstNotOf(m_strFormula, a_szCharSet, a_iPos); if (iEnd == -1) { @@ -345,9 +345,9 @@ auto QmuParserTokenReader::ExtractToken ( const QString &a_szCharSet, QString &a * alphabetic characters are allowed in operator tokens. To avoid this this function checks specifically * for operator tokens. */ -auto QmuParserTokenReader::ExtractOperatorToken ( QString &a_sTok, int a_iPos ) const -> int +auto QmuParserTokenReader::ExtractOperatorToken ( QString &a_sTok, qmusizetype a_iPos ) const -> qmusizetype { - int iEnd = FindFirstNotOf(m_strFormula, m_pParser->ValidOprtChars(), a_iPos); + qmusizetype iEnd = FindFirstNotOf(m_strFormula, m_pParser->ValidOprtChars(), a_iPos); if ( iEnd == -1 ) { @@ -381,7 +381,7 @@ auto QmuParserTokenReader::IsBuiltIn ( token_type &a_Tok ) -> bool // check string for operator/function for ( int i = 0; i < pOprtDef.size(); ++i ) { - int len = pOprtDef.at ( i ).length(); + qmusizetype len = pOprtDef.at ( i ).length(); if ( pOprtDef.at ( i ) == m_strFormula.mid ( m_iPos, len ) ) { if (i >= cmLE && i <= cmASSIGN) @@ -485,9 +485,7 @@ auto QmuParserTokenReader::IsArgSep ( token_type &a_Tok ) -> bool if ( m_strFormula.at ( m_iPos ) == m_cArgSep ) { // copy the separator into null terminated string - QString szSep; - szSep[0] = m_cArgSep; - szSep[1] = 0; + QString szSep(m_cArgSep); if ( m_iSynFlags & noARG_SEP ) { @@ -550,7 +548,7 @@ auto QmuParserTokenReader::IsEOF ( token_type &a_Tok ) -> bool auto QmuParserTokenReader::IsInfixOpTok ( token_type &a_Tok ) -> bool { QString sTok; - int iEnd = ExtractToken ( m_pParser->ValidInfixOprtChars(), sTok, m_iPos ); + qmusizetype iEnd = ExtractToken ( m_pParser->ValidInfixOprtChars(), sTok, m_iPos ); if ( iEnd == m_iPos ) { return false; @@ -589,7 +587,7 @@ auto QmuParserTokenReader::IsInfixOpTok ( token_type &a_Tok ) -> bool auto QmuParserTokenReader::IsFunTok ( token_type &a_Tok ) -> bool { QString strTok; - int iEnd = ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ); + qmusizetype iEnd = ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ); if ( iEnd == m_iPos ) { return false; @@ -629,7 +627,7 @@ auto QmuParserTokenReader::IsOprt ( token_type &a_Tok ) -> bool { QString strTok; - int iEnd = ExtractOperatorToken ( strTok, m_iPos ); + qmusizetype iEnd = ExtractOperatorToken ( strTok, m_iPos ); if ( iEnd == m_iPos ) { return false; @@ -719,7 +717,7 @@ auto QmuParserTokenReader::IsPostOpTok ( token_type &a_Tok ) -> bool // Test if there could be a postfix operator QString sTok; - int iEnd = ExtractToken ( m_pParser->ValidOprtChars(), sTok, m_iPos ); + qmusizetype iEnd = ExtractToken ( m_pParser->ValidOprtChars(), sTok, m_iPos ); if ( iEnd == m_iPos ) { return false; @@ -759,7 +757,7 @@ auto QmuParserTokenReader::IsValTok ( token_type &a_Tok, const QLocale &locale, QString strTok; qreal fVal ( 0 ); - int iEnd ( 0 ); + qmusizetype iEnd ( 0 ); // 2.) Check for user defined constant // Read everything that could be a constant name @@ -787,7 +785,7 @@ auto QmuParserTokenReader::IsValTok ( token_type &a_Tok, const QLocale &locale, auto item = m_vIdentFun.begin(); for ( item = m_vIdentFun.begin(); item != m_vIdentFun.end(); ++item ) { - int iStart = m_iPos; + qmusizetype iStart = m_iPos; if ( ( *item ) ( m_strFormula.mid ( m_iPos ), &m_iPos, &fVal, locale, cNumbers, decimal, thousand ) == 1 ) { // 2013-11-27 Issue 2: https://code.google.com/p/muparser/issues/detail?id=2 @@ -820,7 +818,7 @@ auto QmuParserTokenReader::IsVarTok ( token_type &a_Tok ) -> bool } QString strTok; - int iEnd = ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ); + qmusizetype iEnd = ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ); if ( iEnd == m_iPos ) { return false; @@ -859,7 +857,7 @@ auto QmuParserTokenReader::IsStrVarTok ( token_type &a_Tok ) -> bool } QString strTok; - int iEnd = ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ); + qmusizetype iEnd = ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ); if ( iEnd == m_iPos ) { return false; @@ -900,7 +898,7 @@ auto QmuParserTokenReader::IsStrVarTok ( token_type &a_Tok ) -> bool auto QmuParserTokenReader::IsUndefVarTok ( token_type &a_Tok ) -> bool { QString strTok; - int iEnd ( ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ) ); + qmusizetype iEnd ( ExtractToken ( m_pParser->ValidNameChars(), strTok, m_iPos ) ); if ( iEnd == m_iPos ) { return false; @@ -967,7 +965,7 @@ auto QmuParserTokenReader::IsString ( token_type &a_Tok ) -> bool } QString strBuf (m_strFormula.mid(m_iPos + 1)); - int iEnd ( 0 ), iSkip ( 0 ); + qmusizetype iEnd ( 0 ), iSkip ( 0 ); // parser over escaped '\"' end replace them with '"' for ( iEnd = strBuf.indexOf ( "\"" ); iEnd != 0 && iEnd != -1; iEnd = strBuf.indexOf ( "\"", iEnd ) ) @@ -1012,7 +1010,7 @@ auto QmuParserTokenReader::IsString ( token_type &a_Tok ) -> bool * @param a_sTok [in] The token string representation associated with the error. * @throw ParserException always throws thats the only purpose of this function. */ -void Q_NORETURN QmuParserTokenReader::Error ( EErrorCodes a_iErrc, int a_iPos, const QString &a_sTok ) const +Q_NORETURN void QmuParserTokenReader::Error (EErrorCodes a_iErrc, qmusizetype a_iPos, const QString &a_sTok ) const { m_pParser->Error ( a_iErrc, a_iPos, a_sTok ); } diff --git a/src/libs/qmuparser/qmuparsertokenreader.h b/src/libs/qmuparser/qmuparsertokenreader.h index 3abfbd940..71d2f7a46 100644 --- a/src/libs/qmuparser/qmuparsertokenreader.h +++ b/src/libs/qmuparser/qmuparsertokenreader.h @@ -62,7 +62,7 @@ public: void SetVarCreator(facfun_type a_pFactory, void *pUserData); void SetFormula(const QString &a_strFormula); void SetArgSep(char_type cArgSep); - auto GetPos() const -> int; + auto GetPos() const -> qmusizetype; auto GetExpr() const -> const QString&; auto GetUsedVar() -> varmap_type&; auto GetArgSep() const -> QChar; @@ -100,7 +100,7 @@ private: QmuParserBase *m_pParser; QString m_strFormula{}; - int m_iPos{0}; + qmusizetype m_iPos{0}; int m_iSynFlags{0}; bool m_bIgnoreUndefVar{false}; @@ -126,8 +126,8 @@ private: void Assign(const QmuParserTokenReader &a_Reader); void SetParent(QmuParserBase *a_pParent); - auto ExtractToken(const QString &a_szCharSet, QString &a_strTok, int a_iPos) const -> int; - auto ExtractOperatorToken(QString &a_sTok, int a_iPos) const -> int; + auto ExtractToken(const QString &a_szCharSet, QString &a_strTok, qmusizetype a_iPos) const -> qmusizetype; + auto ExtractOperatorToken(QString &a_sTok, qmusizetype a_iPos) const -> qmusizetype; auto IsBuiltIn(token_type &a_Tok) -> bool; auto IsArgSep(token_type &a_Tok) -> bool; @@ -142,7 +142,7 @@ private: auto IsStrVarTok(token_type &a_Tok) -> bool; auto IsUndefVarTok(token_type &a_Tok) -> bool; auto IsString(token_type &a_Tok) -> bool; - void Q_NORETURN Error(EErrorCodes a_iErrc, int a_iPos = -1, const QString &a_sTok = QString() ) const; + Q_NORETURN void Error(EErrorCodes a_iErrc, qmusizetype a_iPos = -1, const QString &a_sTok = QString() ) const; auto SaveBeforeReturn(const token_type &tok) -> token_type&; }; @@ -154,7 +154,7 @@ private: * @return #m_iPos * @throw nothrow */ -inline auto QmuParserTokenReader::GetPos() const -> int +inline auto QmuParserTokenReader::GetPos() const -> qmusizetype { return m_iPos; } @@ -197,7 +197,7 @@ inline void QmuParserTokenReader::IgnoreUndefVar ( bool bIgnore ) //--------------------------------------------------------------------------------------------------------------------- inline void QmuParserTokenReader::SetArgSep ( char_type cArgSep ) { - m_cArgSep = cArgSep; + m_cArgSep = QChar(cArgSep); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/qmuparser/qmutokenparser.cpp b/src/libs/qmuparser/qmutokenparser.cpp index a8840561d..b94d4fb88 100644 --- a/src/libs/qmuparser/qmutokenparser.cpp +++ b/src/libs/qmuparser/qmutokenparser.cpp @@ -22,9 +22,6 @@ #include "qmutokenparser.h" #include -#include -#include -#include #include "qmuparsererror.h" @@ -57,7 +54,6 @@ QmuTokenParser::QmuTokenParser() */ QmuTokenParser::QmuTokenParser(const QString &formula, bool osSeparator, bool fromUser, const QMap &translatedFunctions) - :QmuFormulaBase() { InitCharSets(); SetVarFactory(AddVariable, this); diff --git a/src/libs/qmuparser/stable.h b/src/libs/qmuparser/stable.h index bf49e98e3..601bb9fab 100644 --- a/src/libs/qmuparser/stable.h +++ b/src/libs/qmuparser/stable.h @@ -74,6 +74,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vdxf/libdxfrw/drw_base.h b/src/libs/vdxf/libdxfrw/drw_base.h index 56be2dbd9..32638004c 100644 --- a/src/libs/vdxf/libdxfrw/drw_base.h +++ b/src/libs/vdxf/libdxfrw/drw_base.h @@ -83,18 +83,17 @@ #endif // QT_VERSION < QT_VERSION_CHECK(5, 8, 0) #if QT_VERSION < QT_VERSION_CHECK(5, 13, 0) -#define Q_DISABLE_MOVE(Class) \ - Class(Class &&) = delete; \ - Class &operator=(Class &&) = delete; #define Q_DISABLE_COPY_MOVE(Class) \ Q_DISABLE_COPY(Class) \ - Q_DISABLE_MOVE(Class) + Class(Class &&) = delete; \ + Class &operator=(Class &&) = delete; #endif #ifndef Q_DISABLE_ASSIGN_MOVE #define Q_DISABLE_ASSIGN_MOVE(Class) \ Q_DISABLE_ASSIGN(Class) \ - Q_DISABLE_MOVE(Class) + Class(Class &&) = delete; \ + Class &operator=(Class &&) = delete; #endif typedef signed char dint8; /* 8 bit signed */ @@ -111,7 +110,6 @@ typedef float dfloat32; /* 32 bit floating point */ typedef double ddouble64; /* 64 bit floating point */ typedef long double ddouble80; /* 80 bit floating point */ - namespace DRW { //! Version numbers for the DXF Format. diff --git a/src/libs/vdxf/libdxfrw/intern/drw_textcodec.cpp b/src/libs/vdxf/libdxfrw/intern/drw_textcodec.cpp index a9fcc67c7..856515a9b 100644 --- a/src/libs/vdxf/libdxfrw/intern/drw_textcodec.cpp +++ b/src/libs/vdxf/libdxfrw/intern/drw_textcodec.cpp @@ -4,46 +4,16 @@ #include #include #include -#include #include #include "../drw_base.h" #include "../vmisc/vabstractvalapplication.h" #include "../ifc/exception/vexception.h" -namespace -{ -QMap QtCodecs() -{ - return QMap - { - {"ANSI_874", {"ANSI_874", "CP874", "windows-874", "MS874", "x-windows-874", "TIS-620", "IBM1162", - "x-IBM874"}}, // Latin/Thai - {"ANSI_932", {"ANSI_932", "CP932", "SHIFT-JIS", "SHIFT_JIS", "CSSHIFTJIS", "CSWINDOWS31J", "MS_KANJI", - "X-MS-CP932", "X-SJIS", "EUCJP", "EUC-JP", "CSEUCPKDFMTJAPANESE", "X-EUC", "X-EUC-JP", "IBM-943", - "JIS7"}}, // Japanese - {"ANSI_936", {"ANSI_936", "GBK", "CP936", "MS936", "Windows-936", "GB2312", - "CHINESE"}}, // Chinese PRC GBK (XGB) simplified - {"ANSI_949", {"ANSI_949", "Windows-949", "MS949", "CP949"}}, // Korean - {"ANSI_950", {"ANSI_950", "BIG5", "windows-950-2000", "csBig5", "windows-950", "x-windows-950", "x-big5", - "ms950"}}, // Chinese Big5 (Taiwan, Hong Kong SAR) - {"ANSI_1250", {"ANSI_1250", "CP1250", "windows-1250", "ibm-1250_P100-1995", - "ibm-1250"}}, //Central Europe and Eastern Europe - {"ANSI_1251", {"ANSI_1251", "CP1251", "windows-1251", "ANSI1251", "ibm-5347_P100-1998", - "ibm-5347"}}, // Cyrillic script - {"ANSI_1252", {"ANSI_1252", "CP1252", "windows-1252", "LATIN1", "ISO-8859-1", "CP819", "CSISO", "IBM819", - "ISO_8859-1", "APPLE ROMAN", "ISO8859-1", "ISO8859-15", "ISO-IR-100", "L1", - "IBM 850", "850"}}, // Western Europe - {"ANSI_1253", {"ANSI_1253", "CP1253", "windows-1253"}}, // Greek - {"ANSI_1254", {"ANSI_1254", "CP1254", "windows-1254"}}, // Turkish - {"ANSI_1255", {"ANSI_1255", "CP1255", "windows-1255"}}, // Hebrew - {"ANSI_1256", {"ANSI_1256", "CP1256", "windows-1256", "x-windows-1256S"}}, // Arabic - {"ANSI_1257", {"ANSI_1257", "CP1257", "windows-1257"}}, // Baltic - {"ANSI_1258", {"ANSI_1258", "CP1258", "windows-1258"}}, // Vietnamese - {"UTF-8", {"UTF-8", "UTF8", "UTF8-BIT"}}, - {"UTF-16", {"UTF-16", "UTF16", "UTF16-BIT"}}, - }; -} -} // namespace +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else +#include +#endif DRW_TextCodec::DRW_TextCodec() : version(DRW::AC1021) @@ -123,29 +93,22 @@ void DRW_TextCodec::setCodePage(const std::string &c, bool dxfFormat){ if (version < DRW::AC1021) { if (cp == "UTF-8") - { //DXF older than 2007 are write in win codepages + { // DXF older than 2007 are write in win codepages cp = "ANSI_1252"; } conv = DRW_TextCodec::CodecForName(QString::fromStdString(cp)); } else { - if (dxfFormat) - { - conv = DRW_TextCodec::CodecForName(QString::fromStdString("UTF-8")); - } - else - { - conv = DRW_TextCodec::CodecForName(QString::fromStdString("UTF-16")); - } + conv = DRW_TextCodec::CodecForName(dxfFormat ? QStringLiteral("UTF-8") : QStringLiteral("UTF-16")); } if (conv == nullptr) { const QString errorMsg = QCoreApplication::translate("DRW_TextCodec", "No available codec for code page '%1'.") .arg(cp.c_str()); - VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : - qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; + VAbstractApplication::VApp()->IsPedantic() + ? throw VException(errorMsg) : qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; if (version < DRW::AC1021 && cp == "UTF-8") { @@ -157,7 +120,7 @@ void DRW_TextCodec::setCodePage(const std::string &c, bool dxfFormat){ QMap DRW_TextCodec::DXFCodePageMap() { - return QMap + static auto map = QMap { {"ANSI_874", {"ANSI_874", "CP874", "ISO8859-11", "TIS-620"}}, // Latin/Thai {"ANSI_932", {"ANSI_932", "SHIFT-JIS", "SHIFT_JIS", "CSSHIFTJIS", "CSWINDOWS31J", "MS_KANJI", "X-MS-CP932", @@ -170,8 +133,8 @@ QMap DRW_TextCodec::DXFCodePageMap() "BIG5-HKSCS"}}, // Chinese Big5 (Taiwan, Hong Kong SAR) {"ANSI_1250", {"ANSI_1250", "CP1250", "ISO8859-2"}}, //Central Europe and Eastern Europe {"ANSI_1251", {"ANSI_1251", "CP1251", "ISO8859-5", "KOI8-R", "KOI8-U", "IBM 866"}}, // Cyrillic script - {"ANSI_1252", {"ANSI_1252", "CP1252", "LATIN1", "ISO-8859-1", "CP819", "CSISO", "IBM819", "ISO_8859-1", - "APPLE ROMAN", "ISO8859-1", "ISO8859-15", "ISO-IR-100", "L1", "IBM 850"}}, // Western Europe + {"ANSI_1252", {"ANSI_1252", "CP1252", "LATIN1", "ISO-8859-1", "CP819", "CSISO", "IBM819", "L1", + "ISO_8859-1", "APPLE ROMAN", "ISO8859-1", "ISO8859-15", "ISO-IR-100", "IBM 850"}}, // Western Europe {"ANSI_1253", {"ANSI_1253", "CP1253", "ISO8859-7"}}, // Greek {"ANSI_1254", {"ANSI_1254", "CP1254", "ISO8859-9", "iso8859-3"}}, // Turkish {"ANSI_1255", {"ANSI_1255", "CP1255", "ISO8859-8"}}, // Hebrew @@ -181,17 +144,19 @@ QMap DRW_TextCodec::DXFCodePageMap() {"UTF-8", {"UTF-8", "UTF8", "UTF8-BIT"}}, {"UTF-16", {"UTF-16", "UTF16", "UTF16-BIT"}}, }; + + return map; } -QTextCodec *DRW_TextCodec::CodecForName(const QString &name) +VTextCodec *DRW_TextCodec::CodecForName(const QString &name) { - QMap knownCodecs = QtCodecs(); + QMap knownCodecs = DXFCodePageMap(); if (knownCodecs.contains(name)) { QStringList aliases = knownCodecs.value(name); for (auto &alias : aliases) { - if (QTextCodec *codec = QTextCodec::codecForName(alias.toLatin1())) + if (VTextCodec *codec = VTextCodec::codecForName(alias.toLatin1())) { return codec; } diff --git a/src/libs/vdxf/libdxfrw/intern/drw_textcodec.h b/src/libs/vdxf/libdxfrw/intern/drw_textcodec.h index 041da8cf7..af38adf22 100644 --- a/src/libs/vdxf/libdxfrw/intern/drw_textcodec.h +++ b/src/libs/vdxf/libdxfrw/intern/drw_textcodec.h @@ -4,10 +4,18 @@ #include #include #include "../drw_base.h" -#include "../vmisc/defglobal.h" -class QTextCodec; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else +#include "../vmisc/defglobal.h" +#include +#endif + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) class QStringList; +#endif + template class QMap; class DRW_TextCodec @@ -23,7 +31,7 @@ public: std::string getCodePage() const {return cp;} static QMap DXFCodePageMap(); - static QTextCodec* CodecForName(const QString &name); + static VTextCodec* CodecForName(const QString &name); private: static auto correctCodePage(const std::string& s) -> std::string; @@ -33,7 +41,7 @@ private: Q_DISABLE_COPY_MOVE(DRW_TextCodec) // NOLINT DRW::Version version{DRW::UNKNOWNV}; std::string cp{}; - QTextCodec *conv{nullptr}; + VTextCodec *conv{nullptr}; }; #endif // DRW_TEXTCODEC_H diff --git a/src/libs/vdxf/stable.h b/src/libs/vdxf/stable.h index a94c92dbb..1829eea98 100644 --- a/src/libs/vdxf/stable.h +++ b/src/libs/vdxf/stable.h @@ -79,6 +79,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vdxf/vdxf.qbs b/src/libs/vdxf/vdxf.qbs index 136507126..d4bc3ad59 100644 --- a/src/libs/vdxf/vdxf.qbs +++ b/src/libs/vdxf/vdxf.qbs @@ -1,6 +1,8 @@ +import qbs.Utilities + VLib { Depends { name: "VMiscLib" } - Depends { name: "Qt"; submodules: ["gui"] } + Depends { name: "Qt"; submodules: ["core", "gui"] } name: "VDXFLib" files: [ diff --git a/src/libs/vdxf/vdxfengine.cpp b/src/libs/vdxf/vdxfengine.cpp index e5cf85746..8f4430905 100644 --- a/src/libs/vdxf/vdxfengine.cpp +++ b/src/libs/vdxf/vdxfengine.cpp @@ -41,12 +41,17 @@ #include #include #include -#include #include #include #include #include +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else +#include +#endif + #include "../vmisc/def.h" #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "../vmisc/diagnostic.h" @@ -860,7 +865,8 @@ void VDxfEngine::ExportPieceText(const QSharedPointer &detailBloc for (int i = 0; i < list.size(); ++i) { - QPointF pos(startPos.x(), startPos.y() - ToPixel(AAMATextHeight * m_yscale, m_varInsunits)*(list.size() - i-1)); + const qreal height = ToPixel(AAMATextHeight * m_yscale, m_varInsunits); + QPointF pos(startPos.x(), startPos.y() - height * (static_cast(list.size()) - i-1)); detailBlock->ent.push_back(AAMAText(pos, list.at(i), *layer1)); } } @@ -875,8 +881,8 @@ void VDxfEngine::ExportStyleSystemText(const QSharedPointer &input, co { for (int j = 0; j < strings.size(); ++j) { - QPointF pos(0, GetSize().height() - - ToPixel(AAMATextHeight * m_yscale, m_varInsunits)*(strings.size() - j-1)); + const qreal height = ToPixel(AAMATextHeight * m_yscale, m_varInsunits); + QPointF pos(0, GetSize().height() - height * (static_cast(strings.size()) - j-1)); input->AddEntity(AAMAText(pos, strings.at(j), *layer1)); } return; @@ -1250,7 +1256,7 @@ auto VDxfEngine::AAMAPoint(const QPointF &pos, const UTF8STRING &layer) const -> } //--------------------------------------------------------------------------------------------------------------------- -auto VDxfEngine::FromUnicodeToCodec(const QString &str, QTextCodec *codec) -> std::string +auto VDxfEngine::FromUnicodeToCodec(const QString &str, VTextCodec *codec) -> std::string { return codec->fromUnicode(str).toStdString(); } diff --git a/src/libs/vdxf/vdxfengine.h b/src/libs/vdxf/vdxfengine.h index 7b43b9fd1..525350f63 100644 --- a/src/libs/vdxf/vdxfengine.h +++ b/src/libs/vdxf/vdxfengine.h @@ -30,7 +30,6 @@ #define VDXFENGINE_H #include -#include #include #include #include @@ -40,6 +39,7 @@ #include #include "../vmisc/def.h" +#include "../vmisc/defglobal.h" #include "dxfdef.h" #include "libdxfrw/drw_base.h" @@ -52,6 +52,10 @@ class dx_ifaceBlock; class VLayoutPoint; class DRW_Point; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +class VTextCodec; +#endif + class VDxfEngine final : public QPaintEngine { friend class VDxfPaintDevice; @@ -158,7 +162,7 @@ private: Q_REQUIRED_RESULT auto CreateAAMAPolygon(const QVector &polygon, const UTF8STRING &layer, bool forceClosed) -> P *; - static auto FromUnicodeToCodec(const QString &str, QTextCodec *codec) -> std::string; + static auto FromUnicodeToCodec(const QString &str, VTextCodec *codec) -> std::string; auto GetFileNameForLocale() const -> std::string; }; diff --git a/src/libs/vformat/stable.h b/src/libs/vformat/stable.h index d01573e25..f77488e68 100644 --- a/src/libs/vformat/stable.h +++ b/src/libs/vformat/stable.h @@ -77,6 +77,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vformat/vmeasurements.cpp b/src/libs/vformat/vmeasurements.cpp index 6c6982d8f..afbeab384 100644 --- a/src/libs/vformat/vmeasurements.cpp +++ b/src/libs/vformat/vmeasurements.cpp @@ -37,9 +37,6 @@ #include #include #include -#include -#include -#include #include #include @@ -1467,7 +1464,7 @@ qreal VMeasurements::EvalFormula(VContainer *data, const QString &formula, bool QString VMeasurements::ClearPMCode(const QString &code) const { QString clear = code; - const int index = clear.indexOf(QLatin1Char('p')); + const vsizetype index = clear.indexOf(QLatin1Char('p')); if (index == 0) { clear.remove(0, 1); @@ -1480,13 +1477,13 @@ QMap VMeasurements::ReadCorrections(const QDomElement &mElement) { if (mElement.isNull()) { - return QMap(); + return {}; } QDomElement correctionsTag = mElement.firstChildElement(TagCorrections); if (correctionsTag.isNull()) { - return QMap(); + return {}; } QMap corrections; diff --git a/src/libs/vgeometry/stable.h b/src/libs/vgeometry/stable.h index 63109b1e7..af0c41068 100644 --- a/src/libs/vgeometry/stable.h +++ b/src/libs/vgeometry/stable.h @@ -77,6 +77,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vgeometry/vabstractcubicbezierpath.h b/src/libs/vgeometry/vabstractcubicbezierpath.h index b2d3be9f3..2ac105e48 100644 --- a/src/libs/vgeometry/vabstractcubicbezierpath.h +++ b/src/libs/vgeometry/vabstractcubicbezierpath.h @@ -57,10 +57,10 @@ public: auto operator= (const VAbstractCubicBezierPath &curve) -> VAbstractCubicBezierPath&; ~VAbstractCubicBezierPath() override; - virtual auto CountSubSpl() const -> qint32 =0; - virtual auto CountPoints() const -> qint32 =0; + virtual auto CountSubSpl() const -> vsizetype =0; + virtual auto CountPoints() const -> vsizetype =0; virtual void Clear() =0; - virtual auto GetSpline(qint32 index) const -> VSpline =0; + virtual auto GetSpline(vsizetype index) const -> VSpline =0; virtual auto GetSplinePath() const -> QVector =0; auto GetPath() const -> QPainterPath override; diff --git a/src/libs/vgeometry/vcubicbezierpath.cpp b/src/libs/vgeometry/vcubicbezierpath.cpp index a162430e3..6c585a9a9 100644 --- a/src/libs/vgeometry/vcubicbezierpath.cpp +++ b/src/libs/vgeometry/vcubicbezierpath.cpp @@ -167,13 +167,13 @@ VCubicBezierPath::~VCubicBezierPath() } //--------------------------------------------------------------------------------------------------------------------- -VPointF &VCubicBezierPath::operator[](int indx) +VPointF &VCubicBezierPath::operator[](vsizetype indx) { return d->path[indx]; } //--------------------------------------------------------------------------------------------------------------------- -const VPointF &VCubicBezierPath::at(int indx) const +const VPointF &VCubicBezierPath::at(vsizetype indx) const { return d->path[indx]; } @@ -186,13 +186,13 @@ void VCubicBezierPath::append(const VPointF &point) } //--------------------------------------------------------------------------------------------------------------------- -qint32 VCubicBezierPath::CountSubSpl() const +vsizetype VCubicBezierPath::CountSubSpl() const { return CountSubSpl(d->path.size()); } //--------------------------------------------------------------------------------------------------------------------- -qint32 VCubicBezierPath::CountPoints() const +vsizetype VCubicBezierPath::CountPoints() const { return d->path.size(); } @@ -205,7 +205,7 @@ void VCubicBezierPath::Clear() } //--------------------------------------------------------------------------------------------------------------------- -VSpline VCubicBezierPath::GetSpline(qint32 index) const +VSpline VCubicBezierPath::GetSpline(vsizetype index) const { if (CountPoints() < 4) { @@ -217,7 +217,7 @@ VSpline VCubicBezierPath::GetSpline(qint32 index) const throw VException(tr("This spline does not exist.")); } - const qint32 base = SubSplOffset(index); + const vsizetype base = SubSplOffset(index); // Correction the first control point of each next spline curve except for the first. QPointF p2 = static_cast(d->path.at(base + 1)); @@ -252,7 +252,7 @@ qreal VCubicBezierPath::GetStartAngle() const //--------------------------------------------------------------------------------------------------------------------- qreal VCubicBezierPath::GetEndAngle() const { - const qint32 count = CountSubSpl(); + const vsizetype count = CountSubSpl(); if (count > 0) { return GetSpline(count).GetEndAngle(); @@ -279,7 +279,7 @@ qreal VCubicBezierPath::GetC1Length() const //--------------------------------------------------------------------------------------------------------------------- qreal VCubicBezierPath::GetC2Length() const { - const qint32 count = CountSubSpl(); + const vsizetype count = CountSubSpl(); if (count > 0) { return GetSpline(count).GetC2Length(); @@ -293,7 +293,7 @@ qreal VCubicBezierPath::GetC2Length() const //--------------------------------------------------------------------------------------------------------------------- QVector VCubicBezierPath::GetSplinePath() const { - const int size = CountSubSpl(); + const vsizetype size = CountSubSpl(); QVector splPoints(size+1); for (qint32 i = 1; i <= size; ++i) @@ -326,17 +326,21 @@ QVector VCubicBezierPath::GetCubicPath() const } //--------------------------------------------------------------------------------------------------------------------- -qint32 VCubicBezierPath::CountSubSpl(qint32 size) +vsizetype VCubicBezierPath::CountSubSpl(vsizetype size) { if (size <= 0) { return 0; } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return qFloor(qAbs((size - 4) / 3.0L + 1)); +#else return qFloor(qAbs((size - 4) / 3.0 + 1)); +#endif } //--------------------------------------------------------------------------------------------------------------------- -qint32 VCubicBezierPath::SubSplOffset(qint32 subSplIndex) +vsizetype VCubicBezierPath::SubSplOffset(vsizetype subSplIndex) { if (subSplIndex <= 0) { @@ -347,7 +351,7 @@ qint32 VCubicBezierPath::SubSplOffset(qint32 subSplIndex) } //--------------------------------------------------------------------------------------------------------------------- -qint32 VCubicBezierPath::SubSplPointsCount(qint32 countSubSpl) +vsizetype VCubicBezierPath::SubSplPointsCount(vsizetype countSubSpl) { if (countSubSpl <= 0) { @@ -364,22 +368,17 @@ VPointF VCubicBezierPath::FirstPoint() const { return ConstFirst(d->path); } - else - { - return VPointF(); - } + return {}; } //--------------------------------------------------------------------------------------------------------------------- VPointF VCubicBezierPath::LastPoint() const { - const qint32 count = CountSubSpl(); + const vsizetype count = CountSubSpl(); if (count >= 1) { return d->path.at(SubSplOffset(count) + 3);// Take last point of the last real spline } - else - { - return VPointF(); - } + + return {}; } diff --git a/src/libs/vgeometry/vcubicbezierpath.h b/src/libs/vgeometry/vcubicbezierpath.h index aa797fa79..5b92d930d 100644 --- a/src/libs/vgeometry/vcubicbezierpath.h +++ b/src/libs/vgeometry/vcubicbezierpath.h @@ -62,16 +62,16 @@ public: VCubicBezierPath &operator=(VCubicBezierPath &&curve) Q_DECL_NOTHROW; #endif - VPointF &operator[](int indx); + VPointF &operator[](vsizetype indx); - const VPointF &at(int indx) const; + const VPointF &at(vsizetype indx) const; void append(const VPointF &point); - virtual qint32 CountSubSpl() const override; - virtual qint32 CountPoints() const override; + virtual vsizetype CountSubSpl() const override; + virtual vsizetype CountPoints() const override; virtual void Clear() override; - virtual VSpline GetSpline(qint32 index) const override; + virtual VSpline GetSpline(vsizetype index) const override; virtual qreal GetStartAngle () const override; virtual qreal GetEndAngle () const override; @@ -81,9 +81,9 @@ public: virtual QVector GetSplinePath() const override; QVector GetCubicPath() const; - static qint32 CountSubSpl(qint32 size); - static qint32 SubSplOffset(qint32 subSplIndex); - static qint32 SubSplPointsCount(qint32 countSubSpl); + static vsizetype CountSubSpl(vsizetype size); + static vsizetype SubSplOffset(vsizetype subSplIndex); + static vsizetype SubSplPointsCount(vsizetype countSubSpl); protected: virtual VPointF FirstPoint() const override; virtual VPointF LastPoint() const override; diff --git a/src/libs/vgeometry/vsplinepath.cpp b/src/libs/vgeometry/vsplinepath.cpp index f13b55f43..2f6ad9198 100644 --- a/src/libs/vgeometry/vsplinepath.cpp +++ b/src/libs/vgeometry/vsplinepath.cpp @@ -216,7 +216,7 @@ void VSplinePath::append(const VSplinePoint &point) * @brief CountSubSpl return count of simple splines. * @return count. */ -qint32 VSplinePath::CountSubSpl() const +vsizetype VSplinePath::CountSubSpl() const { if (d->path.isEmpty()) { @@ -232,7 +232,7 @@ qint32 VSplinePath::CountSubSpl() const * @param index index spline in spline path. * @return spline */ -VSpline VSplinePath::GetSpline(qint32 index) const +VSpline VSplinePath::GetSpline(vsizetype index) const { if (CountPoints()<1) { @@ -337,7 +337,7 @@ VSplinePath &VSplinePath::operator=(VSplinePath &&path) Q_DECL_NOTHROW * @param indx index in list. * @return spline point. */ -VSplinePoint & VSplinePath::operator[](int indx) +VSplinePoint & VSplinePath::operator[](vsizetype indx) { return d->path[indx]; } @@ -348,7 +348,7 @@ VSplinePoint & VSplinePath::operator[](int indx) * @param indx index in list. * @return spline point. */ -const VSplinePoint &VSplinePath::at(int indx) const +const VSplinePoint &VSplinePath::at(vsizetype indx) const { return d->path[indx]; } @@ -409,7 +409,7 @@ VPointF VSplinePath::FirstPoint() const //--------------------------------------------------------------------------------------------------------------------- VPointF VSplinePath::LastPoint() const { - const qint32 count = CountSubSpl(); + const vsizetype count = CountSubSpl(); return count >= 1 ? d->path.at(count).P() :// Take last point of the last real spline VPointF(); } @@ -419,7 +419,7 @@ VPointF VSplinePath::LastPoint() const * @brief CountPoints return count of points. * @return count. */ -qint32 VSplinePath::CountPoints() const +vsizetype VSplinePath::CountPoints() const { return d->path.size(); } diff --git a/src/libs/vgeometry/vsplinepath.h b/src/libs/vgeometry/vsplinepath.h index d87137b2f..7ef1e4be2 100644 --- a/src/libs/vgeometry/vsplinepath.h +++ b/src/libs/vgeometry/vsplinepath.h @@ -64,7 +64,7 @@ public: VSplinePath Move(qreal length, qreal angle, const QString &prefix = QString()) const; virtual ~VSplinePath() override; - VSplinePoint &operator[](int indx); + VSplinePoint &operator[](vsizetype indx); VSplinePath &operator=(const VSplinePath &path); #ifdef Q_COMPILER_RVALUE_REFS VSplinePath(VSplinePath&& splPath) Q_DECL_NOTHROW; @@ -73,10 +73,10 @@ public: void append(const VSplinePoint &point); - virtual qint32 CountSubSpl() const override; - virtual qint32 CountPoints() const override; + virtual vsizetype CountSubSpl() const override; + virtual vsizetype CountPoints() const override; virtual void Clear() override; - virtual VSpline GetSpline(qint32 index) const override; + virtual VSpline GetSpline(vsizetype index) const override; virtual QVector GetSplinePath() const override; QVector GetFSplinePath() const; @@ -90,7 +90,7 @@ public: void UpdatePoint(qint32 indexSpline, const SplinePointPosition &pos, const VSplinePoint &point); VSplinePoint GetSplinePoint(qint32 indexSpline, SplinePointPosition pos) const; - const VSplinePoint &at(int indx) const; + const VSplinePoint &at(vsizetype indx) const; virtual QJsonObject ToJson() const override; diff --git a/src/libs/vgeometry/vsplinepath_p.h b/src/libs/vgeometry/vsplinepath_p.h index 84f89038e..f6ffde66e 100644 --- a/src/libs/vgeometry/vsplinepath_p.h +++ b/src/libs/vgeometry/vsplinepath_p.h @@ -40,9 +40,7 @@ class VSplinePathData final : public QSharedData { public: - VSplinePathData() - : path(QVector()) - {} + VSplinePathData() = default; VSplinePathData(const VSplinePathData &splPath) : QSharedData(splPath), @@ -54,7 +52,7 @@ public: /** * @brief path list spline point. */ - QVector path; + QVector path{}; private: Q_DISABLE_ASSIGN(VSplinePathData) diff --git a/src/libs/vlayout/stable.h b/src/libs/vlayout/stable.h index e0d5ec120..2fdd7ce4c 100644 --- a/src/libs/vlayout/stable.h +++ b/src/libs/vlayout/stable.h @@ -77,6 +77,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vlayout/vabstractpiece.cpp b/src/libs/vlayout/vabstractpiece.cpp index 671051032..6138f9dc8 100644 --- a/src/libs/vlayout/vabstractpiece.cpp +++ b/src/libs/vlayout/vabstractpiece.cpp @@ -597,7 +597,7 @@ auto AngleBySecondRightAngle(QVector points, QPointF p1, QPointF p2 // Because artificial loop can lead to wrong clipping we must rollback current seam allowance points bool success = false; - const int countBefore = points.size(); + const auto countBefore = points.size(); QVector temp = points; temp.append(VRawSAPoint(bigLine1.p2(), p.CurvePoint(), p.TurnPoint())); temp = VAbstractPiece::RollbackSeamAllowance(temp, edge, &success); @@ -705,7 +705,7 @@ auto CorrectPathDistortion(QVector path) -> QVector return path; } - int prev = -1; + vsizetype prev = -1; for (qint32 i = 0; i < path.size(); ++i) { if (prev == -1) @@ -1159,7 +1159,7 @@ auto VAbstractPiece::SumTrapezoids(const QVector &points) -> qreal { // Calculation a polygon area through the sum of the areas of trapezoids qreal s, res = 0; - const int n = points.size(); + const auto n = points.size(); if(n > 2) { @@ -1564,7 +1564,7 @@ auto VAbstractPiece::RollbackSeamAllowance(QVector points, const QL *success = false; QVector clipped; clipped.reserve(points.count()+1); - for (int i = points.count()-1; i > 0; --i) + for (auto i = points.count()-1; i > 0; --i) { QLineF segment(points.at(i), points.at(i-1)); QPointF crosPoint; @@ -1575,7 +1575,7 @@ auto VAbstractPiece::RollbackSeamAllowance(QVector points, const QL && IsSameDirection(cuttingEdge.p2(), cuttingEdge.p1(), crosPoint)) { clipped.append(VRawSAPoint(crosPoint, points.at(i).CurvePoint(), points.at(i).TurnPoint())); - for (int j=i-1; j>=0; --j) + for (auto j=i-1; j>=0; --j) { clipped.append(points.at(j)); } diff --git a/src/libs/vlayout/vabstractpiece.h b/src/libs/vlayout/vabstractpiece.h index 1254c9981..2c3fc52fc 100644 --- a/src/libs/vlayout/vabstractpiece.h +++ b/src/libs/vlayout/vabstractpiece.h @@ -229,8 +229,8 @@ inline auto VAbstractPiece::CorrectEquidistantPoints(const QVector &points, b return buf1; } - int prev = -1; - int next = -1; + vsizetype prev = -1; + vsizetype next = -1; QVector buf2; //Remove point on line diff --git a/src/libs/vlayout/vbank.cpp b/src/libs/vlayout/vbank.cpp index 20dfe72b4..c0bd0d5ad 100644 --- a/src/libs/vlayout/vbank.cpp +++ b/src/libs/vlayout/vbank.cpp @@ -80,9 +80,9 @@ void Insert(QMap> &container, uint key, int valKey, qin //--------------------------------------------------------------------------------------------------------------------- template -int CountDetails(const T &container) +vsizetype CountDetails(const T &container) { - int count = 0; + vsizetype count = 0; auto i = container.constBegin(); while (i != container.constEnd()) { @@ -424,19 +424,19 @@ void VBank::SetCaseType(Cases caseType) } //--------------------------------------------------------------------------------------------------------------------- -int VBank::AllDetailsCount() const +vsizetype VBank::AllDetailsCount() const { return CountDetails(unsorted) + CountDetails(big) + CountDetails(middle) + CountDetails(small) + CountDetails(desc); } //--------------------------------------------------------------------------------------------------------------------- -int VBank::LeftToArrange() const +vsizetype VBank::LeftToArrange() const { return CountDetails(big) + CountDetails(middle) + CountDetails(small) + CountDetails(desc); } //--------------------------------------------------------------------------------------------------------------------- -int VBank::FailedToArrange() const +vsizetype VBank::FailedToArrange() const { return CountDetails(unsorted); } @@ -580,7 +580,11 @@ int VBank::GetNextTwoGroups(uint priority) const int VBank::GetNextDescGroup(uint priority) const { auto descGroup = desc.value(priority); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMultiMapIterator i(descGroup); +#else QMapIterator i(descGroup); +#endif i.toBack(); if (i.hasPrevious()) { diff --git a/src/libs/vlayout/vbank.h b/src/libs/vlayout/vbank.h index 960f46179..3145f6a6c 100644 --- a/src/libs/vlayout/vbank.h +++ b/src/libs/vlayout/vbank.h @@ -77,9 +77,9 @@ public: void Reset(); void SetCaseType(Cases caseType); - int AllDetailsCount() const; - int LeftToArrange() const; - int FailedToArrange() const; + vsizetype AllDetailsCount() const; + vsizetype LeftToArrange() const; + vsizetype FailedToArrange() const; qreal GetBiggestDiagonal() const; diff --git a/src/libs/vlayout/vbestsquare.cpp b/src/libs/vlayout/vbestsquare.cpp index efc40caaf..62d000116 100644 --- a/src/libs/vlayout/vbestsquare.cpp +++ b/src/libs/vlayout/vbestsquare.cpp @@ -30,8 +30,6 @@ #include "vbestsquare_p.h" #include "../vgeometry/vgeometrydef.h" -#include - namespace { //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vlayout/vcontour.cpp b/src/libs/vlayout/vcontour.cpp index e0728841c..1d18a802c 100644 --- a/src/libs/vlayout/vcontour.cpp +++ b/src/libs/vlayout/vcontour.cpp @@ -71,9 +71,9 @@ QVector OptimizeCombining(const QVector &contour, const QPoint QPointF withdrawFirst = ConstLast(contour); bool optimize = false; int count = 0; - int cutIndex = -1; + vsizetype cutIndex = -1; - for (int i = contour.size() - 2; i >= 0; --i) + for (auto i = contour.size() - 2; i >= 0; --i) { if (not VGObject::IsPointOnLineSegment(contour.at(i), withdrawFirst, withdrawEnd, accuracyPointOnLine*2)) { @@ -259,7 +259,7 @@ QVector VContour::UniteWithContour(const VLayoutPiece &detail, int glob } //--------------------------------------------------------------------------------------------------------------------- -int VContour::GlobalEdgesCount() const +vsizetype VContour::GlobalEdgesCount() const { return d->m_emptySheetEdgesCount; } @@ -277,7 +277,7 @@ QLineF VContour::GlobalEdge(int i) const } const QLineF emptyEdge = EmptySheetEdge(); - const qreal nShift = emptyEdge.length()/GlobalEdgesCount(); + const qreal nShift = emptyEdge.length() / static_cast(GlobalEdgesCount()); edge = IsPortrait() ? QLineF(nShift*(i-1) + emptyEdge.x1(), emptyEdge.y1(), nShift*i + emptyEdge.x1(), emptyEdge.y2()) : QLineF(emptyEdge.x1(), nShift*(i-1) + emptyEdge.y1(), @@ -339,7 +339,7 @@ QVector VContour::CutEdge(const QLineF &edge) const QVector VContour::CutEmptySheetEdge() const { QVector points; - const qreal nShift = EmptySheetEdge().length()/GlobalEdgesCount(); + const qreal nShift = EmptySheetEdge().length() / static_cast(GlobalEdgesCount()); for (int i = 1; i <= GlobalEdgesCount()+1; ++i) { QLineF l1 = EmptySheetEdge(); @@ -359,7 +359,7 @@ const QPointF &VContour::at(int i) const void VContour::AppendWhole(QVector &contour, const VLayoutPiece &detail, int detJ) const { int processedEdges = 0; - const int nD = detail.LayoutEdgesCount(); + const auto nD = detail.LayoutEdgesCount(); int j = detJ; contour = OptimizeCombining(contour, detail.LayoutEdge(j).p2()); @@ -385,7 +385,7 @@ void VContour::AppendWhole(QVector &contour, const VLayoutPiece &detail void VContour::InsertDetail(QVector &contour, const VLayoutPiece &detail, int detJ) const { int processedEdges = 0; - const int nD = detail.LayoutEdgesCount(); + const auto nD = detail.LayoutEdgesCount(); int j = detJ; contour = OptimizeCombining(contour, detail.LayoutEdge(j).p2()); diff --git a/src/libs/vlayout/vcontour.h b/src/libs/vlayout/vcontour.h index 58cb1ee65..2c511f860 100644 --- a/src/libs/vlayout/vcontour.h +++ b/src/libs/vlayout/vcontour.h @@ -36,6 +36,7 @@ #include #include "vlayoutdef.h" +#include "../vmisc/defglobal.h" class VContourData; class QPointF; @@ -80,7 +81,7 @@ public: QVector UniteWithContour(const VLayoutPiece &detail, int globalI, int detJ, BestFrom type) const; QLineF EmptySheetEdge() const; - int GlobalEdgesCount() const; + vsizetype GlobalEdgesCount() const; QLineF GlobalEdge(int i) const; QVector CutEdge(const QLineF &edge) const; QVector CutEmptySheetEdge() const; diff --git a/src/libs/vlayout/vcontour_p.h b/src/libs/vlayout/vcontour_p.h index 00f9a243c..2f068cab4 100644 --- a/src/libs/vlayout/vcontour_p.h +++ b/src/libs/vlayout/vcontour_p.h @@ -81,7 +81,7 @@ public: qreal layoutWidth{0}; - int m_emptySheetEdgesCount{0}; + vsizetype m_emptySheetEdgesCount{0}; private: Q_DISABLE_ASSIGN(VContourData) diff --git a/src/libs/vlayout/vlayoutgenerator.cpp b/src/libs/vlayout/vlayoutgenerator.cpp index 68492af0b..557cd6620 100644 --- a/src/libs/vlayout/vlayoutgenerator.cpp +++ b/src/libs/vlayout/vlayoutgenerator.cpp @@ -96,7 +96,7 @@ void VLayoutGenerator::SetCaseType(Cases caseType) //--------------------------------------------------------------------------------------------------------------------- // cppcheck-suppress unusedFunction -int VLayoutGenerator::DetailsCount() +vsizetype VLayoutGenerator::DetailsCount() { return bank->AllDetailsCount(); } @@ -296,6 +296,12 @@ LayoutErrors VLayoutGenerator::State() const return state; } +//--------------------------------------------------------------------------------------------------------------------- +vsizetype VLayoutGenerator::PapersCount() const +{ + return papers.size(); +} + //--------------------------------------------------------------------------------------------------------------------- QList VLayoutGenerator::GetPapersItems() const { diff --git a/src/libs/vlayout/vlayoutgenerator.h b/src/libs/vlayout/vlayoutgenerator.h index fc4b16509..9df2f8442 100644 --- a/src/libs/vlayout/vlayoutgenerator.h +++ b/src/libs/vlayout/vlayoutgenerator.h @@ -57,7 +57,7 @@ public: void SetDetails(const QVector &details); void SetLayoutWidth(qreal width); void SetCaseType(Cases caseType); - int DetailsCount(); + vsizetype DetailsCount(); qreal GetPaperHeight() const; void SetPaperHeight(qreal value); @@ -85,7 +85,7 @@ public: LayoutErrors State() const; - int PapersCount() const {return papers.size();} + vsizetype PapersCount() const; Q_REQUIRED_RESULT QList GetPapersItems() const; Q_REQUIRED_RESULT QList GetGlobalContours() const; diff --git a/src/libs/vlayout/vlayoutpaper.cpp b/src/libs/vlayout/vlayoutpaper.cpp index 6ecf2157b..b153cac44 100644 --- a/src/libs/vlayout/vlayoutpaper.cpp +++ b/src/libs/vlayout/vlayoutpaper.cpp @@ -269,7 +269,7 @@ bool VLayoutPaper::ArrangeDetail(const VLayoutPiece &detail, std::atomic_bool &s } //--------------------------------------------------------------------------------------------------------------------- -int VLayoutPaper::Count() const +vsizetype VLayoutPaper::Count() const { return d->details.count(); } @@ -442,10 +442,12 @@ void VLayoutPaper::SetDetails(const QVector &details) } //--------------------------------------------------------------------------------------------------------------------- +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void VLayoutPaper::SetDetails(const QList &details) { d->details = ConvertToVector(details); } +#endif //--------------------------------------------------------------------------------------------------------------------- QRectF VLayoutPaper::DetailsBoundingRect() const diff --git a/src/libs/vlayout/vlayoutpaper.h b/src/libs/vlayout/vlayoutpaper.h index a1cad1ade..7955a8259 100644 --- a/src/libs/vlayout/vlayoutpaper.h +++ b/src/libs/vlayout/vlayoutpaper.h @@ -36,7 +36,7 @@ #include #include -#include "vlayoutdef.h" +#include "../vmisc/defglobal.h" class VBestSquare; class VLayoutPaperData; @@ -46,7 +46,10 @@ class QRectF; class QGraphicsItem; class QMutex; template class QList; + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) template class QVector; +#endif class VLayoutPaper { @@ -93,14 +96,16 @@ public: void SetOriginPaperPortrait(bool portrait); bool ArrangeDetail(const VLayoutPiece &detail, std::atomic_bool &stop); - int Count() const; + vsizetype Count() const; Q_REQUIRED_RESULT QGraphicsRectItem *GetPaperItem(bool autoCropLength, bool autoCropWidth, bool textAsPaths) const; Q_REQUIRED_RESULT QGraphicsPathItem *GetGlobalContour() const; Q_REQUIRED_RESULT QList GetItemDetails(bool textAsPaths) const; QVector GetDetails() const; void SetDetails(const QVector& details); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) void SetDetails(const QList& details); +#endif QRectF DetailsBoundingRect() const; diff --git a/src/libs/vlayout/vlayoutpiece.cpp b/src/libs/vlayout/vlayoutpiece.cpp index 752548f92..3e673b36d 100644 --- a/src/libs/vlayout/vlayoutpiece.cpp +++ b/src/libs/vlayout/vlayoutpiece.cpp @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -195,7 +194,7 @@ auto PieceLabelText(const QVector &labelShape, const VTextManager &tm) QStringList text; if (labelShape.count() > 2) { - int sourceCount = tm.GetSourceLinesCount(); + auto sourceCount = tm.GetSourceLinesCount(); text.reserve(sourceCount); for (int i = 0; i < sourceCount; ++i) { @@ -623,10 +622,12 @@ VLayoutPiece::~VLayoutPiece() //NOLINT(modernize-use-equals-default) //--------------------------------------------------------------------------------------------------------------------- auto VLayoutPiece::Create(const VPiece &piece, vidtype id, const VContainer *pattern) -> VLayoutPiece { - QFuture > futureSeamAllowance = QtConcurrent::run(piece, &VPiece::SeamAllowancePoints, - pattern); - QFuture futureSeamAllowanceValid = QtConcurrent::run(piece, &VPiece::IsSeamAllowanceValid, pattern); - QFuture > futureMainPath = QtConcurrent::run(piece, &VPiece::MainPathPoints, pattern); + QFuture > futureSeamAllowance = + QtConcurrent::run([piece, pattern](){return piece.SeamAllowancePoints(pattern);}); + QFuture futureSeamAllowanceValid = + QtConcurrent::run([piece, pattern](){return piece.IsSeamAllowanceValid(pattern);}); + QFuture > futureMainPath = + QtConcurrent::run([piece, pattern](){return piece.MainPathPoints(pattern);}); QFuture > futureInternalPaths = QtConcurrent::run(ConvertInternalPaths, piece, pattern); QFuture > futurePassmarks = QtConcurrent::run(ConvertPassmarks, piece, pattern); QFuture > futurePlaceLabels = QtConcurrent::run(ConvertPlaceLabels, piece, pattern); @@ -1175,15 +1176,15 @@ void VLayoutPiece::Mirror() } //--------------------------------------------------------------------------------------------------------------------- -auto VLayoutPiece::DetailEdgesCount() const -> int +auto VLayoutPiece::DetailEdgesCount() const -> vsizetype { return DetailPath().count(); } //--------------------------------------------------------------------------------------------------------------------- -auto VLayoutPiece::LayoutEdgesCount() const -> int +auto VLayoutPiece::LayoutEdgesCount() const -> vsizetype { - const int count = d->m_layoutAllowance.count(); + const auto count = d->m_layoutAllowance.count(); return count > 2 ? count : 0; } @@ -1769,7 +1770,7 @@ auto VLayoutPiece::Edge(const QVector &path, int i) const -> QLineF return {}; } - int i1, i2; + vsizetype i1, i2; if (i < path.count()) { i1 = i-1; @@ -1798,8 +1799,8 @@ auto VLayoutPiece::EdgeByPoint(const QVector &path, const QPointF &p1) } const QVector points = Map(path); - const auto *const posIter = std::find_if(points.cbegin(), points.cend(), - [&p1](const QPointF &point){ return VFuzzyComparePoints(point, p1); }); + auto posIter = std::find_if(points.cbegin(), points.cend(), + [&p1](const QPointF &point){ return VFuzzyComparePoints(point, p1); }); if (posIter != points.cend()) { return static_cast(posIter - points.cbegin() + 1); diff --git a/src/libs/vlayout/vlayoutpiece.h b/src/libs/vlayout/vlayoutpiece.h index e7f60f915..02c8c4b91 100644 --- a/src/libs/vlayout/vlayoutpiece.h +++ b/src/libs/vlayout/vlayoutpiece.h @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -162,8 +161,8 @@ public: void Mirror(const QLineF &edge); void Mirror(); - auto DetailEdgesCount() const -> int; - auto LayoutEdgesCount() const -> int; + auto DetailEdgesCount() const -> vsizetype; + auto LayoutEdgesCount() const -> vsizetype; auto LayoutEdge(int i) const -> QLineF; auto LayoutEdgeByPoint(const QPointF &p1) const -> EdgeIndex; diff --git a/src/libs/vlayout/vposition.cpp b/src/libs/vlayout/vposition.cpp index ff63f688c..37595054b 100644 --- a/src/libs/vlayout/vposition.cpp +++ b/src/libs/vlayout/vposition.cpp @@ -42,10 +42,7 @@ #include #include #include -#include #include -#include -#include #include #include #include @@ -213,7 +210,7 @@ auto VPosition::ArrangeDetail(const VPositionData &data, std::atomic_bool *stop, } const VLayoutPiece detail = data.detail; - const int detailEdgesCount = detail.LayoutEdgesCount(); + const auto detailEdgesCount = detail.LayoutEdgesCount(); if (detailEdgesCount < 3 || detail.DetailEdgesCount() < 3) { return bestResult;//Not enough edges @@ -292,7 +289,13 @@ void VPosition::SaveCandidate(VBestSquare &bestResult, const VLayoutPiece &detai const qreal depthPosition = m_data.isOriginPaperOrientationPortrait ? boundingRect.y() : boundingRect.x(); const qreal sidePosition = m_data.isOriginPaperOrientationPortrait ? boundingRect.x() : boundingRect.y(); + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + VBestSquareResData data; + + QT_WARNING_POP + data.bestSize = size; data.globalI = globalI; // Edge of global contour data.detJ = detJ; // Edge of detail diff --git a/src/libs/vlayout/vposter.cpp b/src/libs/vlayout/vposter.cpp index 4f0155b7b..71ff270a8 100644 --- a/src/libs/vlayout/vposter.cpp +++ b/src/libs/vlayout/vposter.cpp @@ -153,7 +153,7 @@ QVector VPoster::Calc(const QSize &imageRect, int page, PageOrientat } //--------------------------------------------------------------------------------------------------------------------- -QVector VPoster::Tile(QGraphicsItem *parent, const PosterData &img, int sheets, +QVector VPoster::Tile(QGraphicsItem *parent, const PosterData &img, vsizetype sheets, const VWatermarkData &watermarkData, const QString &watermarkPath) const { QVector data; @@ -180,7 +180,7 @@ QVector VPoster::Tile(QGraphicsItem *parent, const PosterData & } //--------------------------------------------------------------------------------------------------------------------- -QVector VPoster::Borders(QGraphicsItem *parent, const PosterData &img, int sheets) const +QVector VPoster::Borders(QGraphicsItem *parent, const PosterData &img, vsizetype sheets) const { SCASSERT(parent != nullptr) diff --git a/src/libs/vlayout/vposter.h b/src/libs/vlayout/vposter.h index 8ad8da402..c30490f75 100644 --- a/src/libs/vlayout/vposter.h +++ b/src/libs/vlayout/vposter.h @@ -38,9 +38,13 @@ class QGraphicsItem; class QPrinter; -template class QVector; struct VWatermarkData; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +template class QVector; +#endif + + struct PosterData { PosterData() @@ -69,7 +73,7 @@ public: QVector Calc(const QSize &imageRect, int page, PageOrientation orientation) const; - QVector Tile(QGraphicsItem *parent, const PosterData &img, int sheets, + QVector Tile(QGraphicsItem *parent, const PosterData &img, vsizetype sheets, const VWatermarkData &watermarkData, const QString &watermarkPath) const; private: @@ -89,7 +93,7 @@ private: void Ruler(QVector &data, QGraphicsItem *parent, QRect rec) const; - QVector Borders(QGraphicsItem *parent, const PosterData &img, int sheets) const; + QVector Borders(QGraphicsItem *parent, const PosterData &img, vsizetype sheets) const; QVector TextWatermark(QGraphicsItem *parent, const PosterData &img, const VWatermarkData &watermarkData) const; diff --git a/src/libs/vlayout/vprintlayout.cpp b/src/libs/vlayout/vprintlayout.cpp index 5611b9034..aaeac7acd 100644 --- a/src/libs/vlayout/vprintlayout.cpp +++ b/src/libs/vlayout/vprintlayout.cpp @@ -326,7 +326,7 @@ void VPrintLayout::PrintPages(QPrinter *printer) Qt::RoundCap, Qt::RoundJoin)); painter.setBrush ( QBrush ( Qt::NoBrush ) ); - int count = 0; + vsizetype count = 0; QSharedPointer> poster; QSharedPointer posterazor; @@ -363,7 +363,7 @@ void VPrintLayout::PrintPages(QPrinter *printer) } // Handle the fromPage(), toPage(), supportsMultipleCopies(), and numCopies() values from QPrinter. - int firstPage = printer->fromPage() - 1; + vsizetype firstPage = printer->fromPage() - 1; if (firstPage >= count) { return; @@ -373,13 +373,13 @@ void VPrintLayout::PrintPages(QPrinter *printer) firstPage = 0; } - int lastPage = printer->toPage() - 1; + vsizetype lastPage = printer->toPage() - 1; if (lastPage == -1 || lastPage >= count) { lastPage = count - 1; } - const int numPages = lastPage - firstPage + 1; + const vsizetype numPages = lastPage - firstPage + 1; int copyCount = 1; if (not printer->supportsMultipleCopies()) { @@ -400,7 +400,7 @@ void VPrintLayout::PrintPages(QPrinter *printer) return; } } - int index; + vsizetype index; if (printer->pageOrder() == QPrinter::FirstPageFirst) { index = firstPage + j; @@ -410,7 +410,7 @@ void VPrintLayout::PrintPages(QPrinter *printer) index = lastPage - j; } - int paperIndex = -1; + vsizetype paperIndex = -1; m_isTiled ? paperIndex = static_cast(poster->at(index).index) : paperIndex = index; auto *paper = qgraphicsitem_cast(m_layoutPapers.at(paperIndex)); @@ -610,7 +610,7 @@ auto VPrintLayout::DocName() const -> QString } //--------------------------------------------------------------------------------------------------------------------- -void VPrintLayout::PreparePaper(int index) const +void VPrintLayout::PreparePaper(vsizetype index) const { auto *paper = qgraphicsitem_cast(m_layoutPapers.at(index)); if (paper != nullptr) @@ -635,7 +635,7 @@ void VPrintLayout::PreparePaper(int index) const } //--------------------------------------------------------------------------------------------------------------------- -void VPrintLayout::RestorePaper(int index) const +void VPrintLayout::RestorePaper(vsizetype index) const { auto *paper = qgraphicsitem_cast(m_layoutPapers.at(index)); if (paper != nullptr) diff --git a/src/libs/vlayout/vprintlayout.h b/src/libs/vlayout/vprintlayout.h index 0a650961c..f09421c96 100644 --- a/src/libs/vlayout/vprintlayout.h +++ b/src/libs/vlayout/vprintlayout.h @@ -166,8 +166,8 @@ private: QString DocName() const; - void PreparePaper(int index) const; - void RestorePaper(int index) const; + void PreparePaper(vsizetype index) const; + void RestorePaper(vsizetype index) const; bool IsPagesUniform() const; bool IsPagesFit(QSizeF printPaper) const; diff --git a/src/libs/vlayout/vrawlayout.cpp b/src/libs/vlayout/vrawlayout.cpp index 681fc32e6..0d1970e40 100644 --- a/src/libs/vlayout/vrawlayout.cpp +++ b/src/libs/vlayout/vrawlayout.cpp @@ -114,7 +114,7 @@ bool VRawLayout::WriteFile(QIODevice *ioDevice, const VRawLayoutData &data) dataStream.setVersion(QDataStream::Qt_5_4); // Don't use the << operator for QByteArray. See the note in ReadFile() below. - dataStream.writeRawData(fileHeaderByteArray.constData(), fileHeaderByteArray.size()); + dataStream.writeRawData(fileHeaderByteArray.constData(), static_cast(fileHeaderByteArray.size())); dataStream << fileVersion; dataStream << data; @@ -158,7 +158,7 @@ bool VRawLayout::ReadFile(QIODevice *ioDevice, VRawLayoutData &data) // bytes of the stream will be the size of the array, we might end up attempting to allocate // a large amount of memory if the wrong file type was read. Instead, we'll just read the // same number of bytes that are in the array we are comparing it to. No size was written. - const int len = fileHeaderByteArray.size(); + const int len = static_cast(fileHeaderByteArray.size()); QByteArray actualFileHeaderByteArray( len, '\0' ); dataStream.readRawData( actualFileHeaderByteArray.data(), len ); diff --git a/src/libs/vlayout/vtextmanager.cpp b/src/libs/vlayout/vtextmanager.cpp index 15f6208bb..e6d2f3602 100644 --- a/src/libs/vlayout/vtextmanager.cpp +++ b/src/libs/vlayout/vtextmanager.cpp @@ -492,7 +492,7 @@ void VTextManager::SetAllSourceLines(const QVector &lines) * @brief VTextManager::GetSourceLinesCount returns the number of input text lines * @return number of text lines that were added to the list by calling AddLine */ -auto VTextManager::GetSourceLinesCount() const -> int +auto VTextManager::GetSourceLinesCount() const -> vsizetype { return m_liLines.count(); } @@ -503,7 +503,7 @@ auto VTextManager::GetSourceLinesCount() const -> int * @param i index of the requested line * @return reference to the requested TextLine object */ -auto VTextManager::GetSourceLine(int i) const -> const TextLine& +auto VTextManager::GetSourceLine(vsizetype i) const -> const TextLine& { Q_ASSERT(i >= 0); Q_ASSERT(i < m_liLines.count()); @@ -550,7 +550,7 @@ void VTextManager::FitFontSize(qreal fW, qreal fH) int iFS = 0; if (GetSourceLinesCount() > 0) {//division by zero - iFS = 3*qFloor(fH/GetSourceLinesCount())/4; + iFS = 3*qFloor(fH/static_cast(GetSourceLinesCount()))/4; } if (iFS < MIN_FONT_SIZE) @@ -563,7 +563,7 @@ void VTextManager::FitFontSize(qreal fW, qreal fH) int iMaxLen = 0; TextLine maxLine; QFont fnt; - for (int i = 0; i < GetSourceLinesCount(); ++i) + for (vsizetype i = 0; i < GetSourceLinesCount(); ++i) { const TextLine& tl = GetSourceLine(i); fnt = m_font; diff --git a/src/libs/vlayout/vtextmanager.h b/src/libs/vlayout/vtextmanager.h index 47cb75415..36ee0075f 100644 --- a/src/libs/vlayout/vtextmanager.h +++ b/src/libs/vlayout/vtextmanager.h @@ -92,8 +92,8 @@ public: auto GetAllSourceLines() const -> QVector; void SetAllSourceLines(const QVector &lines); - auto GetSourceLinesCount() const -> int; - auto GetSourceLine(int i) const -> const TextLine&; + auto GetSourceLinesCount() const -> vsizetype; + auto GetSourceLine(vsizetype i) const -> const TextLine&; auto MaxLineWidth(int width) const -> int; diff --git a/src/libs/vmisc/backport/text.h b/src/libs/vmisc/backport/text.h new file mode 100644 index 000000000..05bf70ce8 --- /dev/null +++ b/src/libs/vmisc/backport/text.h @@ -0,0 +1,44 @@ +/************************************************************************ + ** + ** @file text.h + ** @author Roman Telezhynskyi + ** @date 1 2, 2023 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2023 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#ifndef TEXT_H +#define TEXT_H + +#include +#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +namespace Qt +{ +static auto endl = ::endl; +static auto flush = ::flush; +static auto dec = ::dec; +static auto SkipEmptyParts = QString::SkipEmptyParts; +} +#endif + +#endif // TEXT_H diff --git a/src/libs/vmisc/commandoptions.cpp b/src/libs/vmisc/commandoptions.cpp index 272d9fa6e..c60948dee 100644 --- a/src/libs/vmisc/commandoptions.cpp +++ b/src/libs/vmisc/commandoptions.cpp @@ -30,9 +30,6 @@ #include "def.h" #include "literals.h" -#include -#include -#include #include const QString LONG_OPTION_BASENAME = QStringLiteral("basename"); diff --git a/src/libs/vmisc/compatibility.h b/src/libs/vmisc/compatibility.h index 4aaeaa7c0..44f00d850 100644 --- a/src/libs/vmisc/compatibility.h +++ b/src/libs/vmisc/compatibility.h @@ -34,6 +34,24 @@ #include #include +#include "defglobal.h" + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +// WARNING:QVariant::load: unknown user type with name QMarginsF. +// QVariant::value() fails to convert unless QVariant::fromValue() has been called previously. +// https://stackoverflow.com/questions/70974383/qvariantvaluet-fails-to-convert-unless-qvariantfromvaluet-has-been-c +#if QT_VERSION >= QT_VERSION_CHECK(6, 1, 0) +#define REGISTER_META_TYPE_STREAM_OPERATORS(TYPE) \ +QMetaType::fromType().hasRegisteredDataStreamOperators(); // Dummy call +#else +#define REGISTER_META_TYPE_STREAM_OPERATORS(TYPE) \ +QVariant::fromValue(TYPE{}); // Dummy call +#endif // QT_VERSION >= QT_VERSION_CHECK(6, 1, 0) +#else +#define REGISTER_META_TYPE_STREAM_OPERATORS(TYPE) \ +qRegisterMetaTypeStreamOperators(#TYPE); +#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "diagnostic.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) @@ -205,8 +223,8 @@ inline auto Reverse(const QVector &container) -> QVector return container; } QVector reversed(container.size()); - qint32 j = 0; - for (qint32 i = container.size() - 1; i >= 0; --i) + vsizetype j = 0; + for (vsizetype i = container.size() - 1; i >= 0; --i) { reversed.replace(j, container.at(i)); ++j; @@ -302,4 +320,42 @@ inline auto Insert(QMap &map1, const QMap &map2) -> void #endif } +//--------------------------------------------------------------------------------------------------------------------- +inline auto VLocaleCharacter(const QString &character) -> QChar +{ + Q_ASSERT(character.size() == 1); +#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) + return character.front(); +#else + return character.at(0); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +inline auto VLocaleCharacter(const QChar &character) -> QChar +{ + return character; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline auto DropEventPos(const QDropEvent *event) -> QPoint +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return event->position().toPoint(); +#else + return event->pos(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto QLibraryPath(T loc) -> QString +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return QLibraryInfo::path(loc); +#else + return QLibraryInfo::location(loc); +#endif +} + #endif // COMPATIBILITY_H diff --git a/src/libs/vmisc/def.cpp b/src/libs/vmisc/def.cpp index 0a83d8447..fbb47d3ca 100644 --- a/src/libs/vmisc/def.cpp +++ b/src/libs/vmisc/def.cpp @@ -47,9 +47,6 @@ #include #include #include -#include -#include -#include #include #include #include @@ -293,7 +290,9 @@ void InitHighDpiScaling(int argc, char *argv[]) if (IsOptionSet(argc, argv, qPrintable(QLatin1String("--") + LONG_OPTION_NO_HDPI_SCALING))) { #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); +#endif #else qputenv("QT_DEVICE_PIXEL_RATIO", QByteArray("1")); #endif @@ -301,7 +300,9 @@ void InitHighDpiScaling(int argc, char *argv[]) else { #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // DPI support +#endif #else qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", QByteArray("1")); #endif diff --git a/src/libs/vmisc/defglobal.h b/src/libs/vmisc/defglobal.h index aa1022b0f..569c617a6 100644 --- a/src/libs/vmisc/defglobal.h +++ b/src/libs/vmisc/defglobal.h @@ -47,18 +47,17 @@ void qAsConst(const T &&) Q_DECL_EQ_DELETE; #endif #if QT_VERSION < QT_VERSION_CHECK(5, 13, 0) -#define Q_DISABLE_MOVE(Class) \ - Class(Class &&) = delete; \ - Class &operator=(Class &&) = delete; #define Q_DISABLE_COPY_MOVE(Class) \ Q_DISABLE_COPY(Class) \ - Q_DISABLE_MOVE(Class) + Class(Class &&) = delete; \ + Class &operator=(Class &&) = delete; #endif #ifndef Q_DISABLE_ASSIGN_MOVE #define Q_DISABLE_ASSIGN_MOVE(Class) \ Q_DISABLE_ASSIGN(Class) \ - Q_DISABLE_MOVE(Class) + Class(Class &&) = delete; \ + Class &operator=(Class &&) = delete; #endif #define SUFFIX_APPEND(x, y) x ## y // NOLINT(cppcoreguidelines-macro-usage) @@ -120,4 +119,15 @@ void qAsConst(const T &&) Q_DECL_EQ_DELETE; #endif // QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) #endif // (defined(Q_CC_GNU) && Q_CC_GNU < 409) && !defined(Q_CC_CLANG) +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +using vsizetype = qsizetype; +#else +using vsizetype = int; +#endif + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +class QTextCodec; +using VTextCodec = QTextCodec; +#endif + #endif // DEFGLOBAL_H diff --git a/src/libs/vmisc/dialogs/dialogexporttocsv.cpp b/src/libs/vmisc/dialogs/dialogexporttocsv.cpp index 381a05883..a6323af34 100644 --- a/src/libs/vmisc/dialogs/dialogexporttocsv.cpp +++ b/src/libs/vmisc/dialogs/dialogexporttocsv.cpp @@ -35,9 +35,14 @@ #include #include -#include #include +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vtextcodec.h" +#else +#include +#endif + #if QT_VERSION < QT_VERSION_CHECK(5, 7, 0) #include "../vmisc/backport/qoverload.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0) @@ -51,10 +56,10 @@ DialogExportToCSV::DialogExportToCSV(QWidget *parent) { ui->setupUi(this); - const QList mibs = QTextCodec::availableMibs(); + const QList mibs = VTextCodec::availableMibs(); for (auto mib : mibs) { - if (QTextCodec *codec = QTextCodec::codecForMib(mib)) + if (VTextCodec *codec = VTextCodec::codecForMib(mib)) { ui->comboBoxCodec->addItem(codec->name(), mib); } @@ -214,7 +219,7 @@ void DialogExportToCSV::ShowPreview() ui->groupBoxPreview->setVisible(true); - QxtCsvModel csv(m_fileName, nullptr, IsWithHeader(), GetSeparator(), QTextCodec::codecForMib(GetSelectedMib())); + QxtCsvModel csv(m_fileName, nullptr, IsWithHeader(), GetSeparator(), VTextCodec::codecForMib(GetSelectedMib())); const int columns = csv.columnCount(); const int rows = csv.rowCount(); @@ -285,10 +290,10 @@ void DialogExportToCSV::ShowFilePreview(const QString &fileName) QString DialogExportToCSV::MakeHelpCodecsList() { QString out = QStringLiteral("\n"); - const QList list = QTextCodec::availableMibs(); + const QList list = VTextCodec::availableMibs(); for (int i = 0; i < list.size(); ++i) { - if (QTextCodec *codec = QTextCodec::codecForMib(list.at(i))) + if (VTextCodec *codec = VTextCodec::codecForMib(list.at(i))) { out += QStringLiteral("\t* ") + codec->name(); out += i < list.size()-1 ? QLatin1String(",\n") : QLatin1String(".\n"); diff --git a/src/libs/vmisc/literals.h b/src/libs/vmisc/literals.h index a3508a9e6..126e4b05e 100644 --- a/src/libs/vmisc/literals.h +++ b/src/libs/vmisc/literals.h @@ -29,7 +29,9 @@ #define LITERALS_H class QString; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) class QStringList; +#endif // From documantation: If you use QStringLiteral you should avoid declaring the same literal in multiple places: This // furthermore blows up the binary sizes. diff --git a/src/libs/vmisc/projectversion.cpp b/src/libs/vmisc/projectversion.cpp index f0906eaee..9ffc6e8a9 100644 --- a/src/libs/vmisc/projectversion.cpp +++ b/src/libs/vmisc/projectversion.cpp @@ -33,10 +33,7 @@ #include #include #include -#include #include -#include -#include #include #include diff --git a/src/libs/vmisc/qxtcsvmodel.cpp b/src/libs/vmisc/qxtcsvmodel.cpp index 76d4dc082..336294cb2 100644 --- a/src/libs/vmisc/qxtcsvmodel.cpp +++ b/src/libs/vmisc/qxtcsvmodel.cpp @@ -41,10 +41,20 @@ #include #include +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else +#include +#endif + #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "../vmisc/diagnostic.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +#include "backport/text.h" +#endif + class QxtCsvModelPrivate : public QxtPrivate { public: @@ -55,7 +65,7 @@ public: QList csvData; QStringList header; - int maxColumn; + vsizetype maxColumn; QxtCsvModel::QuoteMode quoteMode; private: @@ -81,7 +91,7 @@ QxtCsvModel::QxtCsvModel(QObject *parent) : QAbstractTableModel(parent) \sa setSource */ -QxtCsvModel::QxtCsvModel(QIODevice *file, QObject *parent, bool withHeader, QChar separator, QTextCodec* codec) +QxtCsvModel::QxtCsvModel(QIODevice *file, QObject *parent, bool withHeader, QChar separator, VTextCodec* codec) : QAbstractTableModel(parent) { QXT_INIT_PRIVATE(QxtCsvModel) @@ -98,7 +108,7 @@ QxtCsvModel::QxtCsvModel(QIODevice *file, QObject *parent, bool withHeader, QCha \sa setSource */ -QxtCsvModel::QxtCsvModel(const QString &filename, QObject *parent, bool withHeader, QChar separator, QTextCodec* codec) +QxtCsvModel::QxtCsvModel(const QString &filename, QObject *parent, bool withHeader, QChar separator, VTextCodec* codec) : QAbstractTableModel(parent) { QXT_INIT_PRIVATE(QxtCsvModel) @@ -117,7 +127,7 @@ int QxtCsvModel::rowCount(const QModelIndex& parent) const { return 0; } - return qxt_d().csvData.count(); + return static_cast(qxt_d().csvData.count()); } /*! @@ -129,7 +139,7 @@ int QxtCsvModel::columnCount(const QModelIndex& parent) const { return 0; } - return qxt_d().maxColumn; + return static_cast(qxt_d().maxColumn); } /*! @@ -179,7 +189,7 @@ QVariant QxtCsvModel::headerData(int section, Qt::Orientation orientation, int r Reads in a CSV file from the provided \a file using \a codec. */ -void QxtCsvModel::setSource(const QString &filename, bool withHeader, QChar separator, QTextCodec* codec) +void QxtCsvModel::setSource(const QString &filename, bool withHeader, QChar separator, VTextCodec* codec) { QFile src(filename); setSource(&src, withHeader, separator, codec); @@ -194,7 +204,7 @@ void QxtCsvModel::setSource(const QString &filename, bool withHeader, QChar sepa \sa quoteMode */ -void QxtCsvModel::setSource(QIODevice *file, bool withHeader, QChar separator, QTextCodec* codec) +void QxtCsvModel::setSource(QIODevice *file, bool withHeader, QChar separator, VTextCodec* codec) { QxtCsvModelPrivate* d_ptr = &qxt_d(); bool headerSet = !withHeader; @@ -217,7 +227,11 @@ void QxtCsvModel::setSource(QIODevice *file, bool withHeader, QChar separator, Q QChar ch, buffer(0); bool readCR = false; QTextStream stream(file); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + codec ? stream.setEncoding(codec->Encoding()) : stream.setAutoDetectUnicode(true); +#else codec ? stream.setCodec(codec) : stream.setAutoDetectUnicode(true); +#endif while (not stream.atEnd()) { if (buffer != QChar(0)) @@ -325,7 +339,7 @@ void QxtCsvModel::setSource(QIODevice *file, bool withHeader, QChar separator, Q void QxtCsvModel::setHeaderData(const QStringList& data) { qxt_d().header = data; - emit headerDataChanged(Qt::Horizontal, 0, data.count()); + emit headerDataChanged(Qt::Horizontal, 0, static_cast(data.count())); } /*! @@ -586,7 +600,7 @@ static QString qxt_addCsvQuotes(QxtCsvModel::QuoteMode mode, QString field) Fields in the output file will be separated by \a separator. Set \a withHeader to true to output a row of headers at the top of the file. */ -bool QxtCsvModel::toCSV(QIODevice* dest, QString &error, bool withHeader, QChar separator, QTextCodec* codec) const +bool QxtCsvModel::toCSV(QIODevice* dest, QString &error, bool withHeader, QChar separator, VTextCodec* codec) const { const QxtCsvModelPrivate& d_ptr = qxt_d(); int row, col, rows, cols; @@ -602,10 +616,16 @@ bool QxtCsvModel::toCSV(QIODevice* dest, QString &error, bool withHeader, QChar } } QTextStream stream(dest); + if (codec) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + stream.setEncoding(codec->Encoding()); +#else stream.setCodec(codec); +#endif } + if (withHeader) { data = QString(); @@ -617,11 +637,7 @@ bool QxtCsvModel::toCSV(QIODevice* dest, QString &error, bool withHeader, QChar } data += qxt_addCsvQuotes(d_ptr.quoteMode, d_ptr.header.at(col)); } -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - stream << data << endl; -#else stream << data << Qt::endl; -#endif } for (row = 0; row < rows; ++row) { @@ -642,17 +658,9 @@ bool QxtCsvModel::toCSV(QIODevice* dest, QString &error, bool withHeader, QChar data += qxt_addCsvQuotes(d_ptr.quoteMode, QString()); } } -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - stream << data << endl; -#else stream << data << Qt::endl; -#endif } -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - stream << flush; -#else stream << Qt::flush; -#endif dest->close(); return true; } @@ -666,7 +674,7 @@ bool QxtCsvModel::toCSV(QIODevice* dest, QString &error, bool withHeader, QChar to output a row of headers at the top of the file. */ bool QxtCsvModel::toCSV(const QString &filename, QString &error, bool withHeader, QChar separator, - QTextCodec* codec) const + VTextCodec* codec) const { QFile dest(filename); return toCSV(&dest, error, withHeader, separator, codec); diff --git a/src/libs/vmisc/qxtcsvmodel.h b/src/libs/vmisc/qxtcsvmodel.h index 846b941c0..fad20f1f5 100644 --- a/src/libs/vmisc/qxtcsvmodel.h +++ b/src/libs/vmisc/qxtcsvmodel.h @@ -50,15 +50,19 @@ class QxtCsvModelPrivate; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +class VTextCodec; +#endif + class QxtCsvModel final : public QAbstractTableModel { Q_OBJECT // NOLINT public: explicit QxtCsvModel(QObject *parent = nullptr); explicit QxtCsvModel(QIODevice *file, QObject *parent = nullptr, bool withHeader = false, QChar separator = ',', - QTextCodec *codec = nullptr); + VTextCodec *codec = nullptr); explicit QxtCsvModel(const QString &filename, QObject *parent = nullptr, bool withHeader = false, - QChar separator = ',', QTextCodec *codec = nullptr); + QChar separator = ',', VTextCodec *codec = nullptr); virtual ~QxtCsvModel() = default; virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override; @@ -90,14 +94,14 @@ public: bool removeColumn(int col, const QModelIndex& parent = QModelIndex()); virtual bool removeColumns(int col, int count, const QModelIndex& parent = QModelIndex()) override; - void setSource(QIODevice *file, bool withHeader = false, QChar separator = ',', QTextCodec* codec = nullptr); + void setSource(QIODevice *file, bool withHeader = false, QChar separator = ',', VTextCodec* codec = nullptr); void setSource(const QString &filename, bool withHeader = false, QChar separator = ',', - QTextCodec* codec = nullptr); + VTextCodec* codec = nullptr); bool toCSV(QIODevice *file, QString &error, bool withHeader = false, QChar separator = ',', - QTextCodec* codec = nullptr) const; + VTextCodec* codec = nullptr) const; bool toCSV(const QString &filename, QString &error, bool withHeader = false, QChar separator = ',', - QTextCodec* codec = nullptr) const; + VTextCodec* codec = nullptr) const; enum QuoteOption { NoQuotes = 0, SingleQuote = 1, diff --git a/src/libs/vmisc/stable.h b/src/libs/vmisc/stable.h index 5f007595a..e64050279 100644 --- a/src/libs/vmisc/stable.h +++ b/src/libs/vmisc/stable.h @@ -73,6 +73,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vmisc/testpath.h b/src/libs/vmisc/testpath.h index 5ecdc4d57..bda082a60 100644 --- a/src/libs/vmisc/testpath.h +++ b/src/libs/vmisc/testpath.h @@ -37,7 +37,9 @@ #include class QPointF; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) template class QVector; +#endif class VSAPoint; class VRawSAPoint; diff --git a/src/libs/vmisc/testvapplication.h b/src/libs/vmisc/testvapplication.h index a50c14f50..bef581e75 100644 --- a/src/libs/vmisc/testvapplication.h +++ b/src/libs/vmisc/testvapplication.h @@ -32,6 +32,7 @@ #include "vabstractvalapplication.h" #include "projectversion.h" #include "../vmisc/vcommonsettings.h" +#include "../vmisc/compatibility.h" class VTestSettings : public VCommonSettings { @@ -41,7 +42,7 @@ public: QObject *parent = nullptr) : VCommonSettings(format, scope, organization, application, parent) { - qRegisterMetaTypeStreamOperators("QMarginsF"); + REGISTER_META_TYPE_STREAM_OPERATORS(QMarginsF); } }; diff --git a/src/libs/vmisc/vabstractapplication.cpp b/src/libs/vmisc/vabstractapplication.cpp index e8434f152..e60731ce0 100644 --- a/src/libs/vmisc/vabstractapplication.cpp +++ b/src/libs/vmisc/vabstractapplication.cpp @@ -32,9 +32,6 @@ #include #include #include -#include -#include -#include #include #include #include @@ -42,6 +39,14 @@ #include #include +#include "compatibility.h" + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else +#include +#endif + #ifdef Q_OS_UNIX # include #endif @@ -126,7 +131,7 @@ VAbstractApplication::VAbstractApplication(int &argc, char **argv) QLoggingCategory::setFilterRules(rules); } -#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // Enable support for HiDPI bitmap resources // The attribute is available since Qt 5.1, but by default disabled. // Because on Windows and Mac OS X we always use last version @@ -146,6 +151,19 @@ VAbstractApplication::VAbstractApplication(int &argc, char **argv) connect(this, &QApplication::aboutToQuit, this, &VAbstractApplication::AboutToQuit); } +//--------------------------------------------------------------------------------------------------------------------- +VAbstractApplication::~VAbstractApplication() +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QHashIterator i(m_codecs); + while (i.hasNext()) + { + i.next(); + delete i.value(); + } +#endif +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief translationsPath return path to the root directory that contain QM files. @@ -263,7 +281,7 @@ void VAbstractApplication::LoadTranslation(QString locale) #if defined(Q_OS_WIN) || defined(Q_OS_MAC) const QString qtQmDir = appQmDir; #else - const QString qtQmDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath); + const QString qtQmDir = QLibraryPath(QLibraryInfo::TranslationsPath); #endif LoadQM(qtTranslator, QStringLiteral("qt_"), locale, qtQmDir); installTranslator(qtTranslator); @@ -361,6 +379,28 @@ QFileDialog::Options VAbstractApplication::NativeFileDialog(QFileDialog::Options return options; } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +//--------------------------------------------------------------------------------------------------------------------- +VTextCodec *VAbstractApplication::TextCodecCache(QStringConverter::Encoding encoding) const +{ + if (m_codecs.contains(encoding)) + { + return m_codecs.value(encoding); + } + + return nullptr; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractApplication::CacheTextCodec(QStringConverter::Encoding encoding, VTextCodec *codec) +{ + if (not m_codecs.contains(encoding)) + { + m_codecs.insert(encoding, codec); + } +} +#endif + //--------------------------------------------------------------------------------------------------------------------- void VAbstractApplication::CheckSystemLocale() { diff --git a/src/libs/vmisc/vabstractapplication.h b/src/libs/vmisc/vabstractapplication.h index f42a278c8..ef7989d49 100644 --- a/src/libs/vmisc/vabstractapplication.h +++ b/src/libs/vmisc/vabstractapplication.h @@ -49,6 +49,10 @@ class QUndoStack; class VAbstractApplication;// use in define class VCommonSettings; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +class VTextCodec; +#endif + QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Wsuggest-final-types") QT_WARNING_DISABLE_GCC("-Wsuggest-final-methods") @@ -58,7 +62,7 @@ class VAbstractApplication : public QApplication Q_OBJECT // NOLINT public: VAbstractApplication(int &argc, char ** argv); - virtual ~VAbstractApplication() =default; + virtual ~VAbstractApplication(); virtual const VTranslateVars *TrVars()=0; @@ -84,6 +88,11 @@ public: QFileDialog::Options NativeFileDialog(QFileDialog::Options options = QFileDialog::Options()) const; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VTextCodec * TextCodecCache(QStringConverter::Encoding encoding) const; + void CacheTextCodec(QStringConverter::Encoding encoding, VTextCodec *codec); +#endif + #if defined(Q_OS_WIN) static void WinAttachConsole(); #endif @@ -116,6 +125,10 @@ protected slots: private: Q_DISABLE_COPY_MOVE(VAbstractApplication) // NOLINT +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QHash m_codecs{}; +#endif + void ClearTranslation(); }; diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index d46b427a6..d4904acdf 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -33,20 +33,23 @@ #include #include #include -#include -#include -#include #include #include -#include #include #include #include #include -#include "../vmisc/def.h" -#include "../vmisc/compatibility.h" -#include "../vmisc/literals.h" +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "vtextcodec.h" +#else +#include +#endif + +#include "def.h" +#include "defglobal.h" +#include "compatibility.h" +#include "literals.h" const int VCommonSettings::defaultScrollingDuration = 300; const int VCommonSettings::scrollingDurationMin = 100; @@ -117,7 +120,6 @@ Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPatternGraphicalOutput, (QLatin1 Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRecentFileList, (QLatin1String("recentFileList"))) // NOLINT Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralRestoreFileList, (QLatin1String("restoreFileList"))) // NOLINT Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralGeometry, (QLatin1String("geometry"))) // NOLINT -Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralWindowState, (QLatin1String("windowState"))) // NOLINT Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingGeneralToolbarsState, (QLatin1String("toolbarsState"))) // NOLINT Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationDarkMode, (QLatin1String("configuration/dark_mode"))) // NOLINT Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPreferenceDialogSize, (QLatin1String("preferenceDialogSize"))) // NOLINT @@ -752,18 +754,6 @@ void VCommonSettings::SetGeometry(const QByteArray &value) setValue(*settingGeneralGeometry, value); } -//--------------------------------------------------------------------------------------------------------------------- -auto VCommonSettings::GetWindowState() const -> QByteArray -{ - return value(*settingGeneralWindowState).toByteArray(); -} - -//--------------------------------------------------------------------------------------------------------------------- -void VCommonSettings::SetWindowState(const QByteArray &value) -{ - setValue(*settingGeneralWindowState, value); -} - //--------------------------------------------------------------------------------------------------------------------- auto VCommonSettings::GetToolbarsState() const -> QByteArray { @@ -1012,7 +1002,7 @@ auto VCommonSettings::GetCSVCodec() const -> int //--------------------------------------------------------------------------------------------------------------------- auto VCommonSettings::GetDefCSVCodec() -> int { - return QTextCodec::codecForLocale()->mibEnum(); + return VTextCodec::codecForLocale()->mibEnum(); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h index 22422e88f..b18f2fcc3 100644 --- a/src/libs/vmisc/vcommonsettings.h +++ b/src/libs/vmisc/vcommonsettings.h @@ -140,9 +140,6 @@ public: auto GetGeometry() const -> QByteArray; void SetGeometry(const QByteArray &value); - auto GetWindowState() const -> QByteArray; - void SetWindowState(const QByteArray &value); - auto GetToolbarsState() const -> QByteArray; void SetToolbarsState(const QByteArray &value); diff --git a/src/libs/vmisc/vmisc.pri b/src/libs/vmisc/vmisc.pri index 56429fc5c..2418b6e95 100644 --- a/src/libs/vmisc/vmisc.pri +++ b/src/libs/vmisc/vmisc.pri @@ -82,6 +82,7 @@ HEADERS += \ $$PWD/vmodifierkey.h \ $$PWD/typedef.h \ $$PWD/backport/qscopeguard.h \ + $$PWD/backport/text.h \ $$PWD/dialogs/dialogselectlanguage.h \ $$PWD/fpm/fixed.hpp \ $$PWD/fpm/math.hpp diff --git a/src/libs/vmisc/vmisc.qbs b/src/libs/vmisc/vmisc.qbs index 9fe506e73..725fcca94 100644 --- a/src/libs/vmisc/vmisc.qbs +++ b/src/libs/vmisc/vmisc.qbs @@ -1,46 +1,56 @@ +import qbs.Utilities + VLib { - Depends { name: "Qt"; submodules: ["printsupport"] } + Depends { name: "Qt"; submodules: ["core", "printsupport"] } name: "VMiscLib" - files: [ - "def.cpp", - "testpath.cpp", - "vabstractvalapplication.cpp", - "vabstractapplication.cpp", - "projectversion.cpp", - "vcommonsettings.cpp", - "vvalentinasettings.cpp", - "commandoptions.cpp", - "qxtcsvmodel.cpp", - "vtablesearch.cpp", - "literals.cpp", - "vmodifierkey.cpp", - "compatibility.h", - "lambdaconstants.h", - "def.h", - "testpath.h", - "vabstractvalapplication.h", - "vmath.h", - "vabstractapplication.h", - "projectversion.h", - "vcommonsettings.h", - "vvalentinasettings.h", - "debugbreak.h", - "vlockguard.h", - "vsysexits.h", - "commandoptions.h", - "qxtcsvmodel.h", - "vtablesearch.h", - "diagnostic.h", - "customevents.h", - "defglobal.h", - "testvapplication.h", - "literals.h", - "qt_dispatch/qt_dispatch.h", - "vdatastreamenum.h", - "vmodifierkey.h", - "typedef.h", - ] + files: { + var files = [ + "def.cpp", + "testpath.cpp", + "vabstractvalapplication.cpp", + "vabstractapplication.cpp", + "projectversion.cpp", + "vcommonsettings.cpp", + "vvalentinasettings.cpp", + "commandoptions.cpp", + "qxtcsvmodel.cpp", + "vtablesearch.cpp", + "literals.cpp", + "vmodifierkey.cpp", + "compatibility.h", + "lambdaconstants.h", + "def.h", + "testpath.h", + "vabstractvalapplication.h", + "vmath.h", + "vabstractapplication.h", + "projectversion.h", + "vcommonsettings.h", + "vvalentinasettings.h", + "debugbreak.h", + "vlockguard.h", + "vsysexits.h", + "commandoptions.h", + "qxtcsvmodel.h", + "vtablesearch.h", + "diagnostic.h", + "customevents.h", + "defglobal.h", + "testvapplication.h", + "literals.h", + "qt_dispatch/qt_dispatch.h", + "vdatastreamenum.h", + "vmodifierkey.h", + "typedef.h", + ] + + if (Utilities.versionCompare(Qt.core.version, "6") >= 0) { + files.push("vtextcodec.cpp", "vtextcodec.h"); + } + + return files; + } Group { name: "AppImage" @@ -106,6 +116,7 @@ VLib { files: [ "qoverload.h", "qscopeguard.h", + "text.h", ] } diff --git a/src/libs/vmisc/vsysexits.h b/src/libs/vmisc/vsysexits.h index c365b1bb4..15a5d9cd0 100644 --- a/src/libs/vmisc/vsysexits.h +++ b/src/libs/vmisc/vsysexits.h @@ -83,7 +83,9 @@ static const auto V_UNUSED V_EX_CONFIG = 78; /*Something was found in an un inline QTextStream& vStdErr() { static QTextStream ts(stderr, QIODevice::Unbuffered | QIODevice::WriteOnly); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) ts.setCodec("UTF-8"); +#endif return ts; } @@ -91,7 +93,9 @@ inline QTextStream& vStdErr() inline QTextStream& vStdOut() { static QTextStream ts(stdout, QIODevice::Unbuffered | QIODevice::WriteOnly); +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) ts.setCodec("UTF-8"); +#endif return ts; } diff --git a/src/libs/vmisc/vtablesearch.cpp b/src/libs/vmisc/vtablesearch.cpp index 8d01bcf05..2a9ec417d 100644 --- a/src/libs/vmisc/vtablesearch.cpp +++ b/src/libs/vmisc/vtablesearch.cpp @@ -76,7 +76,7 @@ void VTableSearch::Clear() } //--------------------------------------------------------------------------------------------------------------------- -void VTableSearch::ShowNext(int newIndex) +void VTableSearch::ShowNext(vsizetype newIndex) { if (not searchList.isEmpty()) { @@ -210,7 +210,7 @@ void VTableSearch::Find(const QString &term) //--------------------------------------------------------------------------------------------------------------------- void VTableSearch::FindPrevious() { - int newIndex = searchIndex - 1; + vsizetype newIndex = searchIndex - 1; if (newIndex < 0) { @@ -223,7 +223,7 @@ void VTableSearch::FindPrevious() //--------------------------------------------------------------------------------------------------------------------- void VTableSearch::FindNext() { - int newIndex = searchIndex + 1; + vsizetype newIndex = searchIndex + 1; if (newIndex >= searchList.size()) { @@ -256,7 +256,7 @@ void VTableSearch::RemoveRow(int row) } //--------------------------------------------------------------------------------------------------------------------- -void VTableSearch::AddRow(int row) +void VTableSearch::AddRow(vsizetype row) { if (searchIndex < 0 || searchIndex >= searchList.size()) { @@ -367,13 +367,13 @@ auto VTableSearch::IsUseUnicodePreperties() const -> bool } //--------------------------------------------------------------------------------------------------------------------- -auto VTableSearch::MatchIndex() const -> int +auto VTableSearch::MatchIndex() const -> vsizetype { return searchIndex; } //--------------------------------------------------------------------------------------------------------------------- -auto VTableSearch::MatchCount() const -> int +auto VTableSearch::MatchCount() const -> vsizetype { return searchList.size(); } diff --git a/src/libs/vmisc/vtablesearch.h b/src/libs/vmisc/vtablesearch.h index f931e93d1..53187888e 100644 --- a/src/libs/vmisc/vtablesearch.h +++ b/src/libs/vmisc/vtablesearch.h @@ -47,7 +47,7 @@ public: void FindPrevious(); void FindNext(); void RemoveRow(int row); - void AddRow(int row); + void AddRow(vsizetype row); void RefreshList(const QString &term); void SetMatchCase(bool value); @@ -62,8 +62,8 @@ public: void SetUseUnicodePreperties(bool value); auto IsUseUnicodePreperties() const -> bool; - auto MatchIndex() const -> int; - auto MatchCount() const -> int; + auto MatchIndex() const -> vsizetype; + auto MatchCount() const -> vsizetype; auto SearchPlaceholder() const -> QString; @@ -77,7 +77,7 @@ private: Q_DISABLE_COPY_MOVE(VTableSearch) // NOLINT QTableWidget *table; - int searchIndex{-1}; + vsizetype searchIndex{-1}; QList searchList{}; bool m_matchCase{false}; @@ -86,7 +86,7 @@ private: bool m_useUnicodePreperties{false}; void Clear(); - void ShowNext(int newIndex); + void ShowNext(vsizetype newIndex); auto FindTableItems(QString term) -> QList; auto FindCurrentMatchIndex() const -> int; }; diff --git a/src/libs/vmisc/vtextcodec.cpp b/src/libs/vmisc/vtextcodec.cpp new file mode 100644 index 000000000..05278f3d2 --- /dev/null +++ b/src/libs/vmisc/vtextcodec.cpp @@ -0,0 +1,174 @@ +/************************************************************************ + ** + ** @file vtextcodec.cpp + ** @author Roman Telezhynskyi + ** @date 11 2, 2023 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2023 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#include "vtextcodec.h" + +#include +#include + +#include "vabstractapplication.h" +#include "compatibility.h" + +namespace +{ +//--------------------------------------------------------------------------------------------------------------------- +auto QtCodecs() -> QMap +{ + static auto codecs = QMap + { + {QStringConverter::Latin1, {"ISO-8859-1", "ANSI_1252", "CP1252", "windows-1252", "LATIN1", "CP819", "CSISO", + "IBM819", "ISO_8859-1", "APPLE ROMAN", "ISO8859-1", "ISO8859-15", "ISO-IR-100", "L1", "IBM 850", + "850"}}, // Western Europe + {QStringConverter::Utf8, {"UTF-8", "UTF8", "UTF8-BIT"}}, + {QStringConverter::Utf16, {"UTF-16", "UTF16", "UTF16-BIT"}}, + {QStringConverter::Utf16BE, {"UTF-16BE"}}, + {QStringConverter::Utf16LE, {"UTF-16LE"}}, + {QStringConverter::Utf32, {"UTF-32"}}, + {QStringConverter::Utf32BE, {"UTF-32BE"}}, + {QStringConverter::Utf32LE, {"UTF-32LE"}}, + {QStringConverter::System, {"System"}}, + }; + + return codecs; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto CodecMibs() -> QMap +{ + static auto mibs = QMap + { + {QStringConverter::Utf8, 106}, + {QStringConverter::Utf16, 1015}, + {QStringConverter::Utf16BE, 1013}, + {QStringConverter::Utf16LE, 1014}, + {QStringConverter::Utf32, 1017}, + {QStringConverter::Utf32BE, 1018}, + {QStringConverter::Utf32LE, 1019}, + {QStringConverter::Latin1, 4}, + {QStringConverter::System, 0}, + }; + + return mibs; +} +} // namespace + +//--------------------------------------------------------------------------------------------------------------------- +VTextCodec::VTextCodec(QStringConverter::Encoding encoding) + : m_encoding(encoding) +{} + +//--------------------------------------------------------------------------------------------------------------------- +auto VTextCodec::codecForName(const QString &name) -> VTextCodec * +{ + QMap codecs = QtCodecs(); + + auto i = codecs.constBegin(); + while (i != codecs.constEnd()) + { + QStringList aliases = i.value(); + if (aliases.contains(name)) + { + return MakeCodec(i.key()); + } + ++i; + } + + return nullptr; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VTextCodec::codecForLocale() -> VTextCodec * +{ + return MakeCodec(QStringConverter::System); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VTextCodec::codecForMib(int mib) -> VTextCodec * +{ + QMap mibs = CodecMibs(); + + auto i = mibs.constBegin(); + while (i != mibs.constEnd()) + { + if (mib == i.value()) + { + return MakeCodec(i.key()); + } + ++i; + } + + return nullptr; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VTextCodec::availableMibs() -> QList +{ + return CodecMibs().values(); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VTextCodec::availableCodecs() -> QList +{ + QMap codecs = QtCodecs(); + + QList names; + names.reserve(codecs.size()); + + auto i = codecs.constBegin(); + while (i != codecs.constEnd()) + { + names.append(ConstFirst(i.value()).toLatin1()); + } + + return names; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VTextCodec::name() const -> QString +{ + return ConstFirst(QtCodecs().value(m_encoding)); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VTextCodec::mibEnum() const -> int +{ + return CodecMibs().value(m_encoding, 0); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VTextCodec::MakeCodec(QStringConverter::Encoding encoding) -> VTextCodec * +{ + VTextCodec *codec = VAbstractApplication::VApp()->TextCodecCache(encoding); + if (codec != nullptr) + { + return codec; + } + + codec = new VTextCodec(encoding); + VAbstractApplication::VApp()->CacheTextCodec(encoding, codec); + return codec; +} diff --git a/src/libs/vmisc/vtextcodec.h b/src/libs/vmisc/vtextcodec.h new file mode 100644 index 000000000..b2ec897ed --- /dev/null +++ b/src/libs/vmisc/vtextcodec.h @@ -0,0 +1,78 @@ +/************************************************************************ + ** + ** @file vtextcodec.h + ** @author Roman Telezhynskyi + ** @date 11 2, 2023 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2023 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#ifndef VTEXTCODEC_H +#define VTEXTCODEC_H + +class VTextCodec +{ +public: + virtual ~VTextCodec() = default; + + static auto codecForName(const QString &name) -> VTextCodec *; + static auto codecForLocale() -> VTextCodec *; + static auto codecForMib(int mib) -> VTextCodec *; + static auto availableMibs() -> QList; + static auto availableCodecs() -> QList; + + auto fromUnicode(const QString &str) const -> QByteArray; + auto toUnicode(const char *chars) const -> QString; + + auto name() const -> QString; + auto mibEnum() const -> int; + + auto Encoding() const -> QStringConverter::Encoding; + +protected: + explicit VTextCodec(QStringConverter::Encoding encoding); +private: + Q_DISABLE_COPY_MOVE(VTextCodec) // NOLINT + + QStringConverter::Encoding m_encoding{QStringConverter::Utf8}; + + static auto MakeCodec(QStringConverter::Encoding encoding) -> VTextCodec *; +}; + +//--------------------------------------------------------------------------------------------------------------------- +inline auto VTextCodec::Encoding() const -> QStringConverter::Encoding +{ + return m_encoding; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline auto VTextCodec::fromUnicode(const QString &str) const -> QByteArray +{ + return QStringEncoder(m_encoding)(str); +} + +//--------------------------------------------------------------------------------------------------------------------- +inline auto VTextCodec::toUnicode(const char *chars) const -> QString +{ + return QStringDecoder(m_encoding)(chars); +} + +#endif // VTEXTCODEC_H diff --git a/src/libs/vmisc/vvalentinasettings.cpp b/src/libs/vmisc/vvalentinasettings.cpp index 324c1fb6f..e1417468a 100644 --- a/src/libs/vmisc/vvalentinasettings.cpp +++ b/src/libs/vmisc/vvalentinasettings.cpp @@ -33,17 +33,15 @@ #include #include #include -#include -#include -#include #include #include #include #include +#include +#include #include "../vmisc/def.h" -#include "../vmisc/vmath.h" -#include "../vlayout/vbank.h" +#include "../vmisc/compatibility.h" #include "qglobal.h" #ifndef QBS_BUILD @@ -150,14 +148,14 @@ VValentinaSettings::VValentinaSettings(Format format, Scope scope, const QString QObject *parent) :VCommonSettings(format, scope, organization, application, parent) { - qRegisterMetaTypeStreamOperators("QMarginsF"); + REGISTER_META_TYPE_STREAM_OPERATORS(QMarginsF); } //--------------------------------------------------------------------------------------------------------------------- VValentinaSettings::VValentinaSettings(const QString &fileName, QSettings::Format format, QObject *parent) :VCommonSettings(fileName, format, parent) { - qRegisterMetaTypeStreamOperators("QMarginsF"); + REGISTER_META_TYPE_STREAM_OPERATORS(QMarginsF); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vmisc/vvalentinasettings.h b/src/libs/vmisc/vvalentinasettings.h index ea6e984e5..c8c830c18 100644 --- a/src/libs/vmisc/vvalentinasettings.h +++ b/src/libs/vmisc/vvalentinasettings.h @@ -34,10 +34,8 @@ #include #include #include -#include #include "vcommonsettings.h" -#include "../vlayout/vbank.h" class VValentinaSettings : public VCommonSettings { diff --git a/src/libs/vobj/stable.h b/src/libs/vobj/stable.h index 8cc9e44c1..95ed8dc77 100644 --- a/src/libs/vobj/stable.h +++ b/src/libs/vobj/stable.h @@ -77,6 +77,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vobj/vobjengine.cpp b/src/libs/vobj/vobjengine.cpp index 6a8ba4b8f..4b69bfbe1 100644 --- a/src/libs/vobj/vobjengine.cpp +++ b/src/libs/vobj/vobjengine.cpp @@ -46,8 +46,13 @@ #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "../vmisc/diagnostic.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) + #include "../vmisc/vmath.h" +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +#include "../vmisc/backport/text.h" +#endif + class QPaintDevice; class QPixmap; class QPoint; @@ -129,13 +134,8 @@ bool VObjEngine::begin(QPaintDevice *pdev) } stream = QSharedPointer(new QTextStream(outputDevice.data())); -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - *stream << "# Valentina OBJ File" << endl; - *stream << "# smart-pattern.com.ua/" << endl; -#else *stream << "# Valentina OBJ File" << Qt::endl; *stream << "# smart-pattern.com.ua/" << Qt::endl; -#endif return true; } @@ -175,11 +175,7 @@ void VObjEngine::drawPath(const QPainterPath &path) qint64 sq = Square(polygon); ++planeCount; -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - *stream << "o Plane." << QString("%1").arg(planeCount, 3, 10, QLatin1Char('0')) << endl; -#else *stream << "o Plane." << QString("%1").arg(planeCount, 3, 10, QLatin1Char('0')) << Qt::endl; -#endif quint32 num_points = 0; @@ -235,11 +231,7 @@ void VObjEngine::drawPath(const QPainterPath &path) } delaunay2d_release(res);//Don't forget release data -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - *stream << "s off" << endl; -#else *stream << "s off" << Qt::endl; -#endif } //--------------------------------------------------------------------------------------------------------------------- @@ -254,11 +246,7 @@ void VObjEngine::drawPolygon(const QPointF *points, int pointCount, PolygonDrawM { *stream << QString(" %1").arg(static_cast(globalPointsCount) - pointCount + i + 1); } -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - *stream << endl; -#else *stream << Qt::endl; -#endif } //--------------------------------------------------------------------------------------------------------------------- @@ -281,13 +269,8 @@ void VObjEngine::drawPoints(const QPointF *points, int pointCount) qreal x = ((points[i].x() - 0)/qFloor(size.width()/2.0)) - 1.0; qreal y = (((points[i].y() - 0)/qFloor(size.width()/2.0)) - 1.0)*-1; -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - *stream << "v" << " " << QString::number(x, 'f', 6 ) << " " << QString::number(y, 'f', 6 ) << " " - << "0.000000" << endl; -#else *stream << "v" << " " << QString::number(x, 'f', 6 ) << " " << QString::number(y, 'f', 6 ) << " " << "0.000000" << Qt::endl; -#endif ++globalPointsCount; } } @@ -368,7 +351,7 @@ qint64 VObjEngine::Square(const QPolygonF &poly) const QVector x; QVector y; - int n = poly.count(); + vsizetype n = poly.count(); qreal s, res = 0; qint64 sq = 0; diff --git a/src/libs/vobj/vobjengine.h b/src/libs/vobj/vobjengine.h index caa75416e..b37e58385 100644 --- a/src/libs/vobj/vobjengine.h +++ b/src/libs/vobj/vobjengine.h @@ -30,7 +30,6 @@ #define VOBJENGINE_H #include -#include #include #include #include diff --git a/src/libs/vpatterndb/calculator.cpp b/src/libs/vpatterndb/calculator.cpp index 56b2cf4e3..f605aae11 100644 --- a/src/libs/vpatterndb/calculator.cpp +++ b/src/libs/vpatterndb/calculator.cpp @@ -28,9 +28,6 @@ #include "calculator.h" -#include -#include -#include #include #include #include diff --git a/src/libs/vpatterndb/stable.h b/src/libs/vpatterndb/stable.h index c234ac96b..b5be7da84 100644 --- a/src/libs/vpatterndb/stable.h +++ b/src/libs/vpatterndb/stable.h @@ -77,6 +77,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vpatterndb/vpassmark.h b/src/libs/vpatterndb/vpassmark.h index 709fb82aa..ff3174c29 100644 --- a/src/libs/vpatterndb/vpassmark.h +++ b/src/libs/vpatterndb/vpassmark.h @@ -59,7 +59,7 @@ struct VPiecePassmarkData PassmarkAngleType passmarkAngleType{PassmarkAngleType::Straightforward}; bool isMainPathNode{true}; bool isShowSecondPassmark{true}; - int passmarkIndex{-1}; + vsizetype passmarkIndex{-1}; vidtype id{NULL_ID}; qreal globalPassmarkLength{0}; diff --git a/src/libs/vpatterndb/vpiece.cpp b/src/libs/vpatterndb/vpiece.cpp index 7b813d244..08fe9a3c3 100644 --- a/src/libs/vpatterndb/vpiece.cpp +++ b/src/libs/vpatterndb/vpiece.cpp @@ -103,7 +103,7 @@ bool IsPassmarksPossible(const QVector &path) } //--------------------------------------------------------------------------------------------------------------------- -QVector RotatePath(const QVector &path, int index) +QVector RotatePath(const QVector &path, vsizetype index) { if (index < 0 || index >= path.size()) { @@ -257,8 +257,8 @@ QVector VPiece::Passmarks(const VContainer *data) const continue;// skip node } - const int previousIndex = VPiecePath::FindInLoopNotExcludedUp(i, unitedPath); - const int nextIndex = VPiecePath::FindInLoopNotExcludedDown(i, unitedPath); + const vsizetype previousIndex = VPiecePath::FindInLoopNotExcludedUp(i, unitedPath); + const vsizetype nextIndex = VPiecePath::FindInLoopNotExcludedDown(i, unitedPath); passmarks += CreatePassmark(unitedPath, previousIndex, i, nextIndex, data); } @@ -649,7 +649,7 @@ const VGrainlineData &VPiece::GetGrainlineGeometry() const } //--------------------------------------------------------------------------------------------------------------------- -QVector VPiece::SeamAllowancePointsWithRotation(const VContainer *data, int makeFirst) const +QVector VPiece::SeamAllowancePointsWithRotation(const VContainer *data, vsizetype makeFirst) const { SCASSERT(data != nullptr); @@ -881,7 +881,8 @@ QVector VPiece::FilterRecords(QVector records) c } //--------------------------------------------------------------------------------------------------------------------- -QVector VPiece::GetNodeSAPoints(const QVector &path, int index, const VContainer *data) const +QVector VPiece::GetNodeSAPoints(const QVector &path, vsizetype index, + const VContainer *data) const { SCASSERT(data != nullptr) @@ -908,7 +909,7 @@ QVector VPiece::GetNodeSAPoints(const QVector &path, int i } //--------------------------------------------------------------------------------------------------------------------- -bool VPiece::GetPassmarkSAPoint(const QVector &path, int index, const VContainer *data, +bool VPiece::GetPassmarkSAPoint(const QVector &path, vsizetype index, const VContainer *data, VSAPoint &point) const { SCASSERT(data != nullptr) @@ -925,8 +926,9 @@ bool VPiece::GetPassmarkSAPoint(const QVector &path, int index, cons } //--------------------------------------------------------------------------------------------------------------------- -bool VPiece::GetPassmarkPreviousSAPoints(const QVector &path, int index, const VSAPoint &passmarkSAPoint, - const VContainer *data, VSAPoint &point, int passmarkIndex) const +bool VPiece::GetPassmarkPreviousSAPoints(const QVector &path, vsizetype index, + const VSAPoint &passmarkSAPoint, const VContainer *data, VSAPoint &point, + vsizetype passmarkIndex) const { SCASSERT(data != nullptr) @@ -942,7 +944,7 @@ bool VPiece::GetPassmarkPreviousSAPoints(const QVector &path, int in } bool found = false; - int nodeIndex = points.size()-1; + auto nodeIndex = points.size()-1; do { const VSAPoint previous = points.at(nodeIndex); @@ -964,8 +966,8 @@ bool VPiece::GetPassmarkPreviousSAPoints(const QVector &path, int in } //--------------------------------------------------------------------------------------------------------------------- -bool VPiece::GetPassmarkNextSAPoints(const QVector &path, int index, const VSAPoint &passmarkSAPoint, - const VContainer *data, VSAPoint &point, int passmarkIndex) const +bool VPiece::GetPassmarkNextSAPoints(const QVector &path, vsizetype index, const VSAPoint &passmarkSAPoint, + const VContainer *data, VSAPoint &point, vsizetype passmarkIndex) const { SCASSERT(data != nullptr) @@ -1004,7 +1006,7 @@ bool VPiece::GetPassmarkNextSAPoints(const QVector &path, int index, } //--------------------------------------------------------------------------------------------------------------------- -bool VPiece::IsPassmarkVisible(const QVector &path, int passmarkIndex) const +bool VPiece::IsPassmarkVisible(const QVector &path, vsizetype passmarkIndex) const { if (passmarkIndex < 0 || passmarkIndex >= path.size()) { @@ -1044,8 +1046,8 @@ bool VPiece::IsPassmarkVisible(const QVector &path, int passmarkInde } //--------------------------------------------------------------------------------------------------------------------- -VPassmark VPiece::CreatePassmark(const QVector &path, int previousIndex, int passmarkIndex, int nextIndex, - const VContainer *data) const +VPassmark VPiece::CreatePassmark(const QVector &path, vsizetype previousIndex, vsizetype passmarkIndex, + vsizetype nextIndex, const VContainer *data) const { SCASSERT(data != nullptr); @@ -1447,24 +1449,24 @@ auto VPiece::ShortNameRegExp() -> QString for(const auto &locale : allLocales) { - if (not positiveSigns.contains(locale.positiveSign())) + if (not positiveSigns.contains(LocalePositiveSign(locale))) { - positiveSigns.append(locale.positiveSign()); + positiveSigns.append(LocalePositiveSign(locale)); } - if (not negativeSigns.contains(locale.negativeSign())) + if (not negativeSigns.contains(LocaleNegativeSign(locale))) { - negativeSigns.append(locale.negativeSign()); + negativeSigns.append(LocaleNegativeSign(locale)); } - if (not decimalPoints.contains(locale.decimalPoint())) + if (not decimalPoints.contains(LocaleDecimalPoint(locale))) { - decimalPoints.append(locale.decimalPoint()); + decimalPoints.append(LocaleDecimalPoint(locale)); } - if (not groupSeparators.contains(locale.groupSeparator())) + if (not groupSeparators.contains(LocaleGroupSeparator(locale))) { - groupSeparators.append(locale.groupSeparator()); + groupSeparators.append(LocaleGroupSeparator(locale)); } } diff --git a/src/libs/vpatterndb/vpiece.h b/src/libs/vpatterndb/vpiece.h index 156c29042..c12fb857c 100644 --- a/src/libs/vpatterndb/vpiece.h +++ b/src/libs/vpatterndb/vpiece.h @@ -135,7 +135,7 @@ public: QVector GetUnitedPath(const VContainer *data) const; - QVector SeamAllowancePointsWithRotation(const VContainer *data, int makeFirst) const; + QVector SeamAllowancePointsWithRotation(const VContainer *data, vsizetype makeFirst) const; void SetGradationLabel(const QString &label); auto GetGradationLabel() const -> QString; @@ -153,18 +153,19 @@ private: QVector GetValidRecords() const; QVector FilterRecords(QVector records) const; - QVector GetNodeSAPoints(const QVector &path, int index, const VContainer *data) const; + QVector GetNodeSAPoints(const QVector &path, vsizetype index, const VContainer *data) const; - bool GetPassmarkSAPoint(const QVector &path, int index, const VContainer *data, VSAPoint &point) const; - bool GetPassmarkPreviousSAPoints(const QVector &path, int index, const VSAPoint &passmarkSAPoint, - const VContainer *data, VSAPoint &point, int passmarkIndex) const; - bool GetPassmarkNextSAPoints(const QVector &path, int index, const VSAPoint &passmarkSAPoint, - const VContainer *data, VSAPoint &point, int passmarkIndex) const; + bool GetPassmarkSAPoint(const QVector &path, vsizetype index, const VContainer *data, + VSAPoint &point) const; + bool GetPassmarkPreviousSAPoints(const QVector &path, vsizetype index, const VSAPoint &passmarkSAPoint, + const VContainer *data, VSAPoint &point, vsizetype passmarkIndex) const; + bool GetPassmarkNextSAPoints(const QVector &path, vsizetype index, const VSAPoint &passmarkSAPoint, + const VContainer *data, VSAPoint &point, vsizetype passmarkIndex) const; - bool IsPassmarkVisible(const QVector &path, int passmarkIndex) const; + bool IsPassmarkVisible(const QVector &path, vsizetype passmarkIndex) const; - VPassmark CreatePassmark(const QVector &path, int previousIndex, int passmarkIndex, int nextIndex, - const VContainer *data) const; + VPassmark CreatePassmark(const QVector &path, vsizetype previousIndex, vsizetype passmarkIndex, + vsizetype nextIndex, const VContainer *data) const; static int IsCSAStart(const QVector &records, quint32 id); diff --git a/src/libs/vpatterndb/vpiecepath.cpp b/src/libs/vpatterndb/vpiecepath.cpp index a1779d89f..c6f4e7681 100644 --- a/src/libs/vpatterndb/vpiecepath.cpp +++ b/src/libs/vpatterndb/vpiecepath.cpp @@ -300,19 +300,19 @@ void VPiecePath::Clear() } //--------------------------------------------------------------------------------------------------------------------- -qint32 VPiecePath::CountNodes() const +vsizetype VPiecePath::CountNodes() const { return d->m_nodes.size(); } //--------------------------------------------------------------------------------------------------------------------- -VPieceNode &VPiecePath::operator[](int indx) +VPieceNode &VPiecePath::operator[](vsizetype indx) { return d->m_nodes[indx]; } //--------------------------------------------------------------------------------------------------------------------- -const VPieceNode &VPiecePath::at(int indx) const +const VPieceNode &VPiecePath::at(vsizetype indx) const { return d->m_nodes.at(indx); } @@ -591,7 +591,7 @@ QVector VPiecePath::CurvesPainterPath(const VContainer *data) cons } //--------------------------------------------------------------------------------------------------------------------- -VSAPoint VPiecePath::StartSegment(const VContainer *data, const QVector &nodes, int i) +VSAPoint VPiecePath::StartSegment(const VContainer *data, const QVector &nodes, vsizetype i) { if (i < 0 || i > nodes.size()-1) { @@ -615,7 +615,7 @@ VSAPoint VPiecePath::StartSegment(const VContainer *data, const QVector 1) { - const int index = FindInLoopNotExcludedUp(i, nodes); + const vsizetype index = FindInLoopNotExcludedUp(i, nodes); if (index != i && index != -1) { @@ -626,7 +626,7 @@ VSAPoint VPiecePath::StartSegment(const VContainer *data, const QVector &nodes, int i) +VSAPoint VPiecePath::EndSegment(const VContainer *data, const QVector &nodes, vsizetype i) { if (i < 0 || i > nodes.size()-1) { @@ -650,7 +650,7 @@ VSAPoint VPiecePath::EndSegment(const VContainer *data, const QVector 2) { - const int index = FindInLoopNotExcludedDown(i, nodes); + const vsizetype index = FindInLoopNotExcludedDown(i, nodes); if (index != i && index != -1) { @@ -775,7 +775,7 @@ bool VPiecePath::OnEdge(quint32 p1, quint32 p2) const return false; } int i = IndexOfNode(list, p1); - int j1 = 0, j2 = 0; + vsizetype j1 = 0, j2 = 0; if (i == list.size() - 1) { @@ -811,7 +811,7 @@ bool VPiecePath::OnEdge(quint32 p1, quint32 p2) const * @param p2 id second point. * @return edge index or -1 if points don't located on edge */ -int VPiecePath::Edge(quint32 p1, quint32 p2) const +vsizetype VPiecePath::Edge(quint32 p1, quint32 p2) const { if (OnEdge(p1, p2) == false) { @@ -829,10 +829,8 @@ int VPiecePath::Edge(quint32 p1, quint32 p2) const { return list.size() - 1; } - else - { - return min; - } + + return min; } //--------------------------------------------------------------------------------------------------------------------- @@ -915,12 +913,12 @@ QPointF VPiecePath::NodePreviousPoint(const VContainer *data, int i) const { if (i < 0 || i > d->m_nodes.size()-1) { - return QPointF(); + return {}; } if (d->m_nodes.size() > 1) { - int index = 0; + vsizetype index = 0; if (i == 0) { index = d->m_nodes.size()-1; @@ -1056,14 +1054,14 @@ int VPiecePath::indexOfNode(const QVector &nodes, quint32 id) } //--------------------------------------------------------------------------------------------------------------------- -int VPiecePath::FindInLoopNotExcludedUp(int start, const QVector &nodes) +vsizetype VPiecePath::FindInLoopNotExcludedUp(vsizetype start, const QVector &nodes) { if (start < 0 || start >= nodes.size()) { return -1; } - int i = (start == 0) ? nodes.size()-1 : start-1; + vsizetype i = (start == 0) ? nodes.size()-1 : start-1; if (i < 0 || i >= nodes.size()) { @@ -1092,14 +1090,14 @@ int VPiecePath::FindInLoopNotExcludedUp(int start, const QVector &no } //--------------------------------------------------------------------------------------------------------------------- -int VPiecePath::FindInLoopNotExcludedDown(int start, const QVector &nodes) +vsizetype VPiecePath::FindInLoopNotExcludedDown(vsizetype start, const QVector &nodes) { if (start < 0 || start >= nodes.size()) { return -1; } - int i = (start == nodes.size()-1) ? 0 : start+1; + vsizetype i = (start == nodes.size()-1) ? 0 : start+1; if (i < 0 || i >= nodes.size()) { @@ -1147,7 +1145,7 @@ VSAPoint VPiecePath::PreparePointEkv(const VPieceNode &node, const VContainer *d //--------------------------------------------------------------------------------------------------------------------- QVector VPiecePath::CurveSeamAllowanceSegment(const VContainer *data, const QVector &nodes, - const QSharedPointer &curve, int i, + const QSharedPointer &curve, vsizetype i, bool reverse, qreal width, const QString &piece) { const VSAPoint begin = StartSegment(data, nodes, i); @@ -1245,11 +1243,11 @@ QVector VPiecePath::CurveSeamAllowanceSegment(const VContainer *data, } //--------------------------------------------------------------------------------------------------------------------- -QString VPiecePath::NodeName(const QVector &nodes, int nodeIndex, const VContainer *data) +QString VPiecePath::NodeName(const QVector &nodes, vsizetype nodeIndex, const VContainer *data) { if (not nodes.isEmpty() && (nodeIndex < 0 || nodeIndex >= nodes.size())) { - return QString(); + return {}; } try diff --git a/src/libs/vpatterndb/vpiecepath.h b/src/libs/vpatterndb/vpiecepath.h index d2693e472..02656e52a 100644 --- a/src/libs/vpatterndb/vpiecepath.h +++ b/src/libs/vpatterndb/vpiecepath.h @@ -61,10 +61,10 @@ public: void Append(const VPieceNode &node); void Clear(); - qint32 CountNodes() const; + vsizetype CountNodes() const; - VPieceNode & operator[](int indx); - const VPieceNode & at ( int indx ) const; + VPieceNode & operator[](vsizetype indx); + const VPieceNode & at (vsizetype indx ) const; QVector GetNodes() const; void SetNodes(const QVector &nodes); @@ -108,7 +108,7 @@ public: void NodeOnEdge(quint32 index, VPieceNode &p1, VPieceNode &p2) const; bool Contains(quint32 id) const; bool OnEdge(quint32 p1, quint32 p2) const; - int Edge(quint32 p1, quint32 p2) const; + vsizetype Edge(quint32 p1, quint32 p2) const; QVector ListNodePoint() const; @@ -124,20 +124,20 @@ public: static int indexOfNode(const QVector &nodes, quint32 id); - static int FindInLoopNotExcludedUp(int start, const QVector &nodes); - static int FindInLoopNotExcludedDown(int start, const QVector &nodes); + static vsizetype FindInLoopNotExcludedUp(vsizetype start, const QVector &nodes); + static vsizetype FindInLoopNotExcludedDown(vsizetype start, const QVector &nodes); - static VSAPoint StartSegment(const VContainer *data, const QVector &nodes, int i); - static VSAPoint EndSegment(const VContainer *data, const QVector &nodes, int i); + static VSAPoint StartSegment(const VContainer *data, const QVector &nodes, vsizetype i); + static VSAPoint EndSegment(const VContainer *data, const QVector &nodes, vsizetype i); static VSAPoint PreparePointEkv(const VPieceNode &node, const VContainer *data); static QVector CurveSeamAllowanceSegment(const VContainer *data, const QVector &nodes, const QSharedPointer &curve, - int i, bool reverse, qreal width, + vsizetype i, bool reverse, qreal width, const QString &piece = QString()); - static QString NodeName(const QVector &nodes, int nodeIndex, const VContainer *data); + static QString NodeName(const QVector &nodes, vsizetype nodeIndex, const VContainer *data); static QVector NodesToPoints(const VContainer *data, const QVector &nodes, const QString &piece = QString()); diff --git a/src/libs/vpatterndb/vtranslatemeasurements.cpp b/src/libs/vpatterndb/vtranslatemeasurements.cpp index 05e086a99..fedff7b62 100644 --- a/src/libs/vpatterndb/vtranslatemeasurements.cpp +++ b/src/libs/vpatterndb/vtranslatemeasurements.cpp @@ -56,8 +56,8 @@ VTranslateMeasurements::~VTranslateMeasurements() * @param bias hold change of length between translated and origin token string * @return true if was found measurement with same name. */ -bool VTranslateMeasurements::MeasurementsFromUser(QString &newFormula, int position, const QString &token, - int &bias) const +bool VTranslateMeasurements::MeasurementsFromUser(QString &newFormula, vsizetype position, const QString &token, + vsizetype &bias) const { QMap::const_iterator i = measurements.constBegin(); while (i != measurements.constEnd()) diff --git a/src/libs/vpatterndb/vtranslatemeasurements.h b/src/libs/vpatterndb/vtranslatemeasurements.h index 665e5d2f4..3ab83a698 100644 --- a/src/libs/vpatterndb/vtranslatemeasurements.h +++ b/src/libs/vpatterndb/vtranslatemeasurements.h @@ -42,7 +42,7 @@ public: VTranslateMeasurements(); virtual ~VTranslateMeasurements(); - bool MeasurementsFromUser(QString &newFormula, int position, const QString &token, int &bias) const; + bool MeasurementsFromUser(QString &newFormula, vsizetype position, const QString &token, vsizetype &bias) const; QString MFromUser(const QString &measurement) const; QString MToUser(const QString &measurement) const; diff --git a/src/libs/vpatterndb/vtranslatevars.cpp b/src/libs/vpatterndb/vtranslatevars.cpp index 51ebff020..b1ad3b3f6 100644 --- a/src/libs/vpatterndb/vtranslatevars.cpp +++ b/src/libs/vpatterndb/vtranslatevars.cpp @@ -39,10 +39,12 @@ #include "../qmuparser/qmuparsererror.h" #include "../qmuparser/qmutokenparser.h" #include "../qmuparser/qmutranslation.h" +#include "../qmuparser/qmudef.h" #include "../vpatterndb/vtranslatevars.h" #include "../vmisc/def.h" #include "../vmisc/vabstractapplication.h" #include "../vmisc/literals.h" +#include "../vmisc/compatibility.h" #include "vtranslatemeasurements.h" #include "pmsystems.h" @@ -623,8 +625,8 @@ void VTranslateVars::InitSystem(const QString &code, const qmu::QmuTranslation & * @param tokens all tokens * @param numbers all numbers */ -void VTranslateVars::CorrectionsPositions(int position, int bias, QMap &tokens, - QMap &numbers) +void VTranslateVars::CorrectionsPositions(vsizetype position, vsizetype bias, QMap &tokens, + QMap &numbers) { if (bias == 0) { @@ -636,14 +638,14 @@ void VTranslateVars::CorrectionsPositions(int position, int bias, QMap &tokens, - QMap &numbers) const +void VTranslateVars::TranslateVarsFromUser(QString &newFormula, QMap &tokens, + QMap &numbers) const { - QList tKeys = tokens.keys();// Take all tokens positions + QList tKeys = tokens.keys();// Take all tokens positions QList tValues = tokens.values(); - for (int i = 0; i < tKeys.size(); ++i) + for (vsizetype i = 0; i < tKeys.size(); ++i) { - int bias = 0; + vsizetype bias = 0; if (MeasurementsFromUser(newFormula, tKeys.at(i), tValues.at(i), bias)) { if (bias != 0) @@ -677,7 +679,7 @@ void VTranslateVars::TranslateVarsFromUser(QString &newFormula, QMap &tokens, - QMap &numbers, bool osSeparator) +void VTranslateVars::TranslateNumbersFromUser(QString &newFormula, QMap &tokens, + QMap &numbers, bool osSeparator) { QLocale loc = QLocale(); // User locale if (loc != QLocale::c() && osSeparator) {// User want use Os separator - QList nKeys = numbers.keys();// Positions for all numbers in expression + QList nKeys = numbers.keys();// Positions for all numbers in expression QList nValues = numbers.values(); for (int i = 0; i < nKeys.size(); ++i) { @@ -707,7 +709,7 @@ void VTranslateVars::TranslateNumbersFromUser(QString &newFormula, QMap &tokens, - QMap &numbers) const +void VTranslateVars::TranslateVarsToUser(QString &newFormula, QMap &tokens, + QMap &numbers) const { - QList tKeys = tokens.keys(); + QList tKeys = tokens.keys(); QList tValues = tokens.values(); - for (int i = 0; i < tKeys.size(); ++i) + for (vsizetype i = 0; i < tKeys.size(); ++i) { if (measurements.contains(tValues.at(i))) { newFormula.replace(tKeys.at(i), tValues.at(i).length(), measurements.value(tValues.at(i)) .translate(VAbstractApplication::VApp()->Settings()->GetLocale())); - int bias = tValues.at(i).length() - + auto bias = tValues.at(i).length() - measurements.value(tValues.at(i)) .translate(VAbstractApplication::VApp()->Settings()->GetLocale()).length(); if (bias != 0) @@ -748,7 +750,7 @@ void VTranslateVars::TranslateVarsToUser(QString &newFormula, QMap newFormula.replace(tKeys.at(i), tValues.at(i).length(), functions.value(tValues.at(i)) .translate(VAbstractApplication::VApp()->Settings()->GetLocale())); - int bias = tValues.at(i).length() - + auto bias = tValues.at(i).length() - functions.value(tValues.at(i)) .translate(VAbstractApplication::VApp()->Settings()->GetLocale()).length(); if (bias != 0) @@ -760,7 +762,7 @@ void VTranslateVars::TranslateVarsToUser(QString &newFormula, QMap continue; } - int bias = 0; + vsizetype bias = 0; if (VariablesToUser(newFormula, tKeys.at(i), tValues.at(i), bias)) { if (bias != 0) @@ -774,19 +776,19 @@ void VTranslateVars::TranslateVarsToUser(QString &newFormula, QMap if (tValues.at(i) == QChar('-')) {// unary minus - newFormula.replace(tKeys.at(i), 1, QLocale().negativeSign()); + newFormula.replace(tKeys.at(i), 1, LocaleNegativeSign(QLocale())); } } } //--------------------------------------------------------------------------------------------------------------------- -void VTranslateVars::TranslateNumbersToUser(QString &newFormula, QMap &tokens, - QMap &numbers, bool osSeparator) +void VTranslateVars::TranslateNumbersToUser(QString &newFormula, QMap &tokens, + QMap &numbers, bool osSeparator) { QLocale loc = QLocale();// User locale if (loc != QLocale::C && osSeparator) {// User want use Os separator - QList nKeys = numbers.keys();// Positions for all numbers in expression + QList nKeys = numbers.keys();// Positions for all numbers in expression QList nValues = numbers.values(); for (int i = 0; i < nKeys.size(); ++i) { @@ -801,12 +803,12 @@ void VTranslateVars::TranslateNumbersToUser(QString &newFormula, QMap &tokens) +void VTranslateVars::BiasTokens(vsizetype position, vsizetype bias, QMap &tokens) { - QMap newTokens; - QMap::const_iterator i = tokens.constBegin(); + QMap newTokens; + QMap::const_iterator i = tokens.constBegin(); while (i != tokens.constEnd()) { if (i.key()<= position) @@ -854,7 +856,8 @@ void VTranslateVars::BiasTokens(int position, int bias, QMap &toke * @param bias hold change of length between translated and origin token string * @return true if was found variable with same name. */ -auto VTranslateVars::VariablesFromUser(QString &newFormula, int position, const QString &token, int &bias) const -> bool +auto VTranslateVars::VariablesFromUser(QString &newFormula, vsizetype position, const QString &token, + vsizetype &bias) const -> bool { const QString currentLengthTr = variables.value(currentLength).translate(VAbstractApplication::VApp()->Settings()->GetLocale()); @@ -895,7 +898,8 @@ auto VTranslateVars::VariablesFromUser(QString &newFormula, int position, const * @param bias hold change of length between translated and origin token string * @return true if was found function with same name. */ -auto VTranslateVars::FunctionsFromUser(QString &newFormula, int position, const QString &token, int &bias) const -> bool +auto VTranslateVars::FunctionsFromUser(QString &newFormula, vsizetype position, const QString &token, + vsizetype &bias) const -> bool { QMap::const_iterator i = functions.constBegin(); while (i != functions.constEnd()) @@ -920,7 +924,8 @@ auto VTranslateVars::FunctionsFromUser(QString &newFormula, int position, const * @param bias hold change of length between translated and origin token string * @return true if was found variable with same name. */ -auto VTranslateVars::VariablesToUser(QString &newFormula, int position, const QString &token, int &bias) const -> bool +auto VTranslateVars::VariablesToUser(QString &newFormula, vsizetype position, const QString &token, + vsizetype &bias) const -> bool { QMap::const_iterator i = variables.constBegin(); while (i != variables.constEnd()) @@ -951,7 +956,7 @@ auto VTranslateVars::VariablesToUser(QString &newFormula, int position, const QS auto VTranslateVars::InternalVarToUser(const QString &var) const -> QString { QString newVar = var; - int bias = 0; + vsizetype bias = 0; if (VariablesToUser(newVar, 0, var, bias)) { return newVar; @@ -990,7 +995,7 @@ auto VTranslateVars::VarFromUser(const QString &var) const -> QString } QString newVar = var; - int bias = 0; + vsizetype bias = 0; if (MeasurementsFromUser(newVar, 0, var, bias)) { return newVar; @@ -1044,8 +1049,8 @@ auto VTranslateVars::FormulaFromUser(const QString &formula, bool osSeparator) c // Eval formula QScopedPointer cal( new qmu::QmuTokenParser(formula, osSeparator, true, GetTranslatedFunctions())); - QMap tokens = cal->GetTokens();// Tokens (variables, measurements) - QMap numbers = cal->GetNumbers();// All numbers in expression for changing decimal separator + QMap tokens = cal->GetTokens();// Tokens (variables, measurements) + QMap numbers = cal->GetNumbers();// All numbers in expression for changing decimal separator delete cal.take(); QString newFormula = formula;// Local copy for making changes @@ -1087,8 +1092,8 @@ auto VTranslateVars::FormulaToUser(const QString &formula, bool osSeparator) con QString newFormula = formula;// Local copy for making changes - QMap tokens; - QMap numbers; + QMap tokens; + QMap numbers; try { QScopedPointer cal(new qmu::QmuTokenParser(formula, false, false));// Eval formula diff --git a/src/libs/vpatterndb/vtranslatevars.h b/src/libs/vpatterndb/vtranslatevars.h index 8d45c6730..0f47ef44c 100644 --- a/src/libs/vpatterndb/vtranslatevars.h +++ b/src/libs/vpatterndb/vtranslatevars.h @@ -41,9 +41,11 @@ public: explicit VTranslateVars(); ~VTranslateVars() override = default; - auto VariablesFromUser(QString &newFormula, int position, const QString &token, int &bias) const -> bool; - auto FunctionsFromUser(QString &newFormula, int position, const QString &token, int &bias) const -> bool; - auto VariablesToUser(QString &newFormula, int position, const QString &token, int &bias) const -> bool; + auto VariablesFromUser(QString &newFormula, vsizetype position, const QString &token, + vsizetype &bias) const -> bool; + auto FunctionsFromUser(QString &newFormula, vsizetype position, const QString &token, + vsizetype &bias) const -> bool; + auto VariablesToUser(QString &newFormula, vsizetype position, const QString &token, vsizetype &bias) const -> bool; auto InternalVarToUser(const QString &var) const -> QString; @@ -67,7 +69,7 @@ public: auto GetFunctionsDescriptions() const -> QMap; auto GetFunctionsArguments() const -> QMap; - static void BiasTokens(int position, int bias, QMap &tokens); + static void BiasTokens(vsizetype position, vsizetype bias, QMap &tokens); private: // cppcheck-suppress unknownMacro @@ -91,15 +93,18 @@ private: void InitSystem(const QString &code, const qmu::QmuTranslation &name, const qmu::QmuTranslation &author, const qmu::QmuTranslation &book); - static void CorrectionsPositions(int position, int bias, QMap &tokens, QMap &numbers); + static void CorrectionsPositions(vsizetype position, vsizetype bias, QMap &tokens, + QMap &numbers); - void TranslateVarsFromUser(QString &newFormula, QMap &tokens, QMap &numbers) const; - static void TranslateNumbersFromUser(QString &newFormula, QMap &tokens, QMap &numbers, - bool osSeparator); + void TranslateVarsFromUser(QString &newFormula, QMap &tokens, + QMap &numbers) const; + static void TranslateNumbersFromUser(QString &newFormula, QMap &tokens, + QMap &numbers, bool osSeparator); - void TranslateVarsToUser(QString &newFormula, QMap &tokens, QMap &numbers) const; - static void TranslateNumbersToUser(QString &newFormula, QMap &tokens, QMap &numbers, - bool osSeparator); + void TranslateVarsToUser(QString &newFormula, QMap &tokens, + QMap &numbers) const; + static void TranslateNumbersToUser(QString &newFormula, QMap &tokens, + QMap &numbers, bool osSeparator); }; #endif // VTRANSLATEVARS_H diff --git a/src/libs/vpropertyexplorer/plugins/Vector3d/vvector3dproperty.cpp b/src/libs/vpropertyexplorer/plugins/Vector3d/vvector3dproperty.cpp index 519b5e92d..487808178 100644 --- a/src/libs/vpropertyexplorer/plugins/Vector3d/vvector3dproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/Vector3d/vvector3dproperty.cpp @@ -28,9 +28,19 @@ #include "../vnumberproperty.h" VPE::QVector3DProperty::QVector3DProperty(const QString& name) - : VProperty(name, QVariant::String) // todo: QVariant::Vector3D?? + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::QString) // todo: QVariant::Vector3D?? +#else + QVariant::String) // todo: QVariant::Vector3D?? +#endif { - QVariant tmpFloat(0); tmpFloat.convert(QVariant::Double); + QVariant tmpFloat(0); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + tmpFloat.convert(QMetaType(QMetaType::Double)); +#else + tmpFloat.convert(QVariant::Double); +#endif auto* tmpX = new VDoubleProperty("X"); addChild(tmpX); tmpX->setUpdateBehaviour(true, false); auto* tmpY = new VDoubleProperty("Y"); addChild(tmpY); tmpY->setUpdateBehaviour(true, false); auto* tmpZ = new VDoubleProperty("Z"); addChild(tmpZ); tmpZ->setUpdateBehaviour(true, false); @@ -94,9 +104,19 @@ void VPE::QVector3DProperty::setVector(double x, double y, double z) return; } - QVariant tmpX(x); tmpX.convert(QVariant::Double); - QVariant tmpY(y); tmpY.convert(QVariant::Double); - QVariant tmpZ(z); tmpZ.convert(QVariant::Double); + QVariant tmpX(x); + QVariant tmpY(y); + QVariant tmpZ(z); + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + tmpX.convert(QMetaType(QMetaType::Double)); + tmpY.convert(QMetaType(QMetaType::Double)); + tmpZ.convert(QMetaType(QMetaType::Double)); +#else + tmpX.convert(QVariant::Double); + tmpY.convert(QVariant::Double); + tmpZ.convert(QVariant::Double); +#endif d_ptr->Children.at(0)->setValue(tmpX); d_ptr->Children.at(1)->setValue(tmpY); d_ptr->Children.at(2)->setValue(tmpZ); diff --git a/src/libs/vpropertyexplorer/plugins/vboolproperty.cpp b/src/libs/vpropertyexplorer/plugins/vboolproperty.cpp index db7ada18e..5a168035d 100644 --- a/src/libs/vpropertyexplorer/plugins/vboolproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vboolproperty.cpp @@ -28,10 +28,19 @@ #include "../vproperty_p.h" VPE::VBoolProperty::VBoolProperty(const QString& name) : - VProperty(name, QVariant::Bool) + VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Bool) +#else + QVariant::Bool) +#endif { d_ptr->VariantValue.setValue(false); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + d_ptr->VariantValue.convert(QMetaType(QMetaType::Bool)); +#else d_ptr->VariantValue.convert(QVariant::Bool); +#endif } @@ -99,7 +108,11 @@ auto VPE::VBoolProperty::getEditorData(const QWidget *editor) const -> QVariant void VPE::VBoolProperty::setValue(const QVariant &value) { VProperty::d_ptr->VariantValue = value; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Bool)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Bool); +#endif if (VProperty::d_ptr->editor != nullptr) { diff --git a/src/libs/vpropertyexplorer/plugins/vcolorproperty.cpp b/src/libs/vpropertyexplorer/plugins/vcolorproperty.cpp index 4bf9a4fd7..88cd5785d 100644 --- a/src/libs/vpropertyexplorer/plugins/vcolorproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vcolorproperty.cpp @@ -29,7 +29,12 @@ #include "vcolorpropertyeditor.h" VPE::VColorProperty::VColorProperty(const QString &name) : - VProperty(name, QVariant::Color) + VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::QColor) +#else + QVariant::Color) +#endif { } diff --git a/src/libs/vpropertyexplorer/plugins/vemptyproperty.cpp b/src/libs/vpropertyexplorer/plugins/vemptyproperty.cpp index ec038cff3..e9d5874b5 100644 --- a/src/libs/vpropertyexplorer/plugins/vemptyproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vemptyproperty.cpp @@ -33,7 +33,12 @@ class VPropertyPrivate; } // namespace VPE VPE::VEmptyProperty::VEmptyProperty(const QString& name) - : VProperty(name, QVariant::Invalid) + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::UnknownType) +#else + QVariant::Invalid) +#endif { } diff --git a/src/libs/vpropertyexplorer/plugins/venumproperty.cpp b/src/libs/vpropertyexplorer/plugins/venumproperty.cpp index 62e7b61cb..c35bae91d 100644 --- a/src/libs/vpropertyexplorer/plugins/venumproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/venumproperty.cpp @@ -28,10 +28,20 @@ #include "../vproperty_p.h" VPE::VEnumProperty::VEnumProperty(const QString& name) - : VProperty(name, QVariant::Int), EnumerationLiterals() + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Int), +#else + QVariant::Int), +#endif + EnumerationLiterals() { VProperty::d_ptr->VariantValue = 0; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Int)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Int); +#endif } @@ -115,7 +125,11 @@ void VPE::VEnumProperty::setValue(const QVariant& value) } VProperty::d_ptr->VariantValue = tmpIndex; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Int)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Int); +#endif if (VProperty::d_ptr->editor != nullptr) { diff --git a/src/libs/vpropertyexplorer/plugins/vfileproperty.cpp b/src/libs/vpropertyexplorer/plugins/vfileproperty.cpp index 2322549dd..aa480c578 100644 --- a/src/libs/vpropertyexplorer/plugins/vfileproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vfileproperty.cpp @@ -30,7 +30,13 @@ #include "../vproperty_p.h" VPE::VFileProperty::VFileProperty(const QString& name) - : VProperty(new VFilePropertyPrivate(name, QVariant::String)) + : VProperty( + new VFilePropertyPrivate(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::QString)) +#else + QVariant::String)) +#endif { } diff --git a/src/libs/vpropertyexplorer/plugins/vfilepropertyeditor.cpp b/src/libs/vpropertyexplorer/plugins/vfilepropertyeditor.cpp index de52ca6b3..e744add37 100644 --- a/src/libs/vpropertyexplorer/plugins/vfilepropertyeditor.cpp +++ b/src/libs/vpropertyexplorer/plugins/vfilepropertyeditor.cpp @@ -32,12 +32,15 @@ #include #include #include -#include #include #include #include #include +#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) +#include +#endif + VPE::VFileEditWidget::VFileEditWidget(QWidget *parent, bool is_directory) : QWidget(parent), CurrentFilePath(), ToolButton(nullptr), FileLineEdit(nullptr), FileDialogFilter(), FilterList(), Directory(is_directory) @@ -251,14 +254,16 @@ bool VPE::VFileEditWidget::checkFileFilter(const QString& file) const return false; } - for (auto &tmpFilter : FilterList) + return std::any_of(FilterList.begin(), FilterList.end(), [file](const QString &tmpFilter) { +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) + const QString wildcardFilter = QRegularExpression::wildcardToRegularExpression(tmpFilter); + QRegularExpression tmpRegExpFilter(QRegularExpression::anchoredPattern(wildcardFilter), + QRegularExpression::CaseInsensitiveOption); + return tmpRegExpFilter.match(file).hasMatch(); +#else QRegExp tmpRegExpFilter(tmpFilter, Qt::CaseInsensitive, QRegExp::Wildcard); - if (tmpRegExpFilter.exactMatch(file)) - { - return true; - } - } - - return false; + return tmpRegExpFilter.exactMatch(file); +#endif + }); } diff --git a/src/libs/vpropertyexplorer/plugins/vlabelproperty.cpp b/src/libs/vpropertyexplorer/plugins/vlabelproperty.cpp index 976f0bfb2..48e6edbf3 100644 --- a/src/libs/vpropertyexplorer/plugins/vlabelproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vlabelproperty.cpp @@ -32,19 +32,25 @@ #include #include #include -#include -#include -#include #include "../vproperty_p.h" VPE::VLabelProperty::VLabelProperty(const QString &name, const QMap &settings) - : VProperty(name, QVariant::String), + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::QString), +#else + QVariant::String), +#endif typeForParent(0) { VProperty::setSettings(settings); d_ptr->VariantValue.setValue(QString()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + d_ptr->VariantValue.convert(QMetaType(QMetaType::QString)); +#else d_ptr->VariantValue.convert(QVariant::String); +#endif } VPE::VLabelProperty::VLabelProperty(const QString &name) @@ -52,7 +58,11 @@ VPE::VLabelProperty::VLabelProperty(const QString &name) typeForParent(0) { d_ptr->VariantValue.setValue(QString()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + d_ptr->VariantValue.convert(QMetaType(QMetaType::QString)); +#else d_ptr->VariantValue.convert(QVariant::String); +#endif } QWidget *VPE::VLabelProperty::createEditor(QWidget *parent, const QStyleOptionViewItem &options, diff --git a/src/libs/vpropertyexplorer/plugins/vlinecolorproperty.cpp b/src/libs/vpropertyexplorer/plugins/vlinecolorproperty.cpp index c1048c9af..a148139cf 100644 --- a/src/libs/vpropertyexplorer/plugins/vlinecolorproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vlinecolorproperty.cpp @@ -35,18 +35,25 @@ #include #include #include -#include -#include -#include #include #include "../vproperty_p.h" VPE::VLineColorProperty::VLineColorProperty(const QString &name) - : VProperty(name, QVariant::Int), colors(), indexList() + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Int), +#else + QVariant::Int), +#endif + colors(), indexList() { VProperty::d_ptr->VariantValue = 0; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Int)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Int); +#endif } QVariant VPE::VLineColorProperty::data(int column, int role) const @@ -147,7 +154,11 @@ void VPE::VLineColorProperty::setValue(const QVariant &value) } VProperty::d_ptr->VariantValue = tmpIndex; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Int)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Int); +#endif if (VProperty::d_ptr->editor != nullptr) { @@ -165,7 +176,7 @@ VPE::VProperty *VPE::VLineColorProperty::clone(bool include_children, VProperty return VProperty::clone(include_children, container ? container : new VLineColorProperty(getName())); } -int VPE::VLineColorProperty::IndexOfColor(const QMap &colors, const QString &color) +vpesizetype VPE::VLineColorProperty::IndexOfColor(const QMap &colors, const QString &color) { QVector indexList; QMap::const_iterator i = colors.constBegin(); diff --git a/src/libs/vpropertyexplorer/plugins/vlinecolorproperty.h b/src/libs/vpropertyexplorer/plugins/vlinecolorproperty.h index cc1e42722..f751d01f2 100644 --- a/src/libs/vpropertyexplorer/plugins/vlinecolorproperty.h +++ b/src/libs/vpropertyexplorer/plugins/vlinecolorproperty.h @@ -90,7 +90,7 @@ public: Q_REQUIRED_RESULT virtual VProperty* clone(bool include_children = true, VProperty* container = nullptr) const override; - static int IndexOfColor(const QMap &colors, const QString &color); + static vpesizetype IndexOfColor(const QMap &colors, const QString &color); public slots: void currentIndexChanged(int index); diff --git a/src/libs/vpropertyexplorer/plugins/vlinetypeproperty.cpp b/src/libs/vpropertyexplorer/plugins/vlinetypeproperty.cpp index 5b10d18bb..b0f382996 100644 --- a/src/libs/vpropertyexplorer/plugins/vlinetypeproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vlinetypeproperty.cpp @@ -32,18 +32,25 @@ #include #include #include -#include -#include -#include #include #include "../vproperty_p.h" VPE::VLineTypeProperty::VLineTypeProperty(const QString &name) - : VProperty(name, QVariant::Int), styles(), indexList() + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Int), +#else + QVariant::Int), +#endif + styles(), indexList() { VProperty::d_ptr->VariantValue = 0; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Int)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Int); +#endif } QVariant VPE::VLineTypeProperty::data(int column, int role) const @@ -140,7 +147,11 @@ void VPE::VLineTypeProperty::setValue(const QVariant &value) } VProperty::d_ptr->VariantValue = tmpIndex; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Int)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Int); +#endif if (VProperty::d_ptr->editor != nullptr) { @@ -158,7 +169,7 @@ VPE::VProperty *VPE::VLineTypeProperty::clone(bool include_children, VProperty * return VProperty::clone(include_children, container ? container : new VLineTypeProperty(getName())); } -int VPE::VLineTypeProperty::IndexOfStyle(const QMap &styles, const QString &style) +vpesizetype VPE::VLineTypeProperty::IndexOfStyle(const QMap &styles, const QString &style) { QVector indexList; QMap::const_iterator i = styles.constBegin(); diff --git a/src/libs/vpropertyexplorer/plugins/vlinetypeproperty.h b/src/libs/vpropertyexplorer/plugins/vlinetypeproperty.h index 2c59b7c4a..d21542a09 100644 --- a/src/libs/vpropertyexplorer/plugins/vlinetypeproperty.h +++ b/src/libs/vpropertyexplorer/plugins/vlinetypeproperty.h @@ -91,7 +91,7 @@ public: Q_REQUIRED_RESULT virtual VProperty* clone(bool include_children = true, VProperty* container = nullptr) const override; - static int IndexOfStyle(const QMap &styles, const QString &style); + static vpesizetype IndexOfStyle(const QMap &styles, const QString &style); public slots: void currentIndexChanged(int index); diff --git a/src/libs/vpropertyexplorer/plugins/vnumberproperty.cpp b/src/libs/vpropertyexplorer/plugins/vnumberproperty.cpp index bfc3078eb..16ff32c6f 100644 --- a/src/libs/vpropertyexplorer/plugins/vnumberproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vnumberproperty.cpp @@ -45,21 +45,34 @@ const int VPE::VIntegerProperty::StandardMin = -1000000; const int VPE::VIntegerProperty::StandardMax = 1000000; VPE::VIntegerProperty::VIntegerProperty(const QString& name, const QMap& settings) - : VProperty(name, QVariant::Int), + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Int), +#else + QVariant::Int), +#endif m_minValue(StandardMin), m_maxValue(StandardMax), m_singleStep(1.0) { VProperty::setSettings(settings); VProperty::d_ptr->VariantValue.setValue(0); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Int)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Int); +#endif } VPE::VIntegerProperty::VIntegerProperty(const QString &name) : VProperty(name), m_minValue(StandardMin), m_maxValue(StandardMax), m_singleStep(1.0) { VProperty::d_ptr->VariantValue.setValue(0); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Int)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Int); +#endif } //! Returns an editor widget, or NULL if it doesn't supply one @@ -166,7 +179,13 @@ const int VPE::VDoubleProperty::StandardMax = 1000000; const double VPE::VDoubleProperty::StandardPrecision = 5; VPE::VDoubleProperty::VDoubleProperty(const QString& name, const QMap& settings) - : VProperty(name, QVariant::Double), + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Double), +#else + QVariant::Double), +#endif + m_minValue(StandardMin), m_maxValue(StandardMax), m_singleStep(1.0), @@ -174,7 +193,11 @@ VPE::VDoubleProperty::VDoubleProperty(const QString& name, const QMapVariantValue.setValue(0); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Double)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::Double); +#endif } VPE::VDoubleProperty::VDoubleProperty(const QString &name) @@ -185,8 +208,13 @@ VPE::VDoubleProperty::VDoubleProperty(const QString &name) m_precision(static_cast(StandardPrecision)) { VProperty::d_ptr->VariantValue.setValue(0); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::Double)); + VProperty::d_ptr->PropertyVariantType = QMetaType::Double; +#else VProperty::d_ptr->VariantValue.convert(QVariant::Double); VProperty::d_ptr->PropertyVariantType = QVariant::Double; +#endif } //! Returns an editor widget, or NULL if it doesn't supply one diff --git a/src/libs/vpropertyexplorer/plugins/vobjectproperty.cpp b/src/libs/vpropertyexplorer/plugins/vobjectproperty.cpp index 31f3021dc..669e5ff20 100644 --- a/src/libs/vpropertyexplorer/plugins/vobjectproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vobjectproperty.cpp @@ -28,10 +28,20 @@ #include "../vproperty_p.h" VPE::VObjectProperty::VObjectProperty(const QString& name) - : VProperty(name, QVariant::Int), objects() + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::UInt), +#else + QVariant::UInt), +#endif + objects() { VProperty::d_ptr->VariantValue = 0; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::UInt)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::UInt); +#endif } //! Get the data how it should be displayed @@ -130,7 +140,11 @@ QMap VPE::VObjectProperty::getObjects() const void VPE::VObjectProperty::setValue(const QVariant& value) { VProperty::d_ptr->VariantValue = value; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + VProperty::d_ptr->VariantValue.convert(QMetaType(QMetaType::UInt)); +#else VProperty::d_ptr->VariantValue.convert(QVariant::UInt); +#endif if (VProperty::d_ptr->editor != nullptr) { diff --git a/src/libs/vpropertyexplorer/plugins/vpointfproperty.cpp b/src/libs/vpropertyexplorer/plugins/vpointfproperty.cpp index 41cf1ef0f..1641a0279 100644 --- a/src/libs/vpropertyexplorer/plugins/vpointfproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vpointfproperty.cpp @@ -28,10 +28,19 @@ #include "vnumberproperty.h" VPE::VPointFProperty::VPointFProperty(const QString &name) - : VProperty(name, QVariant::PointF) + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::QPointF) +#else + QVariant::PointF) +#endif { d_ptr->VariantValue.setValue(0); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + d_ptr->VariantValue.convert(QMetaType(QMetaType::QPointF)); +#else d_ptr->VariantValue.convert(QVariant::PointF); +#endif VDoubleProperty* tmpX = new VDoubleProperty("X"); addChild(tmpX); @@ -92,10 +101,18 @@ void VPE::VPointFProperty::setPointF(qreal x, qreal y) } QVariant tmpX(x); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + tmpX.convert(QMetaType(QMetaType::Double)); +#else tmpX.convert(QVariant::Double); +#endif QVariant tmpY(y); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + tmpY.convert(QMetaType(QMetaType::Double)); +#else tmpY.convert(QVariant::Double); +#endif d_ptr->Children.at(0)->setValue(tmpX); d_ptr->Children.at(1)->setValue(tmpY); diff --git a/src/libs/vpropertyexplorer/plugins/vshortcutproperty.cpp b/src/libs/vpropertyexplorer/plugins/vshortcutproperty.cpp index 18264a9fc..5829de611 100644 --- a/src/libs/vpropertyexplorer/plugins/vshortcutproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vshortcutproperty.cpp @@ -29,7 +29,12 @@ #include "vshortcutpropertyeditor.h" VPE::VShortcutProperty::VShortcutProperty(const QString& name) - : VProperty(name, QVariant::String) + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::QString) +#else + QVariant::String) +#endif { } diff --git a/src/libs/vpropertyexplorer/plugins/vstringproperty.cpp b/src/libs/vpropertyexplorer/plugins/vstringproperty.cpp index 72bf5e6d1..d98829d26 100644 --- a/src/libs/vpropertyexplorer/plugins/vstringproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vstringproperty.cpp @@ -25,26 +25,37 @@ #include #include #include -#include -#include -#include #include #include "../vproperty_p.h" VPE::VStringProperty::VStringProperty(const QString &name, const QMap &settings) - : VProperty(name, QVariant::String), readOnly(false), typeForParent(0), clearButton(false), m_osSeparator(false) + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::QString), +#else + QVariant::String), +#endif + readOnly(false), typeForParent(0), clearButton(false), m_osSeparator(false) { VProperty::setSettings(settings); d_ptr->VariantValue.setValue(QString()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + d_ptr->VariantValue.convert(QMetaType(QMetaType::QString)); +#else d_ptr->VariantValue.convert(QVariant::String); +#endif } VPE::VStringProperty::VStringProperty(const QString &name) : VProperty(name), readOnly(false), typeForParent(0), clearButton(false), m_osSeparator(false) { d_ptr->VariantValue.setValue(QString()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + d_ptr->VariantValue.convert(QMetaType(QMetaType::QString)); +#else d_ptr->VariantValue.convert(QVariant::String); +#endif } QWidget *VPE::VStringProperty::createEditor(QWidget *parent, const QStyleOptionViewItem &options, @@ -175,11 +186,11 @@ bool VPE::VStringProperty::eventFilter(QObject *object, QEvent *event) { if (m_osSeparator) { - textEdit->insert(QLocale().decimalPoint()); + textEdit->insert(VPELocaleDecimalPoint(QLocale())); } else { - textEdit->insert(QLocale::c().decimalPoint()); + textEdit->insert(VPELocaleDecimalPoint(QLocale::c())); } return true; } diff --git a/src/libs/vpropertyexplorer/plugins/vtextproperty.cpp b/src/libs/vpropertyexplorer/plugins/vtextproperty.cpp index 3fc40a521..21f427088 100644 --- a/src/libs/vpropertyexplorer/plugins/vtextproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vtextproperty.cpp @@ -50,12 +50,21 @@ void SetTabStopDistance(QPlainTextEdit *edit, int tabWidthChar) VPE::VTextProperty::VTextProperty(const QString &name, const QMap &settings) - : VProperty(name, QVariant::String), + : VProperty(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::QString), +#else + QVariant::String), +#endif readOnly(false) { VProperty::setSettings(settings); d_ptr->VariantValue.setValue(QString()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + d_ptr->VariantValue.convert(QMetaType(QMetaType::QString)); +#else d_ptr->VariantValue.convert(QVariant::String); +#endif } VPE::VTextProperty::VTextProperty(const QString &name) @@ -63,7 +72,11 @@ VPE::VTextProperty::VTextProperty(const QString &name) readOnly(false) { d_ptr->VariantValue.setValue(QString()); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + d_ptr->VariantValue.convert(QMetaType(QMetaType::QString)); +#else d_ptr->VariantValue.convert(QVariant::String); +#endif } QWidget *VPE::VTextProperty::createEditor(QWidget *parent, const QStyleOptionViewItem &options, diff --git a/src/libs/vpropertyexplorer/plugins/vwidgetproperty.cpp b/src/libs/vpropertyexplorer/plugins/vwidgetproperty.cpp index 856a91e71..4ce5de38e 100644 --- a/src/libs/vpropertyexplorer/plugins/vwidgetproperty.cpp +++ b/src/libs/vpropertyexplorer/plugins/vwidgetproperty.cpp @@ -29,7 +29,14 @@ #include "../vproperty.h" VPE::VWidgetProperty::VWidgetProperty(const QString& name, QWidget* widget) - : VEmptyProperty(new VWidgetPropertyPrivate(name, QVariant::Invalid, widget)) + : VEmptyProperty( + new VWidgetPropertyPrivate(name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::UnknownType, +#else + QVariant::Invalid, +#endif + widget)) { } diff --git a/src/libs/vpropertyexplorer/stable.h b/src/libs/vpropertyexplorer/stable.h index 96f1808ea..8447f9688 100644 --- a/src/libs/vpropertyexplorer/stable.h +++ b/src/libs/vpropertyexplorer/stable.h @@ -70,6 +70,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif /*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vpropertyexplorer/vfileproperty_p.h b/src/libs/vpropertyexplorer/vfileproperty_p.h index 839d05e86..753c3d000 100644 --- a/src/libs/vpropertyexplorer/vfileproperty_p.h +++ b/src/libs/vpropertyexplorer/vfileproperty_p.h @@ -39,7 +39,13 @@ public: //! Constructor passing name and type - VFilePropertyPrivate(const QString& name, QVariant::Type type, bool directory = false) + VFilePropertyPrivate(const QString& name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Type type, +#else + QVariant::Type type, +#endif + bool directory = false) : VPropertyPrivate(name, type), FileFilters(), Directory(directory) {} //! Constructor diff --git a/src/libs/vpropertyexplorer/vproperty.cpp b/src/libs/vpropertyexplorer/vproperty.cpp index 14c6e98a4..612de59a9 100644 --- a/src/libs/vpropertyexplorer/vproperty.cpp +++ b/src/libs/vpropertyexplorer/vproperty.cpp @@ -33,7 +33,12 @@ #include "vproperty_p.h" //! Standard constructor, takes a name and a parent property as argument -VPE::VProperty::VProperty(const QString& name, QVariant::Type type) +VPE::VProperty::VProperty(const QString& name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Type type) +#else + QVariant::Type type) +#endif : QObject(), d_ptr(new VPropertyPrivate(name, type)) { @@ -114,7 +119,11 @@ QWidget* VPE::VProperty::createEditor(QWidget * parent, const QStyleOptionViewIt QItemEditorFactory *factory = new QItemEditorFactory; QItemEditorCreatorBase *lineCreator = new QStandardItemEditorCreator(); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + factory->registerEditor(QMetaType::QString, lineCreator); +#else factory->registerEditor(QVariant::String, lineCreator); +#endif QItemEditorFactory::setDefaultFactory(factory); d_ptr->editor = factory->createEditor(static_cast(d_ptr->PropertyVariantType), parent); @@ -178,7 +187,11 @@ Qt::ItemFlags VPE::VProperty::flags(int column) const void VPE::VProperty::setValue(const QVariant &value) { d_ptr->VariantValue = value; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + d_ptr->VariantValue.convert(QMetaType(d_ptr->PropertyVariantType)); +#else d_ptr->VariantValue.convert(static_cast(d_ptr->PropertyVariantType)); +#endif if (d_ptr->editor != nullptr) { setEditorData(d_ptr->editor); @@ -249,7 +262,7 @@ VPE::VProperty* VPE::VProperty::getChild(int row) const } //! Gets the number of children -int VPE::VProperty::getRowCount() const +vpesizetype VPE::VProperty::getRowCount() const { return d_ptr->Children.count(); } @@ -282,7 +295,7 @@ void VPE::VProperty::setParent(VProperty* parent) } } -int VPE::VProperty::addChild(VProperty *child) +vpesizetype VPE::VProperty::addChild(VProperty *child) { if (child && child->getParent() != this) { @@ -312,7 +325,7 @@ void VPE::VProperty::removeChild(VProperty* child) } //! Returns the row the child has -int VPE::VProperty::getChildRow(VProperty* child) const +vpesizetype VPE::VProperty::getChildRow(VProperty* child) const { return d_ptr->Children.indexOf(child); } diff --git a/src/libs/vpropertyexplorer/vproperty.h b/src/libs/vpropertyexplorer/vproperty.h index 9b2cafd4e..a3a8c3700 100644 --- a/src/libs/vpropertyexplorer/vproperty.h +++ b/src/libs/vpropertyexplorer/vproperty.h @@ -42,6 +42,8 @@ #include +#include "vpropertydef.h" + template class QList; namespace VPE @@ -75,7 +77,12 @@ public: }; //! Standard constructor, takes a name and a parent property as argument - explicit VProperty(const QString& name, QVariant::Type type = QVariant::String); + explicit VProperty(const QString& name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Type type = QMetaType::QString); +#else + QVariant::Type type = QVariant::String); +#endif //! Destructor virtual ~VProperty() override; @@ -152,7 +159,7 @@ public: virtual QString getDescription() const; //! Adds a child to this property - virtual int addChild(VProperty* child); + virtual vpesizetype addChild(VProperty* child); //! Returns a reference to the list of children virtual QList& getChildren(); @@ -164,7 +171,7 @@ public: virtual VProperty* getChild(int row) const; //! Gets the number of children - virtual int getRowCount() const; + virtual vpesizetype getRowCount() const; //! Gets the parent of this property virtual VProperty* getParent() const; @@ -176,7 +183,7 @@ public: virtual void removeChild(VProperty* child); //! Returns the row the child has - virtual int getChildRow(VProperty* child) const; + virtual vpesizetype getChildRow(VProperty* child) const; //! Returns whether the views have to update the parent of this property if it changes virtual bool getUpdateParent() const; diff --git a/src/libs/vpropertyexplorer/vproperty_p.h b/src/libs/vpropertyexplorer/vproperty_p.h index dd94d5a4f..c59b7eb37 100644 --- a/src/libs/vpropertyexplorer/vproperty_p.h +++ b/src/libs/vpropertyexplorer/vproperty_p.h @@ -41,48 +41,60 @@ public: //! This does not have to be used by subclasses, but it makes sense in cases where QVariant supports //! the data type. Also, this can be used as cache, so that when the data() function gets called by //! the model, the data does not have to be converted in a QVariant every time. - QVariant VariantValue; + QVariant VariantValue{}; // NOLINT(misc-non-private-member-variables-in-classes) //! Property name - QString Name; + QString Name{}; // NOLINT(misc-non-private-member-variables-in-classes) //! Description - QString Description; + QString Description{}; // NOLINT(misc-non-private-member-variables-in-classes) //! Specifies whether the property is empty or not - bool IsEmpty; + bool IsEmpty{false}; // NOLINT(misc-non-private-member-variables-in-classes) //! Stores the property type - QVariant::Type PropertyVariantType; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Type PropertyVariantType; // NOLINT(misc-non-private-member-variables-in-classes) +#else + QVariant::Type PropertyVariantType; // NOLINT(misc-non-private-member-variables-in-classes) +#endif //! Stores whether the views have to update the parent of this property if it changes - bool UpdateParent; + bool UpdateParent{false}; // NOLINT(misc-non-private-member-variables-in-classes) //! Stores whether the views have to update the children of this property if it changes - bool UpdateChildren; + bool UpdateChildren{false}; // NOLINT(misc-non-private-member-variables-in-classes) //! The parent property - VProperty* Parent; + VProperty* Parent{nullptr}; // NOLINT(misc-non-private-member-variables-in-classes) - QWidget* editor; + QWidget* editor{nullptr}; // NOLINT(misc-non-private-member-variables-in-classes) - Property type; + Property type{Property::Simple}; // NOLINT(misc-non-private-member-variables-in-classes) //! List of child properties - QList Children; + QList Children{}; // NOLINT(misc-non-private-member-variables-in-classes) //! Constructor passing name and type - VPropertyPrivate(const QString& name, QVariant::Type type) - : VariantValue(type), Name(name), Description(QString()), IsEmpty(false), PropertyVariantType(type), - UpdateParent(false), UpdateChildren(false), Parent(nullptr), editor(nullptr), type(Property::Simple), - Children(QList()) + VPropertyPrivate(const QString& name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Type type) + : VariantValue(QMetaType(type)), +#else + QVariant::Type type) + : VariantValue(type), +#endif + Name(name), + PropertyVariantType(type) {} //! Constructor - VPropertyPrivate() - : VariantValue(), Name(), Description(QString()), IsEmpty(false), PropertyVariantType(QVariant::Invalid), - UpdateParent(false), UpdateChildren(false), Parent(nullptr), editor(nullptr), type(Property::Simple), - Children(QList()) + VPropertyPrivate() +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + : PropertyVariantType(QMetaType::UnknownType) +#else + : PropertyVariantType(QVariant::Invalid) +#endif {} virtual ~VPropertyPrivate(); @@ -92,6 +104,6 @@ private: QT_WARNING_POP -} +} // namespace VPE #endif // VPROPERTY_P_H diff --git a/src/libs/vpropertyexplorer/vpropertydef.cpp b/src/libs/vpropertyexplorer/vpropertydef.cpp new file mode 100644 index 000000000..a29c0be6c --- /dev/null +++ b/src/libs/vpropertyexplorer/vpropertydef.cpp @@ -0,0 +1,285 @@ +/************************************************************************ + ** + ** @file vpropertydef.cpp + ** @author Roman Telezhynskyi + ** @date 10 2, 2023 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2023 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#include "vpropertydef.h" + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocalePositiveSign(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.positiveSign(); + if (sign.size() == 1) + { + return sign.front(); + } + + return QLocale::c().positiveSign().front(); +#else + return locale.positiveSign(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleNegativeSign(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.negativeSign(); + if (sign.size() == 1) + { + return sign.front(); + } + + return QLocale::c().negativeSign().front(); +#else + return locale.negativeSign(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign0(const QLocale &locale) +{ + const QString sign = locale.toString(0); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'0'}; +#else + return QChar('0'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign1(const QLocale &locale) +{ + const QString sign = locale.toString(1); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'1'}; +#else + return QChar('1'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign2(const QLocale &locale) +{ + const QString sign = locale.toString(2); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'2'}; +#else + return QChar('2'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign3(const QLocale &locale) +{ + const QString sign = locale.toString(3); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'3'}; +#else + return QChar('3'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign4(const QLocale &locale) +{ + const QString sign = locale.toString(4); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'4'}; +#else + return QChar('4'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign5(const QLocale &locale) +{ + const QString sign = locale.toString(5); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'5'}; +#else + return QChar('5'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign6(const QLocale &locale) +{ + const QString sign = locale.toString(6); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'6'}; +#else + return QChar('6'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign7(const QLocale &locale) +{ + const QString sign = locale.toString(7); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'7'}; +#else + return QChar('7'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign8(const QLocale &locale) +{ + const QString sign = locale.toString(8); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'8'}; +#else + return QChar('8'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleSign9(const QLocale &locale) +{ + const QString sign = locale.toString(9); + if (sign.size() == 1) + { + return sign.front(); + } + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + return {'9'}; +#else + return QChar('9'); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleExpUpper(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.exponential(); + if (sign.size() == 1) + { + return sign.front().toUpper(); + } + + return QLocale::c().exponential().front().toUpper(); +#else + return locale.exponential().toUpper(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleExpLower(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.exponential(); + if (sign.size() == 1) + { + return sign.front().toLower(); + } + + return QLocale::c().exponential().front().toLower(); +#else + return locale.exponential().toLower(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleDecimalPoint(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.decimalPoint(); + if (sign.size() == 1) + { + return sign.front(); + } + + return QLocale::c().decimalPoint().front(); +#else + return locale.decimalPoint(); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +QChar VPELocaleGroupSeparator(const QLocale &locale) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QString sign = locale.groupSeparator(); + if (sign.size() == 1) + { + return sign.front(); + } + + return QLocale::c().groupSeparator().front(); +#else + return locale.groupSeparator(); +#endif +} diff --git a/src/libs/vpropertyexplorer/vpropertydef.h b/src/libs/vpropertyexplorer/vpropertydef.h new file mode 100644 index 000000000..8715a84e2 --- /dev/null +++ b/src/libs/vpropertyexplorer/vpropertydef.h @@ -0,0 +1,57 @@ +/************************************************************************ + ** + ** @file vpropertydef.h + ** @author Roman Telezhynskyi + ** @date 1 2, 2023 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2023 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#ifndef VPROPERTYDEF_H +#define VPROPERTYDEF_H + +#include "vpropertyexplorer_global.h" + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include +using vpesizetype = qsizetype; +#else +using vpesizetype = int; +#endif + +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocalePositiveSign(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleNegativeSign(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign0(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign1(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign2(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign3(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign4(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign5(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign6(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign7(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign8(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleSign9(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleExpUpper(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleExpLower(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleDecimalPoint(const QLocale &locale) -> QChar; +VPROPERTYEXPLORERSHARED_EXPORT auto VPELocaleGroupSeparator(const QLocale &locale) -> QChar; + +#endif // VPROPERTYDEF_H diff --git a/src/libs/vpropertyexplorer/vpropertyexplorer.pri b/src/libs/vpropertyexplorer/vpropertyexplorer.pri index f71b6547c..840148ec2 100644 --- a/src/libs/vpropertyexplorer/vpropertyexplorer.pri +++ b/src/libs/vpropertyexplorer/vpropertyexplorer.pri @@ -4,6 +4,7 @@ SOURCES += \ $$PWD/plugins/vtextproperty.cpp \ $$PWD/vproperty.cpp \ + $$PWD/vpropertydef.cpp \ $$PWD/vpropertydelegate.cpp \ $$PWD/vpropertyfactorymanager.cpp \ $$PWD/vpropertyformview.cpp \ @@ -56,6 +57,7 @@ HEADERS +=\ $$PWD/vpropertyset.h \ $$PWD/vpropertymodel.h \ $$PWD/vproperty.h \ + $$PWD/vpropertydef.h \ $$PWD/plugins/vwidgetproperty.h \ $$PWD/plugins/vcolorproperty.h \ $$PWD/plugins/vboolproperty.h \ diff --git a/src/libs/vpropertyexplorer/vpropertyexplorer.qbs b/src/libs/vpropertyexplorer/vpropertyexplorer.qbs index da96a56b5..0cd43859d 100644 --- a/src/libs/vpropertyexplorer/vpropertyexplorer.qbs +++ b/src/libs/vpropertyexplorer/vpropertyexplorer.qbs @@ -7,6 +7,8 @@ VDynamicLib { version: "1.0.0" files: [ "vproperty.cpp", + "vpropertydef.cpp", + "vpropertydef.h", "vpropertydelegate.cpp", "vpropertyfactorymanager.cpp", "vpropertyformview.cpp", diff --git a/src/libs/vpropertyexplorer/vpropertyexplorer_global.h b/src/libs/vpropertyexplorer/vpropertyexplorer_global.h index 202c35f8d..597b23967 100644 --- a/src/libs/vpropertyexplorer/vpropertyexplorer_global.h +++ b/src/libs/vpropertyexplorer/vpropertyexplorer_global.h @@ -35,18 +35,17 @@ #endif #if QT_VERSION < QT_VERSION_CHECK(5, 13, 0) -#define Q_DISABLE_MOVE(Class) \ - Class(Class &&) = delete; \ - Class &operator=(Class &&) = delete; #define Q_DISABLE_COPY_MOVE(Class) \ Q_DISABLE_COPY(Class) \ - Q_DISABLE_MOVE(Class) + Class(Class &&) = delete; \ + Class &operator=(Class &&) = delete; #endif #ifndef Q_DISABLE_ASSIGN_MOVE #define Q_DISABLE_ASSIGN_MOVE(Class) \ Q_DISABLE_ASSIGN(Class) \ - Q_DISABLE_MOVE(Class) + Class(Class &&) = delete; \ + Class &operator=(Class &&) = delete; #endif #endif // VPROPERTYEXPLORER_GLOBAL_H diff --git a/src/libs/vpropertyexplorer/vpropertymodel.cpp b/src/libs/vpropertyexplorer/vpropertymodel.cpp index e9792dbdf..4482fd666 100644 --- a/src/libs/vpropertyexplorer/vpropertymodel.cpp +++ b/src/libs/vpropertyexplorer/vpropertymodel.cpp @@ -24,6 +24,7 @@ #include "vproperty.h" #include "vpropertyset.h" +#include "vpropertydef.h" #include "vpropertymodel_p.h" @@ -60,8 +61,10 @@ bool VPE::VPropertyModel::addProperty(VProperty* property, const QString& id, co if (emitsignals) { VProperty* tmpParent = getProperty(parentid); - int tmpRow = tmpParent != nullptr ? tmpParent->getRowCount() : d_ptr->Properties->getRootPropertyCount(); - beginInsertRows((tmpParent != nullptr ? getIndexFromProperty(tmpParent) : QModelIndex()), tmpRow, tmpRow); + vpesizetype tmpRow = tmpParent != nullptr ? tmpParent->getRowCount() + : d_ptr->Properties->getRootPropertyCount(); + beginInsertRows((tmpParent != nullptr ? getIndexFromProperty(tmpParent) : QModelIndex()), + static_cast(tmpRow), static_cast(tmpRow)); } d_ptr->Properties->addProperty(property, id, parentid); @@ -129,7 +132,7 @@ QModelIndex VPE::VPropertyModel::parent ( const QModelIndex & index ) const { if (!index.isValid()) { - return QModelIndex(); + return {}; } VProperty* childItem = getProperty(index); @@ -139,17 +142,18 @@ QModelIndex VPE::VPropertyModel::parent ( const QModelIndex & index ) const if (parentItem) { VProperty* grandParentItem = parentItem->getParent(); - int parents_row = grandParentItem != nullptr ? grandParentItem->getChildRow(parentItem) - : d_ptr->Properties->getRootProperties().indexOf(parentItem); + vpesizetype parents_row = + grandParentItem != nullptr ? grandParentItem->getChildRow(parentItem) + : d_ptr->Properties->getRootProperties().indexOf(parentItem); if (parents_row >= 0) { - return createIndex(parents_row, 0, parentItem); + return createIndex(static_cast(parents_row), 0, parentItem); } } } - return QModelIndex(); + return {}; } //! Returns the item flags for the given index @@ -225,21 +229,21 @@ QVariant VPE::VPropertyModel::headerData (int section, Qt::Orientation orientati //! Returns the number of rows -int VPE::VPropertyModel::rowCount ( const QModelIndex & parent ) const +int VPE::VPropertyModel::rowCount( const QModelIndex & parent ) const { if (parent.isValid()) { VProperty* tmpParent = getProperty(parent); if (tmpParent) { - return tmpParent->getRowCount(); + return static_cast(tmpParent->getRowCount()); } } // Return the root property count if (d_ptr->Properties) { - return d_ptr->Properties->getRootPropertyCount(); + return static_cast(d_ptr->Properties->getRootPropertyCount()); } return 0; @@ -278,18 +282,18 @@ QModelIndex VPE::VPropertyModel::getIndexFromProperty(VProperty* property, int c { if (!property || column > columnCount() || column < 0) { - return QModelIndex(); + return {}; } VProperty* parentItem = property->getParent(); - int row = 0; + vpesizetype row = 0; if (parentItem) { row = parentItem->getChildRow(property); } - return createIndex(row, column, property); + return createIndex(static_cast(row), column, property); } diff --git a/src/libs/vpropertyexplorer/vpropertyset.cpp b/src/libs/vpropertyexplorer/vpropertyset.cpp index c950c1f3a..03985374e 100644 --- a/src/libs/vpropertyexplorer/vpropertyset.cpp +++ b/src/libs/vpropertyexplorer/vpropertyset.cpp @@ -135,7 +135,7 @@ void VPE::VPropertySet::removeProperty(VProperty* prop, bool delete_property) } } -int VPE::VPropertySet::count() const +vpesizetype VPE::VPropertySet::count() const { return d_ptr->Properties.count(); } @@ -197,7 +197,7 @@ VPE::VProperty *VPE::VPropertySet::getRootProperty(int row) const return d_ptr->RootProperties.value(row, nullptr); } -int VPE::VPropertySet::getRootPropertyCount() const +vpesizetype VPE::VPropertySet::getRootPropertyCount() const { return d_ptr->RootProperties.count(); } diff --git a/src/libs/vpropertyexplorer/vpropertyset.h b/src/libs/vpropertyexplorer/vpropertyset.h index e47867f78..e881be71a 100644 --- a/src/libs/vpropertyexplorer/vpropertyset.h +++ b/src/libs/vpropertyexplorer/vpropertyset.h @@ -93,7 +93,7 @@ public: virtual void removeProperty(VProperty* prop, bool delete_property = true); //! Returns the number of properties with in ID that are directly accessable by getProperty() - virtual int count() const; + virtual vpesizetype count() const; //! Clears the set and (optionally) deletes all properties //! \param delete_properties Set this to false, if you don't want the properties to get deleted. @@ -118,7 +118,7 @@ public: VProperty* getRootProperty(int row) const; //! Returns the number of independent properties - int getRootPropertyCount() const; + vpesizetype getRootPropertyCount() const; //! Clones the property set Q_REQUIRED_RESULT VPropertySet* clone() const; diff --git a/src/libs/vpropertyexplorer/vwidgetproperty_p.h b/src/libs/vpropertyexplorer/vwidgetproperty_p.h index b31c9439c..8e41ca4da 100644 --- a/src/libs/vpropertyexplorer/vwidgetproperty_p.h +++ b/src/libs/vpropertyexplorer/vwidgetproperty_p.h @@ -44,7 +44,13 @@ public: QPointer Widget; //! Constructor passing name and type - VWidgetPropertyPrivate(const QString& name, QVariant::Type type, QWidget* widget = nullptr) + VWidgetPropertyPrivate(const QString& name, +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QMetaType::Type type, +#else + QVariant::Type type, +#endif + QWidget* widget = nullptr) : VPropertyPrivate(name, type), Widget(widget) {} //! Constructor @@ -63,6 +69,6 @@ public: QT_WARNING_POP -} +} // namespace VPE #endif // VWIDGETPROPERTY_P_H diff --git a/src/libs/vtest/abstracttest.cpp b/src/libs/vtest/abstracttest.cpp index 274f02082..a8e2d57fc 100644 --- a/src/libs/vtest/abstracttest.cpp +++ b/src/libs/vtest/abstracttest.cpp @@ -39,9 +39,6 @@ #include #include #include -#include -#include -#include #include #include #include diff --git a/src/libs/vtest/abstracttest.h b/src/libs/vtest/abstracttest.h index 9d6c6ef2f..d94e2b0df 100644 --- a/src/libs/vtest/abstracttest.h +++ b/src/libs/vtest/abstracttest.h @@ -43,7 +43,9 @@ #include "../vlayout/vrawsapoint.h" #include "../ifc/exception/vexception.h" +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) template class QVector; +#endif #include diff --git a/src/libs/vtest/stable.h b/src/libs/vtest/stable.h index b3b97710b..b909fb201 100644 --- a/src/libs/vtest/stable.h +++ b/src/libs/vtest/stable.h @@ -81,6 +81,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vtools/dialogs/dialogtoolbox.cpp b/src/libs/vtools/dialogs/dialogtoolbox.cpp index 3e416cebc..d3f7c525b 100644 --- a/src/libs/vtools/dialogs/dialogtoolbox.cpp +++ b/src/libs/vtools/dialogs/dialogtoolbox.cpp @@ -250,11 +250,11 @@ bool FilterObject(QObject *object, QEvent *event) { if (VAbstractApplication::VApp()->Settings()->GetOsSeparator()) { - plainTextEdit->insertPlainText(QLocale().decimalPoint()); + plainTextEdit->insertPlainText(LocaleDecimalPoint(QLocale())); } else { - plainTextEdit->insertPlainText(QLocale::c().decimalPoint()); + plainTextEdit->insertPlainText(LocaleDecimalPoint(QLocale::c())); } return true; } diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp index 7076cddcc..5b0dcd29a 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp @@ -175,7 +175,7 @@ void DialogCubicBezierPath::ShowDialog(bool click) { if (click == false) { - const int size = path.CountPoints(); + const auto size = path.CountPoints(); if (size >= 7) { if (size - VCubicBezierPath::SubSplPointsCount(path.CountSubSpl()) == 0) @@ -320,10 +320,10 @@ QSet DialogCubicBezierPath::AllPathBackboneIds() const } QSet ids; - const qint32 count = VCubicBezierPath::CountSubSpl(points.size());// Count subpaths + const auto count = VCubicBezierPath::CountSubSpl(points.size());// Count subpaths for (qint32 i = 1; i <= count; ++i) { - const qint32 base = VCubicBezierPath::SubSplOffset(i); + const auto base = VCubicBezierPath::SubSplOffset(i); ids.insert(points.at(base));// The first subpath's point ids.insert(points.at(base + 3));// The last subpath's point } diff --git a/src/libs/vtools/dialogs/tools/dialogmove.cpp b/src/libs/vtools/dialogs/tools/dialogmove.cpp index abc6cb919..79c29715b 100644 --- a/src/libs/vtools/dialogs/tools/dialogmove.cpp +++ b/src/libs/vtools/dialogs/tools/dialogmove.cpp @@ -430,8 +430,8 @@ void DialogMove::SelectedObject(bool selected, quint32 object, quint32 tool) Q_UNUSED(tool) if (stage1) { - auto *obj = std::find_if(sourceObjects.begin(), sourceObjects.end(), - [object](const SourceItem &sItem) { return sItem.id == object; }); + auto obj = std::find_if(sourceObjects.begin(), sourceObjects.end(), + [object](const SourceItem &sItem) { return sItem.id == object; }); if (selected) { if (obj == sourceObjects.cend()) diff --git a/src/libs/vtools/dialogs/tools/dialogrotation.cpp b/src/libs/vtools/dialogs/tools/dialogrotation.cpp index 33db7062b..6bbe64262 100644 --- a/src/libs/vtools/dialogs/tools/dialogrotation.cpp +++ b/src/libs/vtools/dialogs/tools/dialogrotation.cpp @@ -330,8 +330,8 @@ void DialogRotation::ChosenObject(quint32 id, const SceneObject &type) auto *operation = qobject_cast(vis); SCASSERT(operation != nullptr) - auto *obj = std::find_if(sourceObjects.begin(), sourceObjects.end(), - [id](const SourceItem &sItem) { return sItem.id == id; }); + auto obj = std::find_if(sourceObjects.begin(), sourceObjects.end(), + [id](const SourceItem &sItem) { return sItem.id == id; }); if (obj != sourceObjects.cend()) { @@ -370,8 +370,8 @@ void DialogRotation::SelectedObject(bool selected, quint32 object, quint32 tool) Q_UNUSED(tool) if (stage1) { - auto *obj = std::find_if(sourceObjects.begin(), sourceObjects.end(), - [object](const SourceItem &sItem) { return sItem.id == object; }); + auto obj = std::find_if(sourceObjects.begin(), sourceObjects.end(), + [object](const SourceItem &sItem) { return sItem.id == object; }); if (selected) { if (obj == sourceObjects.cend()) @@ -532,8 +532,8 @@ void DialogRotation::PointChanged() { quint32 id = getCurrentObjectId(ui->comboBoxOriginPoint); - auto *obj = std::find_if(sourceObjects.begin(), sourceObjects.end(), - [id](const SourceItem &sItem) { return sItem.id == id; }); + auto obj = std::find_if(sourceObjects.begin(), sourceObjects.end(), + [id](const SourceItem &sItem) { return sItem.id == id; }); QColor color; if (obj != sourceObjects.cend()) diff --git a/src/libs/vtools/dialogs/tools/dialoguniondetails.cpp b/src/libs/vtools/dialogs/tools/dialoguniondetails.cpp index 553be18e1..1fe705bbe 100644 --- a/src/libs/vtools/dialogs/tools/dialoguniondetails.cpp +++ b/src/libs/vtools/dialogs/tools/dialoguniondetails.cpp @@ -134,7 +134,7 @@ bool DialogUnionDetails::CheckDetail(const quint32 &idDetail) const * @param index index of edge */ void DialogUnionDetails::ChoosedDetail(const quint32 &id, const SceneObject &type, quint32 &idDetail, - int &index) + vsizetype &index) { if (idDetail == NULL_ID) { @@ -146,17 +146,17 @@ void DialogUnionDetails::ChoosedDetail(const quint32 &id, const SceneObject &typ emit ToolTip(tr("Select a first point")); return; } - else - { - emit ToolTip(tr("Workpiece should have at least two points and three objects")); - return; - } + + emit ToolTip(tr("Workpiece should have at least two points and three objects")); + return; } } - if (CheckObject(id, idDetail) == false) + + if (not CheckObject(id, idDetail)) { return; } + if (type == SceneObject::Point) { if (numberP == 0) @@ -166,6 +166,7 @@ void DialogUnionDetails::ChoosedDetail(const quint32 &id, const SceneObject &typ emit ToolTip(tr("Select a second point")); return; } + if (numberP == 1) { if (id == p1) @@ -173,6 +174,7 @@ void DialogUnionDetails::ChoosedDetail(const quint32 &id, const SceneObject &typ emit ToolTip(tr("Select a unique point")); return; } + VPiece d = data->GetPiece(idDetail); if (d.GetPath().OnEdge(p1, id)) { diff --git a/src/libs/vtools/dialogs/tools/dialoguniondetails.h b/src/libs/vtools/dialogs/tools/dialoguniondetails.h index 5578a2f1b..1c8ff5055 100644 --- a/src/libs/vtools/dialogs/tools/dialoguniondetails.h +++ b/src/libs/vtools/dialogs/tools/dialoguniondetails.h @@ -55,8 +55,8 @@ public: quint32 getD1() const; quint32 getD2() const; - int getIndexD1() const; - int getIndexD2() const; + vsizetype getIndexD1() const; + vsizetype getIndexD2() const; bool RetainPieces() const; public slots: @@ -70,10 +70,10 @@ private: Ui::DialogUnionDetails *ui; /** @brief indexD1 index edge first detail */ - int indexD1; + vsizetype indexD1; /** @brief indexD2 index edge second detail */ - int indexD2; + vsizetype indexD2; /** @brief d1 id first detail */ quint32 d1; @@ -97,7 +97,7 @@ private: bool CheckDetail(const quint32 &idDetail) const; void ChoosedDetail(const quint32 &id, const SceneObject &type, quint32 &idDetail, - int &index); + vsizetype &index); }; //--------------------------------------------------------------------------------------------------------------------- @@ -125,7 +125,7 @@ inline quint32 DialogUnionDetails::getD2() const * @brief getIndexD1 return index edge first detail * @return index */ -inline int DialogUnionDetails::getIndexD1() const +inline vsizetype DialogUnionDetails::getIndexD1() const { return indexD1; } @@ -135,7 +135,7 @@ inline int DialogUnionDetails::getIndexD1() const * @brief getIndexD2 return index edge second detail * @return index */ -inline int DialogUnionDetails::getIndexD2() const +inline vsizetype DialogUnionDetails::getIndexD2() const { return indexD2; } diff --git a/src/libs/vtools/stable.h b/src/libs/vtools/stable.h index 89cef7694..ffccdafe8 100644 --- a/src/libs/vtools/stable.h +++ b/src/libs/vtools/stable.h @@ -79,6 +79,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif /*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vtools/tools/backgroundimage/vbackgroundimagecontrols.h b/src/libs/vtools/tools/backgroundimage/vbackgroundimagecontrols.h index d69e2db69..c4d85ae6e 100644 --- a/src/libs/vtools/tools/backgroundimage/vbackgroundimagecontrols.h +++ b/src/libs/vtools/tools/backgroundimage/vbackgroundimagecontrols.h @@ -109,7 +109,14 @@ private: QUuid m_id{}; VAbstractPattern *m_doc; + + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + VBackgroundPatternImage m_image{}; + + QT_WARNING_POP + BITransformationType m_tranformationType{BITransformationType::Unknown}; QMap m_handlePixmaps{}; diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp index c4085be26..e5b56a959 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyaxis.cpp @@ -36,9 +36,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp index 5f12589f2..b696c5895 100644 --- a/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp +++ b/src/libs/vtools/tools/drawTools/operation/flipping/vtoolflippingbyline.cpp @@ -36,9 +36,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp index afaf730cf..b8a408f04 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolmove.cpp @@ -36,9 +36,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp index 068effc46..a51f957e6 100644 --- a/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vtoolrotation.cpp @@ -36,9 +36,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp index 3fd435ff2..e965c1220 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp index 2a3bf28da..83e762a6b 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp index ec760c61a..33d73b545 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp @@ -31,9 +31,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp index 6a3a89c3e..d22adef17 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp @@ -31,9 +31,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp index 265aaac28..b246f38ad 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp index 4301bac42..7df874d8e 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp @@ -39,9 +39,6 @@ #include #include #include -#include -#include -#include #include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp index 58bd26eab..8803f0258 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp @@ -40,9 +40,6 @@ #include #include #include -#include -#include -#include #include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp index fe3baa716..80ae932f2 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooltruedarts.cpp @@ -31,9 +31,6 @@ #include #include #include -#include -#include -#include #include #include "../../../../dialogs/tools/dialogtruedarts.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp index c64eebf6c..587f563f0 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include "../../../../../dialogs/tools/dialogcutarc.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp index 37a6d543f..ce57f3799 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include "../../../../../dialogs/tools/dialogcutspline.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp index db2c2929d..784a80242 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp index 2092713fe..80bb56b8b 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp @@ -31,9 +31,6 @@ #include #include #include -#include -#include -#include #include #include "../../../../../dialogs/tools/dialogalongline.h" @@ -233,7 +230,13 @@ auto VToolAlongLine::Create(const QPointer &dialog, VMainGraphicsSce const QPointer dialogTool = qobject_cast(dialog); SCASSERT(not dialogTool.isNull()) + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + VToolAlongLineInitData initData; + + QT_WARNING_POP + initData.formula = dialogTool->GetFormula(); initData.firstPointId = dialogTool->GetFirstPointId(); initData.secondPointId = dialogTool->GetSecondPointId(); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp index abb73954d..1e4bf1951 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include "../../../../../dialogs/tools/dialogbisector.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp index 8448f98e5..03ae0c6a9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp @@ -33,9 +33,6 @@ #include #include #include -#include -#include -#include #include #include @@ -112,7 +109,13 @@ VToolCurveIntersectAxis *VToolCurveIntersectAxis::Create(const QPointer dialogTool = qobject_cast(dialog); SCASSERT(not dialogTool.isNull()) + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + VToolCurveIntersectAxisInitData initData; + + QT_WARNING_POP + initData.formulaAngle = dialogTool->GetAngle(); initData.basePointId = dialogTool->GetBasePointId(); initData.curveId = dialogTool->getCurveId(); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp index c88c6707f..ab9bcaca3 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp @@ -31,9 +31,6 @@ #include #include #include -#include -#include -#include #include #include "../../../../../dialogs/tools/dialogendline.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp index 98c0698ea..18db5b715 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp @@ -29,9 +29,6 @@ #include "vtoolheight.h" #include -#include -#include -#include #include #include "../../../../../dialogs/tools/dialogheight.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp index 78635f7d2..e046da09f 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include "../../../../../dialogs/tools/dialoglineintersectaxis.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp index 168296aeb..410a6f2d1 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include "../../../../../dialogs/tools/dialognormal.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp index ed7c699b9..7d5cb5791 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp @@ -31,9 +31,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp index e77abb26a..05b0811ee 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp @@ -42,9 +42,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp index a75ec52b5..90b1b09ba 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoollineintersect.cpp @@ -32,9 +32,6 @@ #include #include #include -#include -#include -#include #include #include "../../../../dialogs/tools/dialoglineintersect.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp index addd7c3a0..563cbf0a9 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromarcandtangent.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include "../../../../dialogs/tools/dialogpointfromarcandtangent.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp index 171d09c23..c235deb02 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointfromcircleandtangent.cpp @@ -29,9 +29,6 @@ #include "vtoolpointfromcircleandtangent.h" #include -#include -#include -#include #include #include "../../../../dialogs/tools/dialogpointfromcircleandtangent.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp index 3d2cea4ea..e8bc4d53a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofcontact.cpp @@ -31,9 +31,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp index 348b28bc3..0e8efb80c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersection.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include "../../../../dialogs/tools/dialogpointofintersection.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp index ba3433b34..24c0dd484 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectionarcs.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include "../../../../dialogs/tools/dialogpointofintersectionarcs.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp index d8050e04a..78224ac0a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncircles.cpp @@ -29,9 +29,6 @@ #include "vtoolpointofintersectioncircles.h" #include -#include -#include -#include #include #include "../../../../dialogs/tools/dialogpointofintersectioncircles.h" diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp index e133c37fc..f88d1e1be 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolpointofintersectioncurves.cpp @@ -30,9 +30,6 @@ #include #include -#include -#include -#include #include #include "../../../../dialogs/tools/dialogpointofintersectioncurves.h" @@ -102,7 +99,13 @@ VToolPointOfIntersectionCurves *VToolPointOfIntersectionCurves::Create(const QPo qobject_cast(dialog); SCASSERT(not dialogTool.isNull()) + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + VToolPointOfIntersectionCurvesInitData initData; + + QT_WARNING_POP + initData.firstCurveId = dialogTool->GetFirstCurveId(); initData.secondCurveId = dialogTool->GetSecondCurveId(); initData.vCrossPoint = dialogTool->GetVCrossPoint(); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp index 3aa820bbf..d1fc63f91 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtooltriangle.cpp @@ -31,9 +31,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/nodeDetails/vabstractnode.cpp b/src/libs/vtools/tools/nodeDetails/vabstractnode.cpp index 13ff1ac71..ab7994336 100644 --- a/src/libs/vtools/tools/nodeDetails/vabstractnode.cpp +++ b/src/libs/vtools/tools/nodeDetails/vabstractnode.cpp @@ -29,9 +29,6 @@ #include "vabstractnode.h" #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/nodeDetails/vnodearc.cpp b/src/libs/vtools/tools/nodeDetails/vnodearc.cpp index f8c993966..db62493f1 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodearc.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodearc.cpp @@ -29,9 +29,6 @@ #include "vnodearc.h" #include -#include -#include -#include #include "../ifc/xml/vdomdocument.h" #include "../ifc/ifcdef.h" diff --git a/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp b/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp index c21934650..95a82930c 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodeellipticalarc.cpp @@ -29,9 +29,6 @@ #include "vnodeellipticalarc.h" #include -#include -#include -#include #include "../ifc/xml/vdomdocument.h" #include "../ifc/ifcdef.h" diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp index b559ce4f3..6346550a7 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp @@ -40,9 +40,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vtools/tools/nodeDetails/vnodespline.cpp b/src/libs/vtools/tools/nodeDetails/vnodespline.cpp index 22937a242..1b0400cfe 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodespline.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodespline.cpp @@ -29,9 +29,6 @@ #include "vnodespline.h" #include -#include -#include -#include #include "../ifc/xml/vdomdocument.h" #include "../ifc/ifcdef.h" diff --git a/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp b/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp index fa75901a5..401d1102b 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodesplinepath.cpp @@ -29,9 +29,6 @@ #include "vnodesplinepath.h" #include -#include -#include -#include #include "../ifc/xml/vdomdocument.h" #include "../ifc/ifcdef.h" diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index e274086d2..7b84b7cdf 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -41,9 +41,6 @@ #include #include #include -#include -#include -#include #include #include #include diff --git a/src/libs/vtools/tools/vtoolseamallowance.cpp b/src/libs/vtools/tools/vtoolseamallowance.cpp index fde121e23..39058a446 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.cpp +++ b/src/libs/vtools/tools/vtoolseamallowance.cpp @@ -1424,18 +1424,18 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren) this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false); const VPiece detail = VAbstractTool::data.GetPiece(m_id); - QFuture futurePath = QtConcurrent::run(detail, - QOverload::of(&VPiece::MainPathPath), - this->getData()); - QFuture futurePassmarks = QtConcurrent::run(detail, &VPiece::PassmarksPath, this->getData()); + + QFuture futurePath = QtConcurrent::run([this, detail](){return detail.MainPathPath(getData());}); + QFuture futurePassmarks = + QtConcurrent::run([this, detail](){return detail.PassmarksPath(getData());}); QFuture > futureSeamAllowance; QFuture futureSeamAllowanceValid; if (detail.IsSeamAllowance()) { - futureSeamAllowance = QtConcurrent::run(detail, &VPiece::SeamAllowancePoints, this->getData()); - futureSeamAllowanceValid = QtConcurrent::run(detail, &VPiece::IsSeamAllowanceValid, this->getData()); + futureSeamAllowance = QtConcurrent::run([this, detail](){return detail.SeamAllowancePoints(getData());}); + futureSeamAllowanceValid = QtConcurrent::run([this, detail](){return detail.IsSeamAllowanceValid(getData());}); } this->setPos(detail.GetMx(), detail.GetMy()); diff --git a/src/libs/vtools/tools/vtooluniondetails.cpp b/src/libs/vtools/tools/vtooluniondetails.cpp index f5b34e3e9..5234cc84d 100644 --- a/src/libs/vtools/tools/vtooluniondetails.cpp +++ b/src/libs/vtools/tools/vtooluniondetails.cpp @@ -34,9 +34,6 @@ #include #include #include -#include -#include -#include #include #include #include @@ -1328,8 +1325,8 @@ void UpdateUnitedNodes(const VToolUnionDetailsInitData &initData, qreal dx, qrea const VPiecePath d1REPath = GetPiece1MainPath(initData.doc, initData.id).RemoveEdge(initData.indexD1); const VPiecePath d2REPath = GetPiece2MainPath(initData.doc, initData.id).RemoveEdge(initData.indexD2); - const qint32 countNodeD1 = d1REPath.CountNodes(); - const qint32 countNodeD2 = d2REPath.CountNodes(); + const vsizetype countNodeD1 = d1REPath.CountNodes(); + const vsizetype countNodeD2 = d2REPath.CountNodes(); QVector children = GetNodesChildren(initData.doc, initData.id); if (not children.isEmpty()) @@ -1364,7 +1361,7 @@ void UpdateUnitedNodes(const VToolUnionDetailsInitData &initData, qreal dx, qrea ++i; if (i > indexOfNode) { - const int childrenCount = children.size(); + const vsizetype childrenCount = children.size(); qint32 j = 0; FindIndexJ(pointsD2, d2REPath, initData.indexD2, j); do @@ -1405,7 +1402,7 @@ QVector FixChildren(QVector records, QVector children QVector fixedChildren; while(not records.isEmpty()) { - const qint32 childrenIndex = records.size()-1; + const vsizetype childrenIndex = records.size()-1; if (children.size() > childrenIndex) { fixedChildren.append(children.takeAt(childrenIndex)); @@ -1962,8 +1959,8 @@ QVector > VToolUnionDetails::CalcUnitedPath(const VPiece { QVector > path; - const qint32 countNodeD1 = d1Path.CountNodes(); - const qint32 countNodeD2 = d2Path.CountNodes(); + const vsizetype countNodeD1 = d1Path.CountNodes(); + const vsizetype countNodeD2 = d2Path.CountNodes(); qint32 pointsD2 = 0; //Keeps number points the second detail, that we have already added. qint32 i = 0; diff --git a/src/libs/vtools/undocommands/deltool.cpp b/src/libs/vtools/undocommands/deltool.cpp index c22be3b72..bfdae2045 100644 --- a/src/libs/vtools/undocommands/deltool.cpp +++ b/src/libs/vtools/undocommands/deltool.cpp @@ -67,7 +67,7 @@ DelTool::DelTool(VAbstractPattern *doc, quint32 id, QUndoCommand *parent) while (i != groups.constEnd()) { VGroupData groupData = i.value(); - auto *itemRecord = std::find_if(groupData.items.begin(), groupData.items.end(), + auto itemRecord = std::find_if(groupData.items.begin(), groupData.items.end(), [id](const QPair &item) { return item.second == id; }); if (itemRecord != groupData.items.end()) diff --git a/src/libs/vtools/visualization/path/vistoolcubicbezierpath.cpp b/src/libs/vtools/visualization/path/vistoolcubicbezierpath.cpp index 15198149d..00a5e63dc 100644 --- a/src/libs/vtools/visualization/path/vistoolcubicbezierpath.cpp +++ b/src/libs/vtools/visualization/path/vistoolcubicbezierpath.cpp @@ -66,12 +66,12 @@ VisToolCubicBezierPath::~VisToolCubicBezierPath() void VisToolCubicBezierPath::RefreshGeometry() { const QVector pathPoints = path.GetCubicPath(); - const int size = pathPoints.size(); + const vsizetype size = pathPoints.size(); if (size > 0) { - const int countSubSpl = VCubicBezierPath::CountSubSpl(size); + const vsizetype countSubSpl = VCubicBezierPath::CountSubSpl(size); - for (int i = 0; i < size; ++i) + for (vsizetype i = 0; i < size; ++i) { VScaledEllipse *point = this->GetPoint(mainPoints, static_cast(i), 1/*zValue*/); DrawPoint(point, static_cast(pathPoints.at(i)), Color(VColor::SupportColor)); @@ -85,7 +85,7 @@ void VisToolCubicBezierPath::RefreshGeometry() } else { - const qint32 last = VCubicBezierPath::SubSplOffset(countSubSpl) + 3; + const vsizetype last = VCubicBezierPath::SubSplOffset(countSubSpl) + 3; Creating(pathPoints, size-1-last); } } @@ -94,10 +94,10 @@ void VisToolCubicBezierPath::RefreshGeometry() { DrawPath(this, path.GetPath(), path.DirectionArrows(), Color(VColor::MainColor), LineStyle(), Qt::RoundCap); - for (qint32 i = 1; i<=countSubSpl; ++i) + for (vsizetype i = 1; i<=countSubSpl; ++i) { - const int preLastPoint = (countSubSpl - 1) * 2; - const int lastPoint = preLastPoint + 1; + const vsizetype preLastPoint = (countSubSpl - 1) * 2; + const vsizetype lastPoint = preLastPoint + 1; const VSpline spl = path.GetSpline(i); @@ -163,16 +163,16 @@ auto VisToolCubicBezierPath::GetLine(quint32 i) -> VScaledLine * } //--------------------------------------------------------------------------------------------------------------------- -void VisToolCubicBezierPath::Creating(const QVector &pathPoints, int pointsLeft) +void VisToolCubicBezierPath::Creating(const QVector &pathPoints, vsizetype pointsLeft) { - const int size = pathPoints.size(); + const vsizetype size = pathPoints.size(); if (pathPoints.isEmpty() || size+1 < pointsLeft) { return; } - int subSplPoints = 0; - const int subSplCount = VCubicBezierPath::CountSubSpl(size); + vsizetype subSplPoints = 0; + const vsizetype subSplCount = VCubicBezierPath::CountSubSpl(size); if (subSplCount >= 1) { subSplPoints = VCubicBezierPath::SubSplPointsCount(subSplCount)-1; @@ -196,7 +196,7 @@ void VisToolCubicBezierPath::Creating(const QVector &pathPoints, int po DrawLine(helpLine1, p1p2, Color(VColor::MainColor), Qt::DashLine); - const int preLastPoint = subSplCount * 2; + const vsizetype preLastPoint = subSplCount * 2; VScaledEllipse *p2Ctrl = this->GetPoint(ctrlPoints, static_cast(preLastPoint)); DrawPoint(p2Ctrl, p2, Qt::green); } @@ -226,7 +226,7 @@ void VisToolCubicBezierPath::Creating(const QVector &pathPoints, int po VSpline spline(p1, p2, ScenePos(), VPointF(ScenePos())); DrawPath(newCurveSegment, spline.GetPath(), Color(VColor::MainColor), Qt::SolidLine, Qt::RoundCap); - const int preLastPoint = subSplCount * 2; + const vsizetype preLastPoint = subSplCount * 2; VScaledEllipse *p2Ctrl = this->GetPoint(ctrlPoints, static_cast(preLastPoint)); DrawPoint(p2Ctrl, p2, Qt::green); break; @@ -252,7 +252,7 @@ void VisToolCubicBezierPath::Creating(const QVector &pathPoints, int po VSpline spline(p1, p2, p3, VPointF(ScenePos())); DrawPath(newCurveSegment, spline.GetPath(), Color(VColor::MainColor), Qt::SolidLine, Qt::RoundCap); - const int preLastPoint = subSplCount * 2; + const vsizetype preLastPoint = subSplCount * 2; VScaledEllipse *p2Ctrl = this->GetPoint(ctrlPoints, static_cast(preLastPoint)); DrawPoint(p2Ctrl, p2, Qt::green); break; @@ -265,10 +265,10 @@ void VisToolCubicBezierPath::Creating(const QVector &pathPoints, int po //--------------------------------------------------------------------------------------------------------------------- void VisToolCubicBezierPath::RefreshToolTip() { - const int size = path.CountPoints(); + const vsizetype size = path.CountPoints(); if (size > 0) { - const int countSubSpl = VCubicBezierPath::CountSubSpl(size); + const vsizetype countSubSpl = VCubicBezierPath::CountSubSpl(size); if (size < 7) { diff --git a/src/libs/vtools/visualization/path/vistoolcubicbezierpath.h b/src/libs/vtools/visualization/path/vistoolcubicbezierpath.h index 98c27cdf5..95556ddfb 100644 --- a/src/libs/vtools/visualization/path/vistoolcubicbezierpath.h +++ b/src/libs/vtools/visualization/path/vistoolcubicbezierpath.h @@ -68,7 +68,7 @@ private: auto GetPoint(QVector &points, quint32 i, qreal z = 0) -> VScaledEllipse *; auto GetLine(quint32 i) -> VScaledLine *; - void Creating(const QVector &pathPoints , int pointsLeft); + void Creating(const QVector &pathPoints , vsizetype pointsLeft); void RefreshToolTip(); }; diff --git a/src/libs/vtools/visualization/path/vistoolsplinepath.cpp b/src/libs/vtools/visualization/path/vistoolsplinepath.cpp index 6a6cb4525..be3821467 100644 --- a/src/libs/vtools/visualization/path/vistoolsplinepath.cpp +++ b/src/libs/vtools/visualization/path/vistoolsplinepath.cpp @@ -78,7 +78,7 @@ void VisToolSplinePath::RefreshGeometry() } const QVector pathPoints = m_path.GetSplinePath(); - const int size = pathPoints.size(); + const auto size = pathPoints.size(); for (int i = 0; i < size; ++i) { @@ -90,10 +90,10 @@ void VisToolSplinePath::RefreshGeometry() { if (size > 1) { - for (qint32 i = 1; i<=m_path.CountSubSpl(); ++i) + for (vsizetype i = 1; i<=m_path.CountSubSpl(); ++i) { - const int preLastPoint = (m_path.CountSubSpl() - 1) * 2; - const int lastPoint = preLastPoint + 1; + const auto preLastPoint = (m_path.CountSubSpl() - 1) * 2; + const auto lastPoint = preLastPoint + 1; VSpline spl = m_path.GetSpline(i); @@ -196,7 +196,8 @@ auto VisToolSplinePath::GetPoint(quint32 i) -> VScaledEllipse * } //--------------------------------------------------------------------------------------------------------------------- -void VisToolSplinePath::DragControlPoint(int lastPoint, int preLastPoint, const QPointF &pSpl, int size) +void VisToolSplinePath::DragControlPoint(vsizetype lastPoint, vsizetype preLastPoint, const QPointF &pSpl, + vsizetype size) { if (not m_ctrlPoints.at(lastPoint)->isVisible()) { @@ -261,7 +262,7 @@ void VisToolSplinePath::DragControlPoint(int lastPoint, int preLastPoint, const } //--------------------------------------------------------------------------------------------------------------------- -void VisToolSplinePath::NewCurveSegment(const VSpline &spline, const QPointF &pSpl, int size) +void VisToolSplinePath::NewCurveSegment(const VSpline &spline, const QPointF &pSpl, vsizetype size) { m_path[size-1].SetAngle2(spline.GetStartAngle(), spline.GetStartAngleFormula()); @@ -277,10 +278,10 @@ void VisToolSplinePath::NewCurveSegment(const VSpline &spline, const QPointF &pS } //--------------------------------------------------------------------------------------------------------------------- -void VisToolSplinePath::Creating(const QPointF &pSpl, int size) +void VisToolSplinePath::Creating(const QPointF &pSpl, vsizetype size) { - int lastPoint = 0; - int preLastPoint = 0; + vsizetype lastPoint = 0; + vsizetype preLastPoint = 0; if (size > 1) { diff --git a/src/libs/vtools/visualization/path/vistoolsplinepath.h b/src/libs/vtools/visualization/path/vistoolsplinepath.h index 1ea846e63..2908485a6 100644 --- a/src/libs/vtools/visualization/path/vistoolsplinepath.h +++ b/src/libs/vtools/visualization/path/vistoolsplinepath.h @@ -83,9 +83,9 @@ private: QPointF m_ctrlPoint{}; auto GetPoint(quint32 i) -> VScaledEllipse*; - void DragControlPoint(int lastPoint, int preLastPoint, const QPointF &pSpl, int size); - void NewCurveSegment(const VSpline &spline, const QPointF &pSpl, int size); - void Creating(const QPointF &pSpl, int size); + void DragControlPoint(vsizetype lastPoint, vsizetype preLastPoint, const QPointF &pSpl, vsizetype size); + void NewCurveSegment(const VSpline &spline, const QPointF &pSpl, vsizetype size); + void Creating(const QPointF &pSpl, vsizetype size); }; //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vwidgets/fancytabbar/fancytabbar.cpp b/src/libs/vwidgets/fancytabbar/fancytabbar.cpp index af213af15..fdacb790e 100644 --- a/src/libs/vwidgets/fancytabbar/fancytabbar.cpp +++ b/src/libs/vwidgets/fancytabbar/fancytabbar.cpp @@ -338,7 +338,11 @@ bool FancyTabBar::event(QEvent *event) //--------------------------------------------------------------------------------------------------------------------- // Resets hover animation on mouse enter +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +void FancyTabBar::enterEvent(QEnterEvent *e) +#else void FancyTabBar::enterEvent(QEvent *e) +#endif { Q_UNUSED(e) m_hoverRect = QRect(); @@ -378,12 +382,10 @@ QSize FancyTabBar::sizeHint() const if (m_position == Above || m_position == Below) { - return QSize(sh.width() * m_attachedTabs.count(), sh.height()); - } - else - { - return QSize(sh.width(), sh.height() * m_attachedTabs.count()); + return QSize(sh.width() * static_cast(m_attachedTabs.count()), sh.height()); } + + return QSize(sh.width(), sh.height() * static_cast(m_attachedTabs.count())); } //--------------------------------------------------------------------------------------------------------------------- @@ -394,12 +396,10 @@ QSize FancyTabBar::minimumSizeHint() const if(m_position == Above || m_position == Below) { - return QSize(sh.width() * m_attachedTabs.count(), sh.height()); - } - else - { - return QSize(sh.width(), sh.height() * m_attachedTabs.count()); + return QSize(sh.width() * static_cast(m_attachedTabs.count()), sh.height()); } + + return QSize(sh.width(), sh.height() * static_cast(m_attachedTabs.count())); } //--------------------------------------------------------------------------------------------------------------------- @@ -411,7 +411,7 @@ QRect FancyTabBar::TabRect(int index) const { if (sh.width() * m_attachedTabs.count() > width()) { - sh.setWidth(width() / m_attachedTabs.count()); + sh.setWidth(width() / static_cast(m_attachedTabs.count())); } return QRect(index * sh.width(), 0, sh.width(), sh.height()); @@ -420,7 +420,7 @@ QRect FancyTabBar::TabRect(int index) const { if (sh.height() * m_attachedTabs.count() > height()) { - sh.setHeight(height() / m_attachedTabs.count()); + sh.setHeight(height() / static_cast(m_attachedTabs.count())); } return QRect(0, index * sh.height(), sh.width(), sh.height()); @@ -629,7 +629,7 @@ void FancyTabBar::SetTabText(int index, const QString &text) } //--------------------------------------------------------------------------------------------------------------------- -int FancyTabBar::Count() const +vsizetype FancyTabBar::Count() const { return m_attachedTabs.count(); } diff --git a/src/libs/vwidgets/fancytabbar/fancytabbar.h b/src/libs/vwidgets/fancytabbar/fancytabbar.h index 2cc44e7d1..974162e7c 100644 --- a/src/libs/vwidgets/fancytabbar/fancytabbar.h +++ b/src/libs/vwidgets/fancytabbar/fancytabbar.h @@ -77,7 +77,7 @@ public: QString TabText(int index) const; void SetTabText(int index, const QString &text); - int Count() const; + vsizetype Count() const; QRect TabRect(int index) const; signals: @@ -88,7 +88,11 @@ protected: virtual void paintEvent(QPaintEvent *event) override; virtual void mousePressEvent(QMouseEvent *) override; virtual void mouseMoveEvent(QMouseEvent *) override; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + virtual void enterEvent(QEnterEvent *) override; +#else virtual void enterEvent(QEvent *) override; +#endif virtual void leaveEvent(QEvent *) override; private slots: diff --git a/src/libs/vwidgets/qtcolorpicker.cpp b/src/libs/vwidgets/qtcolorpicker.cpp index be52abcd6..1be456be9 100644 --- a/src/libs/vwidgets/qtcolorpicker.cpp +++ b/src/libs/vwidgets/qtcolorpicker.cpp @@ -207,7 +207,7 @@ public: QWidget *parent = nullptr); ~ColorPickerPopup(); - void insertColor(const QColor &col, const QString &text, int index); + void insertColor(const QColor &col, const QString &text, vsizetype index); void exec(); void setExecFlag(); @@ -618,7 +618,7 @@ auto ColorPickerPopup::find(const QColor &col) const -> ColorPickerItem * Adds \a item to the grid. The items are added from top-left to bottom-right. */ -void ColorPickerPopup::insertColor(const QColor &col, const QString &text, int index) +void ColorPickerPopup::insertColor(const QColor &col, const QString &text, vsizetype index) { // Don't add colors that we have already. ColorPickerItem *existingItem = find(col); diff --git a/src/libs/vwidgets/stable.h b/src/libs/vwidgets/stable.h index 927f68493..4585cd661 100644 --- a/src/libs/vwidgets/stable.h +++ b/src/libs/vwidgets/stable.h @@ -77,6 +77,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif/*__cplusplus*/ #endif // STABLE_H diff --git a/src/libs/vwidgets/vabstractmainwindow.cpp b/src/libs/vwidgets/vabstractmainwindow.cpp index 99bd8292d..2bbade844 100644 --- a/src/libs/vwidgets/vabstractmainwindow.cpp +++ b/src/libs/vwidgets/vabstractmainwindow.cpp @@ -236,7 +236,7 @@ void VAbstractMainWindow::UpdateRecentFileActions() { const QStringList files = RecentFileList(); const QStringList recentFiles = RecentFiles(files); - const int numRecentFiles = qMin(files.size(), static_cast(MaxRecentFiles)); + const int numRecentFiles = qMin(static_cast(files.size()), static_cast(MaxRecentFiles)); for (int i = 0; i < numRecentFiles; ++i) { diff --git a/src/libs/vwidgets/vcontrolpointspline.cpp b/src/libs/vwidgets/vcontrolpointspline.cpp index 523d0c9e2..48b70fa5b 100644 --- a/src/libs/vwidgets/vcontrolpointspline.cpp +++ b/src/libs/vwidgets/vcontrolpointspline.cpp @@ -53,7 +53,8 @@ #include "scalesceneitems.h" //--------------------------------------------------------------------------------------------------------------------- -VControlPointSpline::VControlPointSpline(const qint32 &indexSpline, SplinePointPosition position, QGraphicsItem *parent) +VControlPointSpline::VControlPointSpline(const vsizetype &indexSpline, SplinePointPosition position, + QGraphicsItem *parent) : VScenePoint(parent), controlLine(nullptr), indexSpline(indexSpline), @@ -72,7 +73,7 @@ VControlPointSpline::VControlPointSpline(const qint32 &indexSpline, SplinePointP * @param controlPoint control point. * @param parent parent object. */ -VControlPointSpline::VControlPointSpline(const qint32 &indexSpline, SplinePointPosition position, +VControlPointSpline::VControlPointSpline(const vsizetype &indexSpline, SplinePointPosition position, const QPointF &controlPoint, bool freeAngle, bool freeLength, QGraphicsItem *parent) : VScenePoint(parent), @@ -276,7 +277,7 @@ void VControlPointSpline::SetCtrlLine(const QPointF &controlPoint, const QPointF * @param controlPoint control point. * @param splinePoint spline point. */ -void VControlPointSpline::RefreshCtrlPoint(const qint32 &indexSpline, SplinePointPosition pos, +void VControlPointSpline::RefreshCtrlPoint(const vsizetype &indexSpline, SplinePointPosition pos, const QPointF &controlPoint, const QPointF &splinePoint, bool freeAngle, bool freeLength) { diff --git a/src/libs/vwidgets/vcontrolpointspline.h b/src/libs/vwidgets/vcontrolpointspline.h index a8b669f0d..c8b9efc08 100644 --- a/src/libs/vwidgets/vcontrolpointspline.h +++ b/src/libs/vwidgets/vcontrolpointspline.h @@ -50,8 +50,8 @@ class VControlPointSpline : public QObject, public VScenePoint { Q_OBJECT // NOLINT public: - VControlPointSpline(const qint32 &indexSpline, SplinePointPosition position, QGraphicsItem * parent = nullptr); - VControlPointSpline(const qint32 &indexSpline, SplinePointPosition position, const QPointF &controlPoint, + VControlPointSpline(const vsizetype &indexSpline, SplinePointPosition position, QGraphicsItem * parent = nullptr); + VControlPointSpline(const vsizetype &indexSpline, SplinePointPosition position, const QPointF &controlPoint, bool freeAngle, bool freeLength, QGraphicsItem * parent = nullptr); virtual ~VControlPointSpline() =default; @@ -67,7 +67,7 @@ signals: * @param position position point in spline. * @param pos new posotion. */ - void ControlPointChangePosition(const qint32 &indexSpline, SplinePointPosition position, + void ControlPointChangePosition(const vsizetype &indexSpline, SplinePointPosition position, const QPointF &pos); /** * @brief ShowContextMenu emit when need show tool's context menu. @@ -77,7 +77,7 @@ signals: void Released(); void Selected(bool selected); public slots: - void RefreshCtrlPoint(const qint32 &indexSpline, SplinePointPosition pos, const QPointF &controlPoint, + void RefreshCtrlPoint(const vsizetype &indexSpline, SplinePointPosition pos, const QPointF &controlPoint, const QPointF &splinePoint, bool freeAngle = true, bool freeLength = true); void setEnabledPoint(bool enable); protected: @@ -92,7 +92,7 @@ protected: private: Q_DISABLE_COPY_MOVE(VControlPointSpline) // NOLINT /** @brief indexSpline index spline in list.. */ - qint32 indexSpline; + vsizetype indexSpline; /** @brief position position point in spline. */ SplinePointPosition position; diff --git a/src/libs/vwidgets/vhighlighter.cpp b/src/libs/vwidgets/vhighlighter.cpp index 4ba8cf224..02184cc16 100644 --- a/src/libs/vwidgets/vhighlighter.cpp +++ b/src/libs/vwidgets/vhighlighter.cpp @@ -63,7 +63,7 @@ void VHighlighter::highlightBlock(const QString &text) { QScopedPointer data(new VTextBlockData); - int leftPos = text.indexOf('('); + vsizetype leftPos = text.indexOf('('); while (leftPos != -1) { QScopedPointer info(new ParenthesisInfo); @@ -74,7 +74,7 @@ void VHighlighter::highlightBlock(const QString &text) leftPos = text.indexOf('(', leftPos + 1); } - int rightPos = text.indexOf(')'); + vsizetype rightPos = text.indexOf(')'); while (rightPos != -1) { QScopedPointer info(new ParenthesisInfo); diff --git a/src/libs/vwidgets/vhighlighter.h b/src/libs/vwidgets/vhighlighter.h index 313fd6899..f4b1df5f6 100644 --- a/src/libs/vwidgets/vhighlighter.h +++ b/src/libs/vwidgets/vhighlighter.h @@ -31,13 +31,15 @@ #include #include +#include "../vmisc/defglobal.h" + class QString; class QTextDocument; struct ParenthesisInfo { char character; - int position; + vsizetype position; }; class VTextBlockData final : public QTextBlockUserData diff --git a/src/libs/vwidgets/vlineedit.cpp b/src/libs/vwidgets/vlineedit.cpp index 084479161..58c16eb91 100644 --- a/src/libs/vwidgets/vlineedit.cpp +++ b/src/libs/vwidgets/vlineedit.cpp @@ -75,7 +75,7 @@ QString MultiSelectCompleter::pathFromIndex(const QModelIndex& index) const QString text = static_cast(widget())->text(); - int pos = text.lastIndexOf(','); + vsizetype pos = text.lastIndexOf(','); if (pos >= 0) { path = text.left(pos) + ", " + path; @@ -87,7 +87,7 @@ QString MultiSelectCompleter::pathFromIndex(const QModelIndex& index) const //--------------------------------------------------------------------------------------------------------------------- QStringList MultiSelectCompleter::splitPath( const QString& path ) const { - int pos = path.lastIndexOf(',') + 1; + vsizetype pos = path.lastIndexOf(',') + 1; while (pos < path.length() && path.at(pos) == QLatin1Char(' ')) { @@ -122,7 +122,7 @@ void VLineEdit::focusInEvent(QFocusEvent *e) void VLineEdit::focusOutEvent(QFocusEvent *e) { const int start = selectionStart(); - const int selectionLength = selectedText().length(); + const int selectionLength = static_cast(selectedText().length()); const bool wasTextSelected = hasSelectedText(); QLineEdit::focusOutEvent(e); diff --git a/src/libs/vwidgets/vmaingraphicsscene.cpp b/src/libs/vwidgets/vmaingraphicsscene.cpp index 337b71e11..c7636c624 100644 --- a/src/libs/vwidgets/vmaingraphicsscene.cpp +++ b/src/libs/vwidgets/vmaingraphicsscene.cpp @@ -36,9 +36,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/libs/vwidgets/vmaingraphicsview.cpp b/src/libs/vwidgets/vmaingraphicsview.cpp index bee5e3363..c488b51ed 100644 --- a/src/libs/vwidgets/vmaingraphicsview.cpp +++ b/src/libs/vwidgets/vmaingraphicsview.cpp @@ -60,6 +60,7 @@ #include "../vmisc/vabstractapplication.h" #include "../vmisc/vcommonsettings.h" #include "../vmisc/literals.h" +#include "../vmisc/compatibility.h" #include "global.h" #include "../ifc/xml/utils.h" @@ -711,7 +712,7 @@ void VMainGraphicsView::dropEvent(QDropEvent *event) QFileInfo f(fileName); if (f.exists() && IsMimeTypeImage(QMimeDatabase().mimeTypeForFile(fileName))) { - emit currentScene->AddBackgroundImage(mapToScene(event->pos()), fileName); + emit currentScene->AddBackgroundImage(mapToScene(DropEventPos(event)), fileName); event->acceptProposedAction(); } } diff --git a/src/libs/vwidgets/vnobrushscalepathitem.cpp b/src/libs/vwidgets/vnobrushscalepathitem.cpp index f8f09376d..660fbf703 100644 --- a/src/libs/vwidgets/vnobrushscalepathitem.cpp +++ b/src/libs/vwidgets/vnobrushscalepathitem.cpp @@ -31,7 +31,6 @@ #include "../vmisc/vabstractapplication.h" #include -#include #include //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vwidgets/vplaintextedit.cpp b/src/libs/vwidgets/vplaintextedit.cpp index 0e06af2d7..5806d30c2 100644 --- a/src/libs/vwidgets/vplaintextedit.cpp +++ b/src/libs/vwidgets/vplaintextedit.cpp @@ -86,7 +86,7 @@ void VPlainTextEdit::appendPlainText(const QString &text) else { m_allLines.append(text); - const int diff = m_allLines.size() - maximumBlockCount(); + const vsizetype diff = m_allLines.size() - maximumBlockCount(); if (diff > 0) { m_allLines = m_allLines.mid(diff); @@ -115,12 +115,15 @@ void VPlainTextEdit::MatchParentheses() int curPos = textCursor().position() - textCursor().block().position(); if ((info->position == curPos - 1 || info->position == curPos) && info->character == '(') { - CreateParenthesisSelection(pos + info->position, MatchLeftParenthesis(textCursor().block(), i + 1, 0)); + CreateParenthesisSelection(pos + static_cast(info->position), + MatchLeftParenthesis(textCursor().block(), i + 1, 0)); return; } - else if ((info->position == curPos - 1 || info->position == curPos) && info->character == ')') + + if ((info->position == curPos - 1 || info->position == curPos) && info->character == ')') { - CreateParenthesisSelection(pos + info->position, MatchRightParenthesis(textCursor().block(), i - 1, 0)); + CreateParenthesisSelection(pos + static_cast(info->position), + MatchRightParenthesis(textCursor().block(), i - 1, 0)); return; } } @@ -146,7 +149,7 @@ bool VPlainTextEdit::MatchLeftParenthesis(QTextBlock currentBlock, int i, int nu if (info->character == ')' && numLeftParentheses == 0) { - CreateParenthesisSelection(docPos + info->position); + CreateParenthesisSelection(docPos + static_cast(info->position)); return true; } else @@ -182,13 +185,11 @@ bool VPlainTextEdit::MatchRightParenthesis(QTextBlock currentBlock, int i, int n if (info->character == '(' && numRightParentheses == 0) { - CreateParenthesisSelection(docPos + info->position); + CreateParenthesisSelection(docPos + static_cast(info->position)); return true; } - else - { - --numRightParentheses; - } + + --numRightParentheses; } currentBlock = currentBlock.previous(); diff --git a/src/libs/vwidgets/vtextgraphicsitem.cpp b/src/libs/vwidgets/vtextgraphicsitem.cpp index e251a5c58..3f699d99e 100644 --- a/src/libs/vwidgets/vtextgraphicsitem.cpp +++ b/src/libs/vwidgets/vtextgraphicsitem.cpp @@ -335,7 +335,7 @@ void VTextGraphicsItem::UpdateData(VAbstractPattern* pDoc, const VContainer *pat * @brief VTextGraphicsItem::GetTextLines returns the number of lines of text to show * @return number of lines of text */ -int VTextGraphicsItem::GetTextLines() const +vsizetype VTextGraphicsItem::GetTextLines() const { return m_tm.GetSourceLinesCount(); } diff --git a/src/libs/vwidgets/vtextgraphicsitem.h b/src/libs/vwidgets/vtextgraphicsitem.h index 072e83a52..4d6967d3b 100644 --- a/src/libs/vwidgets/vtextgraphicsitem.h +++ b/src/libs/vwidgets/vtextgraphicsitem.h @@ -67,7 +67,7 @@ public: bool IsContained(QRectF rectBB, qreal dRot, qreal& dX, qreal& dY) const; void UpdateData(const QString& qsName, const VPieceLabelData& data, const VContainer *pattern); void UpdateData(VAbstractPattern* pDoc, const VContainer *pattern); - int GetTextLines() const; + vsizetype GetTextLines() const; protected: virtual void mousePressEvent(QGraphicsSceneMouseEvent* pME) override; diff --git a/src/libs/vwidgets/vwidgets.qbs b/src/libs/vwidgets/vwidgets.qbs index 1f68787a9..d3cab934f 100644 --- a/src/libs/vwidgets/vwidgets.qbs +++ b/src/libs/vwidgets/vwidgets.qbs @@ -1,8 +1,15 @@ +import qbs.Utilities + VLib { - Depends { name: "Qt"; submodules: ["widgets"] } + Depends { name: "Qt"; submodules: ["core", "widgets"] } Depends { name: "VMiscLib" } Depends { name: "VPropertyExplorerLib" } + Depends { + name: "Qt.openglwidgets"; + condition: Utilities.versionCompare(Qt.core.version, "6") >= 0 + } + name: "VWidgetsLib" files: [ "qtcolorpicker.cpp", diff --git a/src/test/CollectionTest/CollectionTest.qbs b/src/test/CollectionTest/CollectionTest.qbs index 228abf5f9..d939a4a8f 100644 --- a/src/test/CollectionTest/CollectionTest.qbs +++ b/src/test/CollectionTest/CollectionTest.qbs @@ -5,6 +5,7 @@ VTestApp { Depends { name: "buildconfig" } Depends { name: "Qt"; submodules: ["testlib", "gui", "printsupport"] } Depends { name: "VTestLib" } + Depends { name: "conan.XercesC"; condition: buildconfig.useConanPackages } name: "CollectionTest" buildconfig.appTarget: qbs.targetOS.contains("macos") ? "CollectionTest" : "collectionTest" diff --git a/src/test/CollectionTest/stable.h b/src/test/CollectionTest/stable.h index b9f7c0985..c9ba017e4 100644 --- a/src/test/CollectionTest/stable.h +++ b/src/test/CollectionTest/stable.h @@ -83,6 +83,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif /*__cplusplus*/ #endif // STABLE_H diff --git a/src/test/ParserTest/stable.h b/src/test/ParserTest/stable.h index 96c9967eb..db69c6def 100644 --- a/src/test/ParserTest/stable.h +++ b/src/test/ParserTest/stable.h @@ -81,6 +81,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif #endif // STABLE_H diff --git a/src/test/TranslationsTest/TranslationsTest.qbs b/src/test/TranslationsTest/TranslationsTest.qbs index ea1804a95..daceab860 100644 --- a/src/test/TranslationsTest/TranslationsTest.qbs +++ b/src/test/TranslationsTest/TranslationsTest.qbs @@ -4,6 +4,7 @@ VTestApp { Depends { name: "buildconfig" } Depends { name: "VTestLib" } Depends { name: "Qt"; submodules: ["testlib", "xml", "gui", "printsupport"] } + Depends { name: "conan.XercesC"; condition: buildconfig.useConanPackages } name: "TranslationsTest" buildconfig.appTarget: qbs.targetOS.contains("macos") ? "TranslationsTest" : "translationsTest" diff --git a/src/test/TranslationsTest/stable.h b/src/test/TranslationsTest/stable.h index 82ed14435..25e42311a 100644 --- a/src/test/TranslationsTest/stable.h +++ b/src/test/TranslationsTest/stable.h @@ -83,6 +83,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif /*__cplusplus*/ #endif // STABLE_H diff --git a/src/test/TranslationsTest/tst_abstractregexp.cpp b/src/test/TranslationsTest/tst_abstractregexp.cpp index 0bfbd113f..6777af9de 100644 --- a/src/test/TranslationsTest/tst_abstractregexp.cpp +++ b/src/test/TranslationsTest/tst_abstractregexp.cpp @@ -199,7 +199,7 @@ void TST_AbstractRegExp::CallTestForValidCharacters() } const QString translated = m_trMs->VarToUser(originalName); - const int pos = FindFirstNotOf(translated, validNameChars); + const vsizetype pos = FindFirstNotOf(translated, validNameChars); if (pos != -1) { const QString message = QStringLiteral("Translated string '%1' contains invalid character '%2' at " diff --git a/src/test/TranslationsTest/tst_measurementregexp.cpp b/src/test/TranslationsTest/tst_measurementregexp.cpp index 3c29d4004..9c504606a 100644 --- a/src/test/TranslationsTest/tst_measurementregexp.cpp +++ b/src/test/TranslationsTest/tst_measurementregexp.cpp @@ -196,7 +196,7 @@ void TST_MeasurementRegExp::cleanupTestCase() //--------------------------------------------------------------------------------------------------------------------- void TST_MeasurementRegExp::TestCombinations(int systemCounts, const QStringList &locales) const { - const int combinations = systemCounts * locales.size(); + const vsizetype combinations = systemCounts * locales.size(); QDir dir(TranslationsPath()); const QStringList fileNames = dir.entryList(QStringList("measurements_p*_*.qm")); diff --git a/src/test/TranslationsTest/tst_tslocaletranslation.cpp b/src/test/TranslationsTest/tst_tslocaletranslation.cpp index af4f23cdf..3870e12ca 100644 --- a/src/test/TranslationsTest/tst_tslocaletranslation.cpp +++ b/src/test/TranslationsTest/tst_tslocaletranslation.cpp @@ -334,10 +334,10 @@ void TST_TSLocaleTranslation::TestHTMLTags() QRegularExpression::DotMatchesEverythingOption); if (source.contains(openRegex)) { - const int countOpenTag = source.count(openRegex); + const auto countOpenTag = source.count(openRegex); const QRegularExpression closeRegex(QLatin1String("'. ").arg(tag) + diff --git a/src/test/ValentinaTest/ValentinaTest.qbs b/src/test/ValentinaTest/ValentinaTest.qbs index 6f08262cd..67be4041c 100644 --- a/src/test/ValentinaTest/ValentinaTest.qbs +++ b/src/test/ValentinaTest/ValentinaTest.qbs @@ -1,7 +1,9 @@ +import qbs.Utilities + VTestApp { Depends { name: "buildconfig" } Depends { name: "VTestLib" } - Depends { name: "Qt"; submodules: ["testlib"] } + Depends { name: "Qt"; submodules: ["core", "testlib"] } Depends { name: "VToolsLib" } Depends { name: "VGeometryLib" } Depends { name: "IFCLib" } @@ -9,60 +11,67 @@ VTestApp { Depends { name: "VFormatLib" } Depends { name: "ebr" } + Depends { + name: "Qt.xmlpatterns" + condition: Utilities.versionCompare(Qt.core.version, "6") < 0 + } + name: "ValentinaTest" buildconfig.appTarget: qbs.targetOS.contains("macos") ? "ValentinaTest" : "valentinaTest" targetName: buildconfig.appTarget files: [ - "qttestmainlambda.cpp", - "tst_dxf.cpp", - "tst_vdomdocument.cpp", - "tst_vposter.cpp", - "tst_vspline.cpp", - "tst_nameregexp.cpp", - "tst_vlayoutdetail.cpp", - "tst_varc.cpp", - "tst_qmutokenparser.cpp", - "tst_vmeasurements.cpp", - "tst_vlockguard.cpp", - "tst_misc.cpp", - "tst_vcommandline.cpp", - "tst_vpiece.cpp", - "tst_vabstractcurve.cpp", - "tst_findpoint.cpp", - "tst_vellipticalarc.cpp", - "tst_vcubicbezierpath.cpp", - "tst_vgobject.cpp", - "tst_vsplinepath.cpp", - "tst_vpointf.cpp", - "tst_readval.cpp", - "tst_vtranslatevars.cpp", - "tst_vabstractpiece.cpp", - "tst_vtooluniondetails.cpp", - "tst_dxf.h", - "tst_vdomdocument.h", - "tst_vposter.h", - "tst_vspline.h", - "tst_nameregexp.h", - "tst_vlayoutdetail.h", - "tst_varc.h", - "tst_qmutokenparser.h", - "tst_vmeasurements.h", - "tst_vlockguard.h", - "tst_misc.h", - "tst_vcommandline.h", - "tst_vpiece.h", - "tst_vabstractcurve.h", - "tst_findpoint.h", - "tst_vellipticalarc.h", - "tst_vcubicbezierpath.h", - "tst_vgobject.h", - "tst_vsplinepath.h", - "tst_vpointf.h", - "tst_readval.h", - "tst_vtranslatevars.h", - "tst_vabstractpiece.h", - "tst_vtooluniondetails.h", + "qttestmainlambda.cpp", + "tst_dxf.cpp", + "tst_vdomdocument.cpp", + "tst_vposter.cpp", + "tst_vspline.cpp", + "tst_nameregexp.cpp", + "tst_vlayoutdetail.cpp", + "tst_varc.cpp", + "tst_qmutokenparser.cpp", + "tst_vmeasurements.cpp", + "tst_vlockguard.cpp", + "tst_misc.cpp", + "tst_vcommandline.cpp", + "tst_vpiece.cpp", + "tst_vabstractcurve.cpp", + "tst_findpoint.cpp", + "tst_vellipticalarc.cpp", + "tst_vcubicbezierpath.cpp", + "tst_vgobject.cpp", + "tst_vsplinepath.cpp", + "tst_vpointf.cpp", + "tst_readval.cpp", + "tst_vtranslatevars.cpp", + "tst_vabstractpiece.cpp", + "tst_vtooluniondetails.cpp", + "tst_dxf.h", + "tst_vdomdocument.h", + "tst_vposter.h", + "tst_vspline.h", + "tst_nameregexp.h", + "tst_vlayoutdetail.h", + "tst_varc.h", + "tst_qmutokenparser.h", + "tst_vmeasurements.h", + "tst_vlockguard.h", + "tst_misc.h", + "tst_vcommandline.h", + "tst_vpiece.h", + "tst_vabstractcurve.h", + "tst_findpoint.h", + "tst_vellipticalarc.h", + "tst_vcubicbezierpath.h", + "tst_vgobject.h", + "tst_vsplinepath.h", + "tst_vpointf.h", + "tst_readval.h", + "tst_vtranslatevars.h", + "tst_vabstractpiece.h", + "tst_vtooluniondetails.h", + "tst_xsdschema.cpp", + "tst_xsdschema.h", ] Group { diff --git a/src/test/ValentinaTest/qttestmainlambda.cpp b/src/test/ValentinaTest/qttestmainlambda.cpp index db014e445..1eb88114f 100644 --- a/src/test/ValentinaTest/qttestmainlambda.cpp +++ b/src/test/ValentinaTest/qttestmainlambda.cpp @@ -28,6 +28,10 @@ #include +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include +#endif + #include "tst_vposter.h" #include "tst_vabstractpiece.h" #include "tst_vspline.h" @@ -52,6 +56,7 @@ #include "tst_vtooluniondetails.h" #include "tst_vdomdocument.h" #include "tst_dxf.h" +#include "tst_xsdschema.h" #include "../vmisc/def.h" #include "../qmuparser/qmudef.h" @@ -62,6 +67,12 @@ int main(int argc, char** argv) { Q_INIT_RESOURCE(schema); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); + + auto Terminate = qScopeGuard([](){ XERCES_CPP_NAMESPACE::XMLPlatformUtils::Terminate(); }); +#endif + TestVApplication app( argc, argv );// For QPrinter QResource::registerResource(QCoreApplication::applicationDirPath() + QStringLiteral("/test_data.rcc")); @@ -96,6 +107,7 @@ int main(int argc, char** argv) ASSERT_TEST(new TST_VTranslateVars()); ASSERT_TEST(new TST_VToolUnionDetails()); ASSERT_TEST(new TST_DXF()); + ASSERT_TEST(new TST_XSDShema()); return status; } diff --git a/src/test/ValentinaTest/stable.h b/src/test/ValentinaTest/stable.h index 14e519112..a0fbcca2c 100644 --- a/src/test/ValentinaTest/stable.h +++ b/src/test/ValentinaTest/stable.h @@ -83,6 +83,12 @@ # include #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#ifdef QT_OPENGLWIDGETS_LIB +# include +#endif +#endif + #endif /*__cplusplus*/ #endif // STABLE_H diff --git a/src/test/ValentinaTest/tst_dxf.cpp b/src/test/ValentinaTest/tst_dxf.cpp index d171c3983..14be7d5cb 100644 --- a/src/test/ValentinaTest/tst_dxf.cpp +++ b/src/test/ValentinaTest/tst_dxf.cpp @@ -34,12 +34,22 @@ #include "../vdxf/dxfdef.h" #include "../vdxf/libdxfrw/intern/drw_textcodec.h" +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include "../vmisc/vtextcodec.h" +#else +#include +#endif + +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +#include "../vmisc/backport/text.h" +#endif + namespace { //--------------------------------------------------------------------------------------------------------------------- QStringList AvailableCodecs() { - QList codecs = QTextCodec::availableCodecs(); + QList codecs = VTextCodec::availableCodecs(); QSet uniqueNames; for(auto &codec: codecs) { @@ -48,7 +58,7 @@ QStringList AvailableCodecs() return ConvertToList(uniqueNames); } -} +} // namespace //--------------------------------------------------------------------------------------------------------------------- TST_DXF::TST_DXF(QObject *parent) @@ -59,11 +69,7 @@ TST_DXF::TST_DXF(QObject *parent) void TST_DXF::initTestCase() { QTextStream ts(stdout); -#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) - ts << QStringLiteral("Available codecs:\n%2.").arg(AvailableCodecs().join(", "))<< endl; -#else ts << QStringLiteral("Available codecs:\n%2.").arg(AvailableCodecs().join(", "))<< Qt::endl; -#endif } //--------------------------------------------------------------------------------------------------------------------- @@ -112,7 +118,7 @@ void TST_DXF::TestCodecPage() QVERIFY (not dxfCodePage.isEmpty()); - QTextCodec *codec = DRW_TextCodec::CodecForName(dxfCodePage); + VTextCodec *codec = DRW_TextCodec::CodecForName(dxfCodePage); QVERIFY2(codec != nullptr, qUtf8Printable(QStringLiteral("No codec for dxf codepage %1 found.") .arg(dxfCodePage))); diff --git a/src/test/ValentinaTest/tst_nameregexp.cpp b/src/test/ValentinaTest/tst_nameregexp.cpp index dfbce14af..d5416f901 100644 --- a/src/test/ValentinaTest/tst_nameregexp.cpp +++ b/src/test/ValentinaTest/tst_nameregexp.cpp @@ -48,7 +48,7 @@ void TST_NameRegExp::TestNameRegExp_data() const QList allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry); - for(auto &locale : allLocales) + for(const auto &locale : allLocales) { INIT_LOCALE_VARIABLES(locale); Q_UNUSED(positiveSign) @@ -56,6 +56,7 @@ void TST_NameRegExp::TestNameRegExp_data() Q_UNUSED(expLower) const QString localeName = locale.name(); + QString tag = localeName+QLatin1String(". First character can't be ")+sign0; QTest::newRow(qUtf8Printable(tag)) << sign0+QLatin1String("a") << false; diff --git a/src/test/ValentinaTest/tst_qmutokenparser.cpp b/src/test/ValentinaTest/tst_qmutokenparser.cpp index 1dac89e0e..13fd1eb0d 100644 --- a/src/test/ValentinaTest/tst_qmutokenparser.cpp +++ b/src/test/ValentinaTest/tst_qmutokenparser.cpp @@ -28,6 +28,7 @@ #include "tst_qmutokenparser.h" #include "../qmuparser/qmutokenparser.h" +#include "../qmuparser/qmudef.h" #include @@ -83,8 +84,12 @@ void TST_QmuTokenParser::TokenFromUser_data() const QList allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry); - for(auto &locale : allLocales) + for(const auto &locale : allLocales) { + if (not SupportedLocale(locale)) + { + continue; + } PrepareVal(1000.5, locale); PrepareVal(-1000.5, locale); } @@ -137,8 +142,8 @@ bool TST_QmuTokenParser::IsSingleFromUser(const QString &formula) return false;// if don't know say no } - QMap tokens; - QMap numbers; + QMap tokens; + QMap numbers; try { @@ -153,14 +158,7 @@ bool TST_QmuTokenParser::IsSingleFromUser(const QString &formula) } // Remove "-" from tokens list if exist. If don't do that unary minus operation will broken. - qmu::QmuFormulaBase::RemoveAll(tokens, QLocale().negativeSign()); + qmu::QmuFormulaBase::RemoveAll(tokens, LocaleNegativeSign(QLocale())); - if (tokens.isEmpty() && numbers.size() == 1) - { - return true; - } - else - { - return false; - } + return tokens.isEmpty() && numbers.size() == 1; } diff --git a/src/test/ValentinaTest/tst_readval.cpp b/src/test/ValentinaTest/tst_readval.cpp index 8e1bed040..3a95be604 100644 --- a/src/test/ValentinaTest/tst_readval.cpp +++ b/src/test/ValentinaTest/tst_readval.cpp @@ -28,6 +28,7 @@ #include "tst_readval.h" #include "../qmuparser/qmudef.h" +#include "../vmisc/compatibility.h" #include #include @@ -49,8 +50,13 @@ void TST_ReadVal::TestReadVal_data() const QList allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry); - for(auto &locale : allLocales) + for(const auto &locale : allLocales) { + if (not SupportedLocale(locale)) + { + continue; + } + PrepareVal(1., locale); PrepareVal(1.0, locale); PrepareVal(-1.0, locale); @@ -121,7 +127,7 @@ void TST_ReadVal::PrepareVal(qreal val, const QLocale &locale) } //--------------------------------------------------------------------------------------------------------------------- -void TST_ReadVal::PrepareString(const QString &str, const QLocale &locale, qreal val, int count) +void TST_ReadVal::PrepareString(const QString &str, const QLocale &locale, qreal val, vsizetype count) { const QString tag = QStringLiteral("%1. String '%2'").arg(locale.name(), str); QTest::newRow(qUtf8Printable(tag)) << str << count << val << locale; @@ -138,7 +144,8 @@ void TST_ReadVal::TestVal() qreal resVal = 0; QLocale::setDefault(locale); - const int resCount = ReadVal(formula, resVal, locale, locale.decimalPoint(), locale.groupSeparator()); + const vsizetype resCount = ReadVal(formula, resVal, locale, VLocaleCharacter(LocaleDecimalPoint(locale)), + VLocaleCharacter(LocaleGroupSeparator(locale))); // cppcheck-suppress unreadVariable QString errorMsg = QStringLiteral("Conversion failed. Locale: '%1'.").arg(locale.name()); diff --git a/src/test/ValentinaTest/tst_readval.h b/src/test/ValentinaTest/tst_readval.h index f80aef25b..69f29e1fd 100644 --- a/src/test/ValentinaTest/tst_readval.h +++ b/src/test/ValentinaTest/tst_readval.h @@ -53,7 +53,7 @@ private: QLocale m_systemLocale; void PrepareVal(qreal val, const QLocale &locale); - void PrepareString(const QString &str, const QLocale &locale, qreal val=0, int count=-1); + void PrepareString(const QString &str, const QLocale &locale, qreal val=0, vsizetype count=-1); void TestVal(); }; diff --git a/src/test/ValentinaTest/tst_vcubicbezierpath.cpp b/src/test/ValentinaTest/tst_vcubicbezierpath.cpp index 8e830c4fb..71e1a8b96 100644 --- a/src/test/ValentinaTest/tst_vcubicbezierpath.cpp +++ b/src/test/ValentinaTest/tst_vcubicbezierpath.cpp @@ -65,7 +65,7 @@ void TST_VCubicBezierPath::TestCountSubSpl() const QFETCH(qint32, points); QFETCH(qint32, countSubSpl); - const qint32 res = VCubicBezierPath::CountSubSpl(points); + const auto res = VCubicBezierPath::CountSubSpl(points); QCOMPARE(res, countSubSpl); } @@ -91,7 +91,7 @@ void TST_VCubicBezierPath::TestSubSplOffset() const QFETCH(qint32, subSplIndex); QFETCH(qint32, offset); - const qint32 res = VCubicBezierPath::SubSplOffset(subSplIndex); + const auto res = VCubicBezierPath::SubSplOffset(subSplIndex); QCOMPARE(res, offset); } @@ -117,6 +117,6 @@ void TST_VCubicBezierPath::TestSubSplPointsCount() const QFETCH(qint32, countSubSpl); QFETCH(qint32, points); - const qint32 res = VCubicBezierPath::SubSplPointsCount(countSubSpl); + const auto res = VCubicBezierPath::SubSplPointsCount(countSubSpl); QCOMPARE(res, points); } diff --git a/src/test/ValentinaTest/tst_vtranslatevars.cpp b/src/test/ValentinaTest/tst_vtranslatevars.cpp index 31062c8f9..3059c9623 100644 --- a/src/test/ValentinaTest/tst_vtranslatevars.cpp +++ b/src/test/ValentinaTest/tst_vtranslatevars.cpp @@ -28,8 +28,9 @@ #include "tst_vtranslatevars.h" #include "../vpatterndb/vtranslatevars.h" -#include "../qmuparser/qmuparsererror.h" +#include "../qmuparser/qmudef.h" #include "testvapplication.h" +#include "../vmisc/compatibility.h" #include @@ -59,6 +60,11 @@ void TST_VTranslateVars::TestFormulaFromUser_data() QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry); for(auto &locale : allLocales) { + if (not SupportedLocale(locale)) + { + continue; + } + PrepareValFromUser(1000.5, locale); PrepareValFromUser(-1000.5, locale); } @@ -89,6 +95,11 @@ void TST_VTranslateVars::TestFormulaToUser_data() QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry); for(auto &locale : allLocales) { + if (not SupportedLocale(locale)) + { + continue; + } + PrepareValToUser(1000.5, locale); PrepareValToUser(-1000.5, locale); } @@ -129,9 +140,9 @@ void TST_VTranslateVars::PrepareValToUser(double d, const QLocale &locale) { const QString formulaFromSystem = QLocale::c().toString(d); QString formulaToUser = locale.toString(d); - if (locale.groupSeparator().isSpace()) + if (VLocaleCharacter(LocaleGroupSeparator(locale)).isSpace()) { - formulaToUser.replace(locale.groupSeparator(), QString()); + formulaToUser.replace(LocaleGroupSeparator(locale), QString()); } PrepareVal(formulaFromSystem, formulaToUser, locale); diff --git a/src/test/ValentinaTest/tst_xsdschema.cpp b/src/test/ValentinaTest/tst_xsdschema.cpp new file mode 100644 index 000000000..c4cafe09e --- /dev/null +++ b/src/test/ValentinaTest/tst_xsdschema.cpp @@ -0,0 +1,269 @@ +/************************************************************************ + ** + ** @file tst_xsdschema.cpp + ** @author Roman Telezhynskyi + ** @date 10 2, 2023 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2023 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#include "tst_xsdschema.h" + +#include "../ifc/xml/vpatternconverter.h" +#include "../ifc/xml/vlabeltemplateconverter.h" +#include "../ifc/xml/vlayoutconverter.h" +#include "../ifc/xml/vvitconverter.h" +#include "../ifc/xml/vvstconverter.h" +#include "../ifc/xml/vwatermarkconverter.h" +#include "../ifc/xml/vparsererrorhandler.h" + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include + +#include +#else +#include +#include +#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + +namespace +{ +//--------------------------------------------------------------------------------------------------------------------- +void ValidateSchema(const QString &schema) +{ + QFile fileSchema(schema); + if (not fileSchema.open(QIODevice::ReadOnly)) + { + QFAIL(qUtf8Printable(QStringLiteral("Can't open file %1:\n%2.").arg(schema, fileSchema.errorString()))); + } + + VParserErrorHandler parserErrorHandler; + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QScopedPointer tempSchema(QTemporaryFile::createNativeFile(fileSchema)); + if (tempSchema == nullptr) + { + QFAIL(qUtf8Printable(QStringLiteral("Can't create native file for schema file %1:\n%2.") + .arg(schema, fileSchema.errorString()))); + } + + if (tempSchema->open()) + { + XercesDOMParser domParser; + domParser.setErrorHandler(&parserErrorHandler); + + if (domParser.loadGrammar( + tempSchema->fileName().toUtf8().constData(), Grammar::SchemaGrammarType, true) == nullptr) + { + QFAIL(qUtf8Printable(QStringLiteral("%1 Could not load schema file '%2'.") + .arg(parserErrorHandler.StatusMessage(), fileSchema.fileName()))); + } + + QVERIFY2(not parserErrorHandler.HasError(), + qUtf8Printable(QStringLiteral("%1 Schema file %2 invalid in line %3 column %4.") + .arg(parserErrorHandler.StatusMessage(), fileSchema.fileName()) + .arg(parserErrorHandler.Line()) + .arg(parserErrorHandler.Column()))); + } + else + { + QFAIL("Unable to open native file for schema"); + } +#else + QXmlSchema sch; + sch.setMessageHandler(&parserErrorHandler); + if (not sch.load(&fileSchema, QUrl::fromLocalFile(fileSchema.fileName()))) + { + QFAIL(qUtf8Printable(QStringLiteral("%1 Could not load schema file '%2'.") + .arg(parserErrorHandler.StatusMessage(), fileSchema.fileName()))); + } + + QVERIFY2(sch.isValid(), qUtf8Printable(QStringLiteral("%1 Validation error file %2 in line %3 column %4.") + .arg(parserErrorHandler.StatusMessage(), fileSchema.fileName()) + .arg(parserErrorHandler.Line()) + .arg(parserErrorHandler.Column()))); +#endif +} + +//--------------------------------------------------------------------------------------------------------------------- +auto HashToMap(const QHash &hash) -> QMap +{ + QMap map; + + auto i = hash.constBegin(); + while (i != hash.constEnd()) + { + map.insert(i.key(), i.value()); + ++i; + } + + return map; +} +} // namespace + +//--------------------------------------------------------------------------------------------------------------------- +TST_XSDShema::TST_XSDShema(QObject *parent) + :QObject(parent) +{} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestPatternSchema_data() +{ + QTest::addColumn("schema"); + + const QMap schemas = HashToMap(VPatternConverter::XSDSchemas()); + + auto i = schemas.constBegin(); + while (i != schemas.constEnd()) + { + QFileInfo f(i.value()); + QTest::newRow(qUtf8Printable(f.fileName())) << i.value(); + ++i; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestPatternSchema() +{ + QFETCH(QString, schema); + + ValidateSchema(schema); +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestPatternLabelSchema_data() +{ + QTest::addColumn("schema"); + + const QMap schemas = HashToMap(VLabelTemplateConverter::XSDSchemas()); + + auto i = schemas.constBegin(); + while (i != schemas.constEnd()) + { + QFileInfo f(i.value()); + QTest::newRow(qUtf8Printable(f.fileName())) << i.value(); + ++i; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestPatternLabelSchema() +{ + QFETCH(QString, schema); + + ValidateSchema(schema); +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestLayoutSchema_data() +{ + QTest::addColumn("schema"); + + const QMap schemas = HashToMap(VLayoutConverter::XSDSchemas()); + + auto i = schemas.constBegin(); + while (i != schemas.constEnd()) + { + QFileInfo f(i.value()); + QTest::newRow(qUtf8Printable(f.fileName())) << i.value(); + ++i; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestLayoutSchema() +{ + QFETCH(QString, schema); + + ValidateSchema(schema); +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestVITSchema_data() +{ + QTest::addColumn("schema"); + + const QMap schemas = HashToMap(VVITConverter::XSDSchemas()); + + auto i = schemas.constBegin(); + while (i != schemas.constEnd()) + { + QFileInfo f(i.value()); + QTest::newRow(qUtf8Printable(f.fileName())) << i.value(); + ++i; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestVITSchema() +{ + QFETCH(QString, schema); + + ValidateSchema(schema); +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestVSTSchema_data() +{ + QTest::addColumn("schema"); + + const QMap schemas = HashToMap(VVSTConverter::XSDSchemas()); + + auto i = schemas.constBegin(); + while (i != schemas.constEnd()) + { + QFileInfo f(i.value()); + QTest::newRow(qUtf8Printable(f.fileName())) << i.value(); + ++i; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestVSTSchema() +{ + QFETCH(QString, schema); + + ValidateSchema(schema); +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestWatermarkSchema_data() +{ + QTest::addColumn("schema"); + + const QMap schemas = HashToMap(VWatermarkConverter::XSDSchemas()); + + auto i = schemas.constBegin(); + while (i != schemas.constEnd()) + { + QFileInfo f(i.value()); + QTest::newRow(qUtf8Printable(f.fileName())) << i.value(); + ++i; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void TST_XSDShema::TestWatermarkSchema() +{ + QFETCH(QString, schema); + + ValidateSchema(schema); +} diff --git a/src/test/ValentinaTest/tst_xsdschema.h b/src/test/ValentinaTest/tst_xsdschema.h new file mode 100644 index 000000000..ab59a5914 --- /dev/null +++ b/src/test/ValentinaTest/tst_xsdschema.h @@ -0,0 +1,62 @@ +/************************************************************************ + ** + ** @file tst_xsdschema.h + ** @author Roman Telezhynskyi + ** @date 10 2, 2023 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2023 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#ifndef TST_XSDSCHEMA_H +#define TST_XSDSCHEMA_H + +#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0) +#include "../vmisc/defglobal.h" +#endif + +class TST_XSDShema :public QObject +{ + Q_OBJECT // NOLINT +public: + explicit TST_XSDShema(QObject *parent = nullptr); + ~TST_XSDShema() override = default; + +private slots: + void TestPatternSchema_data(); + void TestPatternSchema(); + void TestPatternLabelSchema_data(); + void TestPatternLabelSchema(); + void TestLayoutSchema_data(); + void TestLayoutSchema(); + void TestVITSchema_data(); + void TestVITSchema(); + void TestVSTSchema_data(); + void TestVSTSchema(); + void TestWatermarkSchema_data(); + void TestWatermarkSchema(); + +private: + Q_DISABLE_COPY_MOVE(TST_XSDShema) // NOLINT +}; + +#endif // TST_XSDSCHEMA_H diff --git a/valentina.qbs b/valentina.qbs index 38c2f2971..956488c5e 100644 --- a/valentina.qbs +++ b/valentina.qbs @@ -1,6 +1,23 @@ +import qbs.Probes + Project { name: "Valentina" minimumQbsVersion: "1.16" + + property bool enableConan: false + + Probes.ConanfileProbe { + id: thirdPartyConanPackages + condition: enableConan + conanfilePath: project.sourceDirectory + "/conanfile.txt" + options: { + if (qbs.targetOS.contains("unix") && !qbs.targetOS.contains("macos")) + return ({"xerces-c:shared": "False"}); + + return ({"xerces-c:shared": "True"}); + } + } + references: [ "src/src.qbs", "share/translations/translations.qbs",