From b7b35643a121064c26057c22ded7c9132cccba29 Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Wed, 3 Jun 2020 12:59:19 +0200 Subject: [PATCH] Fix Deprecation warnings with Qt 5.15 (and 5.14) * fix 383 warnings C4996 (deprecated) with one single line change * fix 5 'empty' warnings about invalid slots, not sure the remaining slots serve any purpose though * disable warnings C4127 and C4996 for thirdparty/google_analytics * fix 30 warnings C4996 using the suggested alternatives available since at least Qt 5.9, so won't break building against that * change as requested in code review plus some more fixes using the same idea * fixing yet more warnings * disable deprecation warnings in qoogle_analytics for MinGW too although I believe maxOS and Linux may use those too. Easy to extend to those, if need be. * Fix qml runtime warnings exactly following the advice given by that warning, but without really know what I'm doing here or whether that is still backwards compatible to Qt 5.9. * Use replacements as suggested, if available and no `endl` neded with `qDebug()` * fix 24 more * 2 more * 7 more (one only seen in DEBUG mode) * Fix the `endl` warnings * maybe more changes this way? * Add all warnings C5999 or bigger to the ignore list for telemetry with Qt 5.15 Beta 1 as avoiding only C26439, C26444,C 26452, C26495, C26498, C26812 isn't possible * fix 2 deprecation warning new with Qt 5.15 beta 1 * fix 4 new warnings and also Qt 5.12 builds, disable some dead code * fix deprecation warnings new with Qt 5.15's MSVC 2019 integration and revert some (`QNetworkReply::networkError()`) that Qt 5.15 beta 2 reverted too * fix warning reg. obsolete operator < for QVariants * revert changes needed prior to beta 3 And clarifying some earlier changes * mark ToDos * fix warning reg QString()::null * fix a 'regression' from a revert of an earlier change --- audio/midi/fluid/sfont.cpp | 2 +- audio/midi/midifile.cpp | 2 +- avsomr/ui/recognitionproccessdialog.h | 2 +- awl/aslider.cpp | 2 +- awl/pitchlabel.cpp | 7 +++- awl/poslabel.cpp | 12 +++++-- awl/utils.cpp | 2 +- framework/telemetry/CMakeLists.txt | 2 +- .../widgets/telemetrypermissiondialog.cpp | 1 + global/gui/miconengine.cpp | 2 +- importexport/bww/parser.cpp | 2 +- importexport/guitarpro/importgtp-gp6.cpp | 4 +++ importexport/guitarpro/importgtp.cpp | 5 +++ importexport/midiimport/importmidi_chord.cpp | 8 ++--- importexport/midiimport/importmidi_model.cpp | 2 +- importexport/musedata/musedata.cpp | 4 +++ importexport/musicxml/importmxmlpass2.cpp | 6 +++- importexport/musicxml/importxml.cpp | 4 +-- importexport/ove/ove.cpp | 10 +++++- inspectors/models/inspectorlistmodel.cpp | 1 + inspectors/utils/doubleinputvalidator.cpp | 4 +++ inspectors/view/ui/inspectorBase.cpp | 4 +++ inspectors/view/ui/inspector_ambitus.ui | 32 ------------------- inspectors/view/ui/inspector_fermata.ui | 32 ------------------- inspectors/view/ui/inspector_glissando.ui | 32 ------------------- inspectors/view/ui/inspector_hairpin.ui | 32 ------------------- inspectors/view/ui/inspector_trill.ui | 32 ------------------- libmscore/chordlist.cpp | 12 +++++++ libmscore/element.h | 2 +- libmscore/figuredbass.cpp | 4 +++ libmscore/harmony.cpp | 4 +++ libmscore/layout.cpp | 18 +++++------ libmscore/lyrics.cpp | 4 +++ libmscore/mscoreview.cpp | 2 +- libmscore/page.cpp | 13 ++++++-- libmscore/read114.cpp | 4 +++ libmscore/read206.cpp | 4 +++ libmscore/realizedharmony.cpp | 6 ++-- libmscore/realizedharmony.h | 2 +- libmscore/scorediff.cpp | 7 ++++ libmscore/scorefile.cpp | 2 +- libmscore/skyline.cpp | 2 +- libmscore/staff.cpp | 8 +++++ libmscore/textbase.cpp | 2 +- libmscore/textedit.cpp | 4 +-- libmscore/tuplet.cpp | 2 +- libmscore/undo.cpp | 4 +++ libmscore/utils.cpp | 2 +- libmscore/volta.cpp | 4 +++ libmscore/xmlwriter.cpp | 5 +++ mscore/abstractdialog.h | 2 +- mscore/chordview.cpp | 12 ++++++- mscore/cloud/loginmanager.cpp | 8 +++++ mscore/cloud/uploadscoredialog.cpp | 9 +++--- mscore/continuouspanel.cpp | 2 +- mscore/debugger/debugger.cpp | 10 ++++-- mscore/drumview.cpp | 12 ++++++- mscore/editdrumset.cpp | 2 +- mscore/editlyrics.cpp | 2 +- mscore/events.cpp | 4 +++ mscore/exampleview.cpp | 2 +- mscore/excerptsdialog.cpp | 2 +- mscore/file.cpp | 12 +++---- mscore/fotomode.cpp | 5 ++- mscore/help.cpp | 2 ++ mscore/importmidi_ui/importmidi_delegate.cpp | 4 +++ mscore/importmidi_ui/importmidi_panel.cpp | 6 +++- mscore/importmidi_ui/importmidi_view.cpp | 2 +- mscore/importmidi_ui/importmidi_view.h | 4 +-- mscore/instrwidget.cpp | 12 +++---- mscore/magbox.cpp | 2 +- mscore/mixer/mixer.cpp | 2 ++ mscore/mixer/mixer.h | 2 ++ mscore/mixer/mixer.ui | 2 +- mscore/musescore.cpp | 20 ++++++++---- mscore/navigator.cpp | 6 +++- mscore/palette.h | 2 +- mscore/pianoroll/pianoview.cpp | 20 +++++++++++- mscore/pianotools.cpp | 2 +- mscore/playpanel.ui | 2 +- mscore/plugin/api/qmlpluginapi.cpp | 24 +++++++++++++- mscore/plugin/api/util.h | 4 +++ mscore/plugin/qmledit.cpp | 6 +++- mscore/prefsdialog.cpp | 1 + mscore/qml/nativemenu.h | 4 +++ mscore/qml/palettes/Palette.qml | 2 +- mscore/qml/palettes/PaletteTree.qml | 2 +- mscore/qml/palettes/PalettesWidgetHeader.qml | 4 +-- mscore/scorePreview.cpp | 4 +++ mscore/scoreview.cpp | 8 ++--- mscore/script/script.cpp | 4 +++ mscore/script/testscript.cpp | 4 +++ mscore/shortcut.cpp | 4 +++ mscore/svggenerator.cpp | 4 +++ mscore/timeline.cpp | 2 +- thirdparty/google_analytics/CMakeLists.txt | 8 ++++- 96 files changed, 361 insertions(+), 263 deletions(-) diff --git a/audio/midi/fluid/sfont.cpp b/audio/midi/fluid/sfont.cpp index badb1073905f..8f1436fa73b5 100644 --- a/audio/midi/fluid/sfont.cpp +++ b/audio/midi/fluid/sfont.cpp @@ -824,7 +824,7 @@ bool SFont::load() } f.close(); /* sort preset list by bank, preset # */ - qSort(presets.begin(), presets.end(), preset_compare); + std::sort(presets.begin(), presets.end(), preset_compare); return true; } diff --git a/audio/midi/midifile.cpp b/audio/midi/midifile.cpp index 108879a24cf8..fae6b2f264a6 100644 --- a/audio/midi/midifile.cpp +++ b/audio/midi/midifile.cpp @@ -914,7 +914,7 @@ void MidiFile::separateChannel() if (nn <= 1) { continue; } - qSort(channel); + std::sort(channel.begin(), channel.end()); // -- split -- // insert additional tracks, assign to them found channels for (int ii = 1; ii < nn; ++ii) { diff --git a/avsomr/ui/recognitionproccessdialog.h b/avsomr/ui/recognitionproccessdialog.h index 3f5f6a523998..4ecf81f17994 100644 --- a/avsomr/ui/recognitionproccessdialog.h +++ b/avsomr/ui/recognitionproccessdialog.h @@ -53,7 +53,7 @@ class RecognitionProccessDialog : private QProgressDialog IAvsOmrRecognizer::Step _lastStep; QTimer _updater; - QTime _time; + QElapsedTimer _time; QPushButton* _closeBtn{ nullptr }; TaskbarProgress* _taskbarProgress{ nullptr }; }; diff --git a/awl/aslider.cpp b/awl/aslider.cpp index d6dcd3a9af7e..4affa47033d2 100644 --- a/awl/aslider.cpp +++ b/awl/aslider.cpp @@ -128,7 +128,7 @@ void AbstractSlider::wheelEvent(QWheelEvent* ev) if (ev->modifiers() & Qt::ShiftModifier) { div = 15; } - _value += (ev->delta() * lineStep()) / div; + _value += (ev->angleDelta().y() * lineStep()) / div; if (_value < _minValue) { _value = _minValue; } else if (_value > _maxValue) { diff --git a/awl/pitchlabel.cpp b/awl/pitchlabel.cpp index 530bf4e2c705..93cef715c709 100644 --- a/awl/pitchlabel.cpp +++ b/awl/pitchlabel.cpp @@ -57,8 +57,13 @@ QSize PitchLabel::sizeHint() const QFontMetrics fm(font()); int fw = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); int h = fm.height() + fw * 2; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) +// int w = 2 + fm.horizontalAdvance(QString("A#8")) + fw * 4; + int w = 2 + fm.horizontalAdvance(QString("-9999")) + fw * 4; // must display 14Bit controller values +#else // int w = 2 + fm.width(QString("A#8")) + fw * 4; int w = 2 + fm.width(QString("-9999")) + fw * 4; // must display 14Bit controller values +#endif return QSize(w, h).expandedTo(QApplication::globalStrut()); } @@ -76,7 +81,7 @@ void PitchLabel::setValue(int val) if (_pitchMode) { s = pitch2string(_value); } else { - s.sprintf("%d", _value); + s = QString::asprintf("%d", _value); } setText(s); } diff --git a/awl/poslabel.cpp b/awl/poslabel.cpp index 5be4392a4030..6ec9bc53cca3 100644 --- a/awl/poslabel.cpp +++ b/awl/poslabel.cpp @@ -68,11 +68,19 @@ QSize PosLabel::sizeHint() const int fw = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); int h = fm.height() + fw * 2; int w; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) + if (_smpte) { + w = 2 + fm.horizontalAdvance('9') * 9 + fm.horizontalAdvance(':') * 3 + fw * 4; + } else { + w = 2 + fm.horizontalAdvance('9') * 9 + fm.horizontalAdvance('.') * 2 + fw * 4; + } +#else if (_smpte) { w = 2 + fm.width('9') * 9 + fm.width(':') * 3 + fw * 4; } else { w = 2 + fm.width('9') * 9 + fm.width('.') * 2 + fw * 4; } +#endif return QSize(w, h).expandedTo(QApplication::globalStrut()); } @@ -89,11 +97,11 @@ void PosLabel::updateValue() if (_smpte) { int min, sec, frame, subframe; pos.msf(&min, &sec, &frame, &subframe); - s.sprintf("%03d:%02d:%02d:%02d", min, sec, frame, subframe); + s = QString::asprintf("%03d:%02d:%02d:%02d", min, sec, frame, subframe); } else { int measure, beat, tick; pos.mbt(&measure, &beat, &tick); - s.sprintf("%04d.%02d.%03u", measure + 1, beat + 1, tick); + s = QString::asprintf("%04d.%02d.%03u", measure + 1, beat + 1, tick); } setText(s); } diff --git a/awl/utils.cpp b/awl/utils.cpp index 060f323cc639..da51783f5300 100644 --- a/awl/utils.cpp +++ b/awl/utils.cpp @@ -60,7 +60,7 @@ QString pitch2string(int v) } int octave = (v / 12) - 1; QString o; - o.sprintf("%d", octave); + o = QString::asprintf("%d", octave); int i = v % 12; return qApp->translate("awlutils", octave < 0 ? valu[i] : vall[i]) + o; } diff --git a/framework/telemetry/CMakeLists.txt b/framework/telemetry/CMakeLists.txt index 4b2e8a577b7a..da7d4ac26ce7 100644 --- a/framework/telemetry/CMakeLists.txt +++ b/framework/telemetry/CMakeLists.txt @@ -43,6 +43,6 @@ target_link_libraries(${MODULE} global google_analytics) if (MSVC) set_target_properties (${MODULE} PROPERTIES - COMPILE_FLAGS "/wd4127" + COMPILE_FLAGS "/wd4127 /wd26439 /wd5999" # ToDo for Qt 5.15: "... /wd26444 /wd26451 /wd26495 /wd26498 /wd26812" ?? ) endif (MSVC) diff --git a/framework/telemetry/widgets/telemetrypermissiondialog.cpp b/framework/telemetry/widgets/telemetrypermissiondialog.cpp index 203fe221c67f..4893c3da6604 100644 --- a/framework/telemetry/widgets/telemetrypermissiondialog.cpp +++ b/framework/telemetry/widgets/telemetrypermissiondialog.cpp @@ -35,6 +35,7 @@ TelemetryPermissionDialog::TelemetryPermissionDialog(QQmlEngine* engine) setFlags(Qt::Dialog | Qt::CustomizeWindowHint); ///@note Hidding a native frame with 'X' close button + // ToDo for Qt 5.15: QDesktopWidget::availableGeometry() vs. QGuiApplication::screens() ?? QRect desktopRect = QApplication::desktop()->availableGeometry(); QPoint center = desktopRect.center(); diff --git a/global/gui/miconengine.cpp b/global/gui/miconengine.cpp index 9f40cd6baa4a..d7f6adccda5b 100644 --- a/global/gui/miconengine.cpp +++ b/global/gui/miconengine.cpp @@ -221,7 +221,7 @@ QPixmap MIconEngine::pixmap(const QSize& size, QIcon::Mode mode, QIcon::State st QString pmckey(d->pmcKey(size, mode, state)); pmckey.prepend("Ms"); - if (QPixmapCache::find(pmckey, pm)) { + if (QPixmapCache::find(pmckey, &pm)) { return pm; } diff --git a/importexport/bww/parser.cpp b/importexport/bww/parser.cpp index 92079f50fe6a..bec8080c3625 100644 --- a/importexport/bww/parser.cpp +++ b/importexport/bww/parser.cpp @@ -215,7 +215,7 @@ static void determineTimesig(QList const& measures, int QMap::const_iterator i = map.constBegin(); while (i != map.constEnd()) { - qDebug() << "measureDurations:" << i.key() << i.value() << endl; + qDebug() << "measureDurations:" << i.key() << i.value(); if (i.value() > max) { commonDur = i.key(); max = i.value(); diff --git a/importexport/guitarpro/importgtp-gp6.cpp b/importexport/guitarpro/importgtp-gp6.cpp index 8779a7a06ac4..a2262abe271b 100644 --- a/importexport/guitarpro/importgtp-gp6.cpp +++ b/importexport/guitarpro/importgtp-gp6.cpp @@ -2378,7 +2378,11 @@ void GuitarPro6::readMasterBars(GPPartInfo* partInfo) currentFermata = currentFermata.nextSibling(); // get the fermata information and construct a gpFermata from them +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList fermataComponents = fermata.split("/", Qt::SkipEmptyParts); +#else QStringList fermataComponents = fermata.split("/", QString::SkipEmptyParts); +#endif GPFermata gpFermata; gpFermata.index = fermataComponents.at(0).toInt(); gpFermata.timeDivision = fermataComponents.at(1).toInt(); diff --git a/importexport/guitarpro/importgtp.cpp b/importexport/guitarpro/importgtp.cpp index ba9040adc426..02c4f35b4a7f 100644 --- a/importexport/guitarpro/importgtp.cpp +++ b/importexport/guitarpro/importgtp.cpp @@ -876,8 +876,13 @@ void GuitarPro::readLyrics() QString lyrics = readWordPascalString(); lyrics.replace(QRegExp("\n"), " "); lyrics.replace(QRegExp("\r"), " "); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + auto sl = lyrics.split(" ", Qt::KeepEmptyParts); + //gpLyrics.lyrics = lyrics.split(" ", Qt::KeepEmptyParts); +#else auto sl = lyrics.split(" ", QString::KeepEmptyParts); //gpLyrics.lyrics = lyrics.split(" ", QString::KeepEmptyParts); +#endif for (auto& str : sl) { /*while (str[0] == '-') { diff --git a/importexport/midiimport/importmidi_chord.cpp b/importexport/midiimport/importmidi_chord.cpp index 7da12dd310d0..1bf47d2a5c8b 100644 --- a/importexport/midiimport/importmidi_chord.cpp +++ b/importexport/midiimport/importmidi_chord.cpp @@ -108,9 +108,9 @@ ReducedFraction maxNoteLen(const std::pair& ch void removeOverlappingNotes(QList& notes) { - QLinkedList tempNotes; + std::list tempNotes; for (const auto& note: notes) { - tempNotes.append(note); + tempNotes.push_back(note); } for (auto noteIt1 = tempNotes.begin(); noteIt1 != tempNotes.end(); ++noteIt1) { @@ -430,7 +430,7 @@ void sortNotesByPitch(std::multimap& chords) for (auto& chordEvent: chords) { // in each chord sort notes by pitches auto& notes = chordEvent.second.notes; - qSort(notes.begin(), notes.end(), pitchSort); + std::sort(notes.begin(), notes.end(), pitchSort); } } @@ -446,7 +446,7 @@ void sortNotesByLength(std::multimap& chords) for (auto& chordEvent: chords) { // in each chord sort notes by lengths auto& notes = chordEvent.second.notes; - qSort(notes.begin(), notes.end(), lenSort); + std::sort(notes.begin(), notes.end(), lenSort); } } diff --git a/importexport/midiimport/importmidi_model.cpp b/importexport/midiimport/importmidi_model.cpp index 0d066f80daf3..7cb27e1324a0 100644 --- a/importexport/midiimport/importmidi_model.cpp +++ b/importexport/midiimport/importmidi_model.cpp @@ -1124,7 +1124,7 @@ Qt::ItemFlags TracksModel::editableFlags(int row, int col) const Qt::ItemFlags TracksModel::flags(const QModelIndex& index) const { if (!index.isValid()) { - return 0; + return {}; } Qt::ItemFlags flags = Qt::ItemFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); diff --git a/importexport/musedata/musedata.cpp b/importexport/musedata/musedata.cpp index 20c486884e1f..d0c73ef6b1aa 100644 --- a/importexport/musedata/musedata.cpp +++ b/importexport/musedata/musedata.cpp @@ -47,7 +47,11 @@ namespace Ms { void MuseData::musicalAttribute(QString s, Part* part) { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList al = s.mid(3).split(" ", Qt::SkipEmptyParts); +#else QStringList al = s.mid(3).split(" ", QString::SkipEmptyParts); +#endif foreach (QString item, al) { if (item.startsWith("K:")) { int key = item.mid(2).toInt(); diff --git a/importexport/musicxml/importmxmlpass2.cpp b/importexport/musicxml/importmxmlpass2.cpp index cf0884388238..dd860a2502df 100644 --- a/importexport/musicxml/importmxmlpass2.cpp +++ b/importexport/musicxml/importmxmlpass2.cpp @@ -932,7 +932,7 @@ static void handleTupletStop(Tuplet*& tuplet, const int normalNotes) //--------------------------------------------------------- static void setElementPropertyFlags(ScoreElement* element, const Pid propertyId, - const QString value1, const QString value2 = QString::null) + const QString value1, const QString value2 = QString()) { if (value1.isEmpty()) { // Set as an implicit value element->setPropertyFlags(propertyId, PropertyFlags::STYLED); @@ -3389,7 +3389,11 @@ void MusicXMLParserPass2::doEnding(const QString& partId, Measure* measure, } else if (type.isEmpty()) { _logger->logError("empty ending type", &_e); } else { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList sl = number.split(",", Qt::SkipEmptyParts); +#else QStringList sl = number.split(",", QString::SkipEmptyParts); +#endif QList iEndingNumbers; bool unsupported = false; foreach (const QString& s, sl) { diff --git a/importexport/musicxml/importxml.cpp b/importexport/musicxml/importxml.cpp index c637f4f3ece5..b1812c9b9ddc 100644 --- a/importexport/musicxml/importxml.cpp +++ b/importexport/musicxml/importxml.cpp @@ -183,8 +183,8 @@ static bool extractRootfile(QFile* qf, QByteArray& data) static Score::FileError doValidate(const QString& name, QIODevice* dev) { - QTime t; - t.start(); + //QElapsedTimer t; + //t.start(); // initialize the schema ValidatorMessageHandler messageHandler; diff --git a/importexport/ove/ove.cpp b/importexport/ove/ove.cpp index 7bb41da00e27..2952af74efcb 100644 --- a/importexport/ove/ove.cpp +++ b/importexport/ove/ove.cpp @@ -3589,7 +3589,11 @@ QString NumericEnding::getText() const QList NumericEnding::getNumbers() const { int i; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList strs = text_.split(",", Qt::SkipEmptyParts); +#else QStringList strs = text_.split(",", QString::SkipEmptyParts); +#endif QList endings; for (i = 0; i < strs.size(); ++i) { @@ -9487,7 +9491,11 @@ void LyricChunkParse::processLyricInfo(const LyricInfo& info) bool changeMeasure = true; MeasureData* measureData = 0; int trackMeasureCount = ove_->getTrackBarCount(); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList words = info.lyric_.split(" ", Qt::SkipEmptyParts); +#else QStringList words = info.lyric_.split(" ", QString::SkipEmptyParts); +#endif while (index < words.size() && measureId + 1 < trackMeasureCount) { if (changeMeasure) { @@ -9881,7 +9889,7 @@ void OveOrganizer::organizeContainers(int /*part*/, int /*track*/, } // shift voices - qSort(voices.begin(), voices.end()); + std::sort(voices.begin(), voices.end()); for (i = 0; i < voices.size(); ++i) { int voice = voices[i]; diff --git a/inspectors/models/inspectorlistmodel.cpp b/inspectors/models/inspectorlistmodel.cpp index d9edbacac46a..05efc3ef8481 100644 --- a/inspectors/models/inspectorlistmodel.cpp +++ b/inspectors/models/inspectorlistmodel.cpp @@ -119,6 +119,7 @@ void InspectorListModel::removeUnusedModels(const QSet& newElem continue; } + // ToDo for Qt 5.15: QListMs::ElementType::toSet vs. QSet(list.begin(), list.end()) QSet supportedElementTypes = AbstractInspectorModel::supportedElementTypesBySectionType(model->sectionType()).toSet(); supportedElementTypes.intersect(newElementTypeSet); diff --git a/inspectors/utils/doubleinputvalidator.cpp b/inspectors/utils/doubleinputvalidator.cpp index 28af93f20e96..452ea409a9ce 100644 --- a/inspectors/utils/doubleinputvalidator.cpp +++ b/inspectors/utils/doubleinputvalidator.cpp @@ -22,7 +22,11 @@ void DoubleInputValidator::fixup(QString& string) const if (string.endsWith(".")) string.append(zeros(m_decimal)); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList strList = string.split(".", Qt::SkipEmptyParts); +#else QStringList strList = string.split(".", QString::SkipEmptyParts); +#endif QString intPart = strList.at(0); QString floatPart = strList.at(1); diff --git a/inspectors/view/ui/inspectorBase.cpp b/inspectors/view/ui/inspectorBase.cpp index e3fe29eebb03..dd49ba269259 100644 --- a/inspectors/view/ui/inspectorBase.cpp +++ b/inspectors/view/ui/inspectorBase.cpp @@ -124,7 +124,11 @@ QVariant InspectorBase::getValue(const InspectorItem& ii) const v = QVariant::fromValue(Direction(v.toInt())); break; case P_TYPE::INT_LIST: { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList sl = v.toString().split(",", Qt::SkipEmptyParts); +#else QStringList sl = v.toString().split(",", QString::SkipEmptyParts); +#endif QList il; for (const QString& l : sl) { int i = l.simplified().toInt(); diff --git a/inspectors/view/ui/inspector_ambitus.ui b/inspectors/view/ui/inspector_ambitus.ui index 8c88a260f220..23cef654c67b 100644 --- a/inspectors/view/ui/inspector_ambitus.ui +++ b/inspectors/view/ui/inspector_ambitus.ui @@ -878,22 +878,6 @@ - - hasLine - toggled(bool) - label_10 - setEnabled(bool) - - - 44 - 137 - - - 50 - 149 - - - hasLine toggled(bool) @@ -910,21 +894,5 @@ - - hasLine - toggled(bool) - resetLineWidth - setEnabled(bool) - - - 163 - 134 - - - 242 - 152 - - - diff --git a/inspectors/view/ui/inspector_fermata.ui b/inspectors/view/ui/inspector_fermata.ui index e72174a20d57..da7989054d5b 100644 --- a/inspectors/view/ui/inspector_fermata.ui +++ b/inspectors/view/ui/inspector_fermata.ui @@ -208,22 +208,6 @@ - - playArticulation - toggled(bool) - label_2 - setEnabled(bool) - - - 40 - 91 - - - 44 - 108 - - - playArticulation toggled(bool) @@ -240,21 +224,5 @@ - - playArticulation - toggled(bool) - resetTimeStretch - setEnabled(bool) - - - 157 - 89 - - - 178 - 106 - - - diff --git a/inspectors/view/ui/inspector_glissando.ui b/inspectors/view/ui/inspector_glissando.ui index 09a51e27ef1f..e7f7feb4eb8e 100644 --- a/inspectors/view/ui/inspector_glissando.ui +++ b/inspectors/view/ui/inspector_glissando.ui @@ -417,22 +417,6 @@ - - playGlissando - toggled(bool) - label_2 - setEnabled(bool) - - - 33 - 268 - - - 35 - 292 - - - playGlissando toggled(bool) @@ -449,22 +433,6 @@ - - playGlissando - toggled(bool) - resetGlissandoStyle - setEnabled(bool) - - - 234 - 267 - - - 352 - 296 - - - showText toggled(bool) diff --git a/inspectors/view/ui/inspector_hairpin.ui b/inspectors/view/ui/inspector_hairpin.ui index 2ba64e6fe3aa..c1e7dce6c46e 100644 --- a/inspectors/view/ui/inspector_hairpin.ui +++ b/inspectors/view/ui/inspector_hairpin.ui @@ -508,22 +508,6 @@ - - singleNoteDynamics - toggled(bool) - label_7 - setEnabled(bool) - - - 83 - 325 - - - 83 - 346 - - - singleNoteDynamics toggled(bool) @@ -540,21 +524,5 @@ - - singleNoteDynamics - toggled(bool) - resetVeloChangeMethod - setEnabled(bool) - - - 335 - 321 - - - 377 - 358 - - - diff --git a/inspectors/view/ui/inspector_trill.ui b/inspectors/view/ui/inspector_trill.ui index 8b97fad75441..1b2cb673913c 100644 --- a/inspectors/view/ui/inspector_trill.ui +++ b/inspectors/view/ui/inspector_trill.ui @@ -275,22 +275,6 @@ - - playArticulation - toggled(bool) - label_3 - setEnabled(bool) - - - 42 - 147 - - - 49 - 164 - - - playArticulation toggled(bool) @@ -307,21 +291,5 @@ - - playArticulation - toggled(bool) - resetOrnamentStyle - setEnabled(bool) - - - 224 - 138 - - - 333 - 159 - - - diff --git a/libmscore/chordlist.cpp b/libmscore/chordlist.cpp index 7112be300128..a17bfc1105ca 100644 --- a/libmscore/chordlist.cpp +++ b/libmscore/chordlist.cpp @@ -29,7 +29,11 @@ HChord::HChord(const QString& str) { "C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab", "A", "Bb", "B" } }; keys = 0; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList sl = str.split(" ", Qt::SkipEmptyParts); +#else QStringList sl = str.split(" ", QString::SkipEmptyParts); +#endif for (const QString& s : sl) { for (int i = 0; i < 12; ++i) { if (s == scaleNames[0][i] || s == scaleNames[1][i]) { @@ -316,10 +320,18 @@ void HChord::add(const QList& degreeList) static void readRenderList(QString val, QList& renderList) { renderList.clear(); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList sl = val.split(" ", Qt::SkipEmptyParts); +#else QStringList sl = val.split(" ", QString::SkipEmptyParts); +#endif for (const QString& s : sl) { if (s.startsWith("m:")) { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList ssl = s.split(":", Qt::SkipEmptyParts); +#else QStringList ssl = s.split(":", QString::SkipEmptyParts); +#endif if (ssl.size() == 3) { // m:x:y RenderAction a; diff --git a/libmscore/element.h b/libmscore/element.h index e7c106654d70..8f960cdda592 100644 --- a/libmscore/element.h +++ b/libmscore/element.h @@ -131,7 +131,7 @@ class EditData bool vRaster { false }; int key { 0 }; - Qt::KeyboardModifiers modifiers { 0 }; + Qt::KeyboardModifiers modifiers { /*0*/ }; // '0' initialized via default constructor, doing it here too results in compiler warning with Qt 5.15 QString s; Qt::MouseButtons buttons { Qt::NoButton }; diff --git a/libmscore/figuredbass.cpp b/libmscore/figuredbass.cpp index ef25908ef87a..cfceecf4e13a 100644 --- a/libmscore/figuredbass.cpp +++ b/libmscore/figuredbass.cpp @@ -1389,7 +1389,11 @@ void FiguredBass::endEdit(EditData& ed) } // split text into lines and create an item for each line +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList list = txt.split("\n", Qt::SkipEmptyParts); +#else QStringList list = txt.split('\n', QString::SkipEmptyParts); +#endif qDeleteAll(items); items.clear(); QString normalizedText = QString(); diff --git a/libmscore/harmony.cpp b/libmscore/harmony.cpp index 80d18855b2dd..80d8c64e24cb 100644 --- a/libmscore/harmony.cpp +++ b/libmscore/harmony.cpp @@ -2094,7 +2094,11 @@ QString Harmony::generateScreenReaderInfo() const aux = aux.replace("#", QObject::tr("♯")).replace("<", ""); QString extension = ""; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + for (QString s : aux.split(">", Qt::SkipEmptyParts)) { +#else for (QString s : aux.split(">", QString::SkipEmptyParts)) { +#endif if (!s.contains("blues")) { s.replace("b", QObject::tr("♭")); } diff --git a/libmscore/layout.cpp b/libmscore/layout.cpp index 4b103369b0b2..ec93e056e401 100644 --- a/libmscore/layout.cpp +++ b/libmscore/layout.cpp @@ -229,8 +229,8 @@ void Score::layoutChords1(Segment* segment, int staffIdx) // layout upstem noteheads if (upVoices > 1) { - qSort(upStemNotes.begin(), upStemNotes.end(), - [](Note* n1, const Note* n2) ->bool { return n1->line() > n2->line(); }); + std::sort(upStemNotes.begin(), upStemNotes.end(), + [](Note* n1, const Note* n2) ->bool { return n1->line() > n2->line(); }); } if (upVoices) { qreal hw = layoutChords2(upStemNotes, true); @@ -239,8 +239,8 @@ void Score::layoutChords1(Segment* segment, int staffIdx) // layout downstem noteheads if (downVoices > 1) { - qSort(downStemNotes.begin(), downStemNotes.end(), - [](Note* n1, const Note* n2) ->bool { return n1->line() > n2->line(); }); + std::sort(downStemNotes.begin(), downStemNotes.end(), + [](Note* n1, const Note* n2) ->bool { return n1->line() > n2->line(); }); } if (downVoices) { qreal hw = layoutChords2(downStemNotes, false); @@ -355,8 +355,8 @@ void Score::layoutChords1(Segment* segment, int staffIdx) break; } } - qSort(overlapNotes.begin(), overlapNotes.end(), - [](Note* n1, const Note* n2) ->bool { return n1->line() > n2->line(); }); + std::sort(overlapNotes.begin(), overlapNotes.end(), + [](Note* n1, const Note* n2) ->bool { return n1->line() > n2->line(); }); // determine nature of overlap bool shareHeads = true; // can all overlapping notes share heads? @@ -587,8 +587,8 @@ void Score::layoutChords1(Segment* segment, int staffIdx) notes.insert(notes.end(), downStemNotes.begin(), downStemNotes.end()); } if (upVoices + downVoices > 1) { - qSort(notes.begin(), notes.end(), - [](Note* n1, const Note* n2) ->bool { return n1->line() > n2->line(); }); + std::sort(notes.begin(), notes.end(), + [](Note* n1, const Note* n2) ->bool { return n1->line() > n2->line(); }); } layoutChords3(notes, staff, segment); } @@ -1131,7 +1131,7 @@ void Score::layoutChords3(std::vector& notes, const Staff* staff, Segment } nAcc = umi.size(); if (nAcc > 1) { - qSort(umi); + std::sort(umi.begin(), umi.end()); } // lay out columns diff --git a/libmscore/lyrics.cpp b/libmscore/lyrics.cpp index e768a1985e2e..7b4b82eda41c 100644 --- a/libmscore/lyrics.cpp +++ b/libmscore/lyrics.cpp @@ -386,7 +386,11 @@ void Lyrics::paste(EditData& ed) #endif QString txt = QApplication::clipboard()->text(mode); QString regex = QString("[^\\S") + QChar(0xa0) + QChar(0x202F) + "]+"; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList sl = txt.split(QRegExp(regex), Qt::SkipEmptyParts); +#else QStringList sl = txt.split(QRegExp(regex), QString::SkipEmptyParts); +#endif if (sl.empty()) { return; } diff --git a/libmscore/mscoreview.cpp b/libmscore/mscoreview.cpp index 729393cdbd73..91d874a9345c 100644 --- a/libmscore/mscoreview.cpp +++ b/libmscore/mscoreview.cpp @@ -79,7 +79,7 @@ const QList MuseScoreView::elementsAt(const QPointF& p) Page* page = point2page(p); if (page) { el = page->items(p - page->pos()); - qSort(el.begin(), el.end(), elementLower); + std::sort(el.begin(), el.end(), elementLower); } return el; } diff --git a/libmscore/page.cpp b/libmscore/page.cpp index 3247728cb39f..6ab17d51b06f 100644 --- a/libmscore/page.cpp +++ b/libmscore/page.cpp @@ -343,21 +343,30 @@ QString Page::replaceTextMacros(const QString& s) const d += masterScore()->fileInfo()->absoluteFilePath().toHtmlEscaped(); break; case 'd': + // ToDo for Qt 5.15: Qt::DefaultLocaleShortDate vs. QLocale ?? d += QDate::currentDate().toString(Qt::DefaultLocaleShortDate); break; case 'D': { QString creationDate = score()->metaTag("creationDate"); if (creationDate.isNull()) - d += masterScore()->fileInfo()->created().date().toString(Qt::DefaultLocaleShortDate); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) + // ToDo for Qt 5.15: Qt::DefaultLocaleShortDate vs. QLocale ?? + d += masterScore()->fileInfo()->birthTime().date().toString(Qt::DefaultLocaleShortDate); +#else + d += masterScore()->fileInfo()->created().date().toString(Qt::DefaultLocaleShortDate); +#endif else - d += QDate::fromString(creationDate, Qt::ISODate).toString(Qt::DefaultLocaleShortDate); + // ToDo for Qt 5.15: Qt::DefaultLocaleShortDate vs. QLocale ?? + d += QDate::fromString(creationDate, Qt::ISODate).toString(Qt::DefaultLocaleShortDate); } break; case 'm': if ( score()->dirty() ) + // ToDo for Qt 5.15: Qt::DefaultLocaleShortDate vs. QLocale ?? d += QTime::currentTime().toString(Qt::DefaultLocaleShortDate); else + // ToDo for Qt 5.15: Qt::DefaultLocaleShortDate vs. QLocale ?? d += masterScore()->fileInfo()->lastModified().time().toString(Qt::DefaultLocaleShortDate); break; case 'M': diff --git a/libmscore/read114.cpp b/libmscore/read114.cpp index fdcbe18b5678..0e3cfca76317 100644 --- a/libmscore/read114.cpp +++ b/libmscore/read114.cpp @@ -1302,7 +1302,11 @@ static void readVolta114(XmlReader& e, Volta* volta) const QStringRef& tag(e.name()); if (tag == "endings") { QString s = e.readElementText(); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList sl = s.split(",", Qt::SkipEmptyParts); +#else QStringList sl = s.split(",", QString::SkipEmptyParts); +#endif volta->endings().clear(); for (const QString& l : sl) { int i = l.simplified().toInt(); diff --git a/libmscore/read206.cpp b/libmscore/read206.cpp index 39e990891a8a..8b3894d8415a 100644 --- a/libmscore/read206.cpp +++ b/libmscore/read206.cpp @@ -2434,7 +2434,11 @@ static void readVolta206(XmlReader& e, Volta* volta) const QStringRef& tag(e.name()); if (tag == "endings") { QString s = e.readElementText(); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList sl = s.split(",", Qt::SkipEmptyParts); +#else QStringList sl = s.split(",", QString::SkipEmptyParts); +#endif volta->endings().clear(); for (const QString& l : sl) { int i = l.simplified().toInt(); diff --git a/libmscore/realizedharmony.cpp b/libmscore/realizedharmony.cpp index 64d885e9aa79..fbf8142e81c8 100644 --- a/libmscore/realizedharmony.cpp +++ b/libmscore/realizedharmony.cpp @@ -532,7 +532,7 @@ RealizedHarmony::PitchMap RealizedHarmony::normalizeNoteMap(const PitchMap& inte //redo insertions if we must have a specific number of notes with insertMulti if (enforceMaxAsGoal) { while (ret.size() < max) { - ret.insertMulti(rootPitch, rootTpc); //duplicate root + ret.insert(rootPitch, rootTpc); //duplicate root int size = max - ret.size(); itr = PitchMapIterator(intervals); //reset iterator @@ -541,11 +541,11 @@ RealizedHarmony::PitchMap RealizedHarmony::normalizeNoteMap(const PitchMap& inte break; } itr.next(); - ret.insertMulti((itr.key() % 128 + rootPitch) % PITCH_DELTA_OCTAVE, itr.value()); + ret.insert((itr.key() % 128 + rootPitch) % PITCH_DELTA_OCTAVE, itr.value()); } } } else if (ret.size() < max) { //insert another root if we have room in general - ret.insertMulti(rootPitch, rootTpc); + ret.insert(rootPitch, rootTpc); } return ret; } diff --git a/libmscore/realizedharmony.h b/libmscore/realizedharmony.h index 1273f52c679e..52725269cc8b 100644 --- a/libmscore/realizedharmony.h +++ b/libmscore/realizedharmony.h @@ -57,7 +57,7 @@ enum class HDuration : signed char { class RealizedHarmony { public: - using PitchMap = QMap; //map from pitch to tpc + using PitchMap = QMultiMap; //map from pitch to tpc using PitchMapIterator = QMapIterator; private: diff --git a/libmscore/scorediff.cpp b/libmscore/scorediff.cpp index d74eaa23db50..ab69129b47c2 100644 --- a/libmscore/scorediff.cpp +++ b/libmscore/scorediff.cpp @@ -127,10 +127,17 @@ std::vector MscxModeDiff::lineModeDiff(const QString& s1, const QStrin typedef std::pair sesElem; typedef std::vector sesElemVec; +# if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + const QVector linesVec1 = s1.splitRef('\n'); + std::vector lines1(linesVec1.begin(), linesVec1.end()); + const QVector linesVec2 = s2.splitRef('\n'); + std::vector lines2(linesVec2.begin(), linesVec2.end()); +#else // QVector does not contain range constructor used inside dtl // so we have to convert to std::vector. std::vector lines1 = s1.splitRef('\n').toStdVector(); std::vector lines2 = s2.splitRef('\n').toStdVector(); +#endif dtl::Diff > diff(lines1, lines2); diff.compose(); diff --git a/libmscore/scorefile.cpp b/libmscore/scorefile.cpp index 95ed981732ad..cf036c3471a4 100644 --- a/libmscore/scorefile.cpp +++ b/libmscore/scorefile.cpp @@ -1043,7 +1043,7 @@ void Score::print(QPainter* painter, int pageNo) QRectF fr = page->abbox(); QList ell = page->items(fr); - qStableSort(ell.begin(), ell.end(), elementLessThan); + std::stable_sort(ell.begin(), ell.end(), elementLessThan); for (const Element* e : ell) { if (!e->visible()) { continue; diff --git a/libmscore/skyline.cpp b/libmscore/skyline.cpp index 0d96abe62023..3b04a0dd29b5 100644 --- a/libmscore/skyline.cpp +++ b/libmscore/skyline.cpp @@ -255,7 +255,7 @@ void Skyline::paint(QPainter& p) const p.save(); p.setBrush(Qt::NoBrush); - QMatrix matrix = p.matrix(); + QMatrix matrix = p.worldTransform().toAffine(); p.setPen(QPen(QBrush(Qt::darkYellow), 2.0 / matrix.m11())); _north.paint(p); p.setPen(QPen(QBrush(Qt::green), 2.0 / matrix.m11())); diff --git a/libmscore/staff.cpp b/libmscore/staff.cpp index 326cb8041b90..9ca7d7f77df1 100644 --- a/libmscore/staff.cpp +++ b/libmscore/staff.cpp @@ -157,7 +157,11 @@ void Staff::swapBracket(int oldIdx, int newIdx) fillBrackets(idx); _brackets[oldIdx]->setColumn(newIdx); _brackets[newIdx]->setColumn(oldIdx); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + _brackets.swapItemsAt(oldIdx, newIdx); +#else _brackets.swap(oldIdx, newIdx); +#endif cleanBrackets(); } @@ -175,7 +179,11 @@ void Staff::changeBracketColumn(int oldColumn, int newColumn) int newIdx = i + step; _brackets[oldIdx]->setColumn(newIdx); _brackets[newIdx]->setColumn(oldIdx); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + _brackets.swapItemsAt(oldIdx, newIdx); +#else _brackets.swap(oldIdx, newIdx); +#endif } cleanBrackets(); } diff --git a/libmscore/textbase.cpp b/libmscore/textbase.cpp index 224219d5ffde..fd3fe136f60b 100644 --- a/libmscore/textbase.cpp +++ b/libmscore/textbase.cpp @@ -2986,7 +2986,7 @@ void TextBase::drawEditMode(QPainter* p, EditData& ed) p->drawRect(_cursor->cursorRect()); } - QMatrix matrix = p->matrix(); + QMatrix matrix = p->worldTransform().toAffine(); p->translate(-pos); p->setPen(QPen(QBrush(Qt::lightGray), 4.0 / matrix.m11())); // 4 pixel pen size p->setBrush(Qt::NoBrush); diff --git a/libmscore/textedit.cpp b/libmscore/textedit.cpp index a1519a86e03d..7eaec77d92db 100644 --- a/libmscore/textedit.cpp +++ b/libmscore/textedit.cpp @@ -392,7 +392,7 @@ bool TextBase::edit(EditData& ed) case Qt::Key_Tab: s = " "; - ed.modifiers = 0; + ed.modifiers = {}; break; case Qt::Key_Space: @@ -406,7 +406,7 @@ bool TextBase::edit(EditData& ed) } s = " "; } - ed.modifiers = 0; + ed.modifiers = {}; break; case Qt::Key_Minus: diff --git a/libmscore/tuplet.cpp b/libmscore/tuplet.cpp index 90489dcf2562..bd41bb028fca 100644 --- a/libmscore/tuplet.cpp +++ b/libmscore/tuplet.cpp @@ -1040,7 +1040,7 @@ static bool tickGreater(const DurationElement* a, const DurationElement* b) void Tuplet::sortElements() { - qSort(_elements.begin(), _elements.end(), tickGreater); + std::sort(_elements.begin(), _elements.end(), tickGreater); } //--------------------------------------------------------- diff --git a/libmscore/undo.cpp b/libmscore/undo.cpp index 3ce47e602da6..07e995c7509b 100644 --- a/libmscore/undo.cpp +++ b/libmscore/undo.cpp @@ -2055,7 +2055,11 @@ void RemoveExcerpt::redo(EditData*) void SwapExcerpt::flip(EditData*) { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + score->excerpts().swapItemsAt(pos1, pos2); +#else score->excerpts().swap(pos1, pos2); +#endif score->setExcerptsChanged(true); } diff --git a/libmscore/utils.cpp b/libmscore/utils.cpp index 0a830d5c2708..61545cc5bc1e 100644 --- a/libmscore/utils.cpp +++ b/libmscore/utils.cpp @@ -512,7 +512,7 @@ QString pitch2string(int v) } int octave = (v / 12) - 1; QString o; - o.sprintf("%d", octave); + o = QString::asprintf("%d", octave); int i = v % 12; return qApp->translate("utils", octave < 0 ? valu[i] : vall[i]) + o; } diff --git a/libmscore/volta.cpp b/libmscore/volta.cpp index 9da7e3f0da85..6d456c389f7c 100644 --- a/libmscore/volta.cpp +++ b/libmscore/volta.cpp @@ -134,7 +134,11 @@ void Volta::read(XmlReader& e) const QStringRef& tag(e.name()); if (tag == "endings") { QString s = e.readElementText(); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList sl = s.split(",", Qt::SkipEmptyParts); +#else QStringList sl = s.split(",", QString::SkipEmptyParts); +#endif _endings.clear(); for (const QString& l : sl) { int i = l.simplified().toInt(); diff --git a/libmscore/xmlwriter.cpp b/libmscore/xmlwriter.cpp index 2014fe17d7b0..f2a22d240e17 100644 --- a/libmscore/xmlwriter.cpp +++ b/libmscore/xmlwriter.cpp @@ -14,6 +14,11 @@ #include "property.h" #include "scoreElement.h" +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) //??? +#define endl Qt::endl +#define dec Qt::dec +#endif + namespace Ms { //--------------------------------------------------------- // Xml diff --git a/mscore/abstractdialog.h b/mscore/abstractdialog.h index 5e0840e07814..9b221a069094 100644 --- a/mscore/abstractdialog.h +++ b/mscore/abstractdialog.h @@ -30,7 +30,7 @@ class AbstractDialog : public QDialog Q_OBJECT public: - AbstractDialog(QWidget* parent = 0, Qt::WindowFlags f = 0); + AbstractDialog(QWidget* parent = 0, Qt::WindowFlags f = {}); virtual ~AbstractDialog(); protected: diff --git a/mscore/chordview.cpp b/mscore/chordview.cpp index e6e003af365b..eae43904d9f7 100644 --- a/mscore/chordview.cpp +++ b/mscore/chordview.cpp @@ -345,7 +345,7 @@ void ChordView::moveLocator() void ChordView::wheelEvent(QWheelEvent* event) { - int step = event->delta() / 120; + int step = event->angleDelta().y() / 120; double xmag = transform().m11(); double ymag = transform().m22(); @@ -415,7 +415,17 @@ void ChordView::wheelEvent(QWheelEvent* event) emit xposChanged(xpos); } } else if (event->modifiers() == Qt::ShiftModifier) { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) +# if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 1)) //??? + QWheelEvent we(event->position(), event->globalPosition(), event->pixelDelta(), event->angleDelta(), + event->buttons(), event->modifiers(), event->phase(), event->inverted(), event->source()); +# else + QWheelEvent we(event->pos(), event->globalPos(), event->pixelDelta(), event->angleDelta(), event->buttons(), + event->modifiers(), event->phase(), event->inverted(), event->source()); +# endif +#else QWheelEvent we(event->pos(), event->delta(), event->buttons(), 0, Qt::Horizontal); +#endif QGraphicsView::wheelEvent(&we); } else if (event->modifiers() == 0) { QGraphicsView::wheelEvent(event); diff --git a/mscore/cloud/loginmanager.cpp b/mscore/cloud/loginmanager.cpp index 117e228ac89f..a5a9e945ae5f 100644 --- a/mscore/cloud/loginmanager.cpp +++ b/mscore/cloud/loginmanager.cpp @@ -20,6 +20,10 @@ #include #endif +#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) +#define qrand() QRandomGenerator::global()->generate() +#endif + namespace Ms { extern QString dataPath; @@ -74,6 +78,7 @@ void ApiInfo::createInstance() QByteArray clientId; if (f.open(QIODevice::ReadOnly)) { const QByteArray saveData = f.readAll(); + // ToDo for Qt 5.15: QJsonDocument::fromBinaryDatsa vs. CBOR format ?? const QJsonDocument d(QJsonDocument::fromBinaryData(saveData)); QJsonObject saveObject = d.object(); clientId = saveObject["clientId"].toString().toLatin1(); @@ -85,6 +90,7 @@ void ApiInfo::createInstance() QJsonObject saveObject; saveObject["clientId"] = QString(clientId); QJsonDocument saveDoc(saveObject); + // ToDo for Qt 5.15: QJsonDocument::toBinaryDatsa vs. CBOR format ?? f.write(saveDoc.toBinaryData()); f.close(); } @@ -180,6 +186,7 @@ bool LoginManager::save() saveObject["accessToken"] = _accessToken; saveObject["refreshToken"] = _refreshToken; QJsonDocument saveDoc(saveObject); + // ToDo for Qt 5.15: QJsonDocument::toBinaryDatsa vs. CBOR format ?? saveFile.write(saveDoc.toBinaryData()); saveFile.close(); return true; @@ -196,6 +203,7 @@ bool LoginManager::load() return false; } QByteArray saveData = loadFile.readAll(); + // ToDo for Qt 5.15: QJsonDocument::fromBinaryDatsa vs. CBOR format ?? QJsonDocument loadDoc(QJsonDocument::fromBinaryData(saveData)); QJsonObject saveObject = loadDoc.object(); _accessToken = saveObject["accessToken"].toString(); diff --git a/mscore/cloud/uploadscoredialog.cpp b/mscore/cloud/uploadscoredialog.cpp index 5d9329d984c4..946c19c07392 100644 --- a/mscore/cloud/uploadscoredialog.cpp +++ b/mscore/cloud/uploadscoredialog.cpp @@ -101,12 +101,11 @@ void UploadScoreDialog::upload(int nid) { Score* score = mscore->currentScore()->masterScore(); const QString scoreTitle = title->text().trimmed().isEmpty() ? score->title() : title->text(); - //revert changes partially made in c8278789267ab6d1c6fcf1cd2b39a2495862255c - /*QString path = QDir::tempPath() + "/" + mscore->currentScore()->masterScore()->fileInfo()->fileName(); - if (QFile::exists(path)) - path = QDir::tempPath() + QString("/%1-").arg(qrand() % 100000) + mscore->currentScore()->masterScore()->fileInfo()->fileName(); - if (mscore->saveAs(score, true, path, "mscz")) {*/ +#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) + QString path = QDir::tempPath() + QString("/temp_%1.mscz").arg(QRandomGenerator::global()->generate() % 100000); +#else QString path = QDir::tempPath() + QString("/temp_%1.mscz").arg(qrand() % 100000); +#endif if (mscore->saveAs(score, true, path, "mscz")) { _nid = nid; _loginManager->upload(path, nid, scoreTitle); diff --git a/mscore/continuouspanel.cpp b/mscore/continuouspanel.cpp index 80317a5a1cff..9d74e8773c40 100644 --- a/mscore/continuouspanel.cpp +++ b/mscore/continuouspanel.cpp @@ -107,7 +107,7 @@ void ContinuousPanel::paint(const QRect&, QPainter& painter) _visible = false; return; } - qStableSort(el.begin(), el.end(), elementLessThan); + std::stable_sort(el.begin(), el.end(), elementLessThan); const Measure* _currentMeasure = 0; for (const Element* e : el) { diff --git a/mscore/debugger/debugger.cpp b/mscore/debugger/debugger.cpp index dc43fe2e04d9..2d460893592c 100644 --- a/mscore/debugger/debugger.cpp +++ b/mscore/debugger/debugger.cpp @@ -568,13 +568,13 @@ bool Debugger::searchElement(QTreeWidgetItem* pi, Element* el) ElementItem* ei = (ElementItem*)item; if (ei->element() == el) { QTreeWidget* tw = pi->treeWidget(); - tw->setItemExpanded(item, true); + item->setExpanded(true); tw->setCurrentItem(item); tw->scrollToItem(item); return true; } if (searchElement(item, el)) { - pi->treeWidget()->setItemExpanded(item, true); + item->setExpanded(true); return true; } } @@ -648,7 +648,7 @@ void Debugger::updateElement(Element* el) } ElementItem* ei = static_cast(item); if (ei->element() == el) { - list->setItemExpanded(item, true); + item->setExpanded(true); list->setCurrentItem(item); list->scrollToItem(item); found = true; @@ -1874,7 +1874,11 @@ QSize DoubleLabel::sizeHint() const QFontMetrics fm = fontMetrics(); int h = fm.height() + 4; int n = 3 + 3; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) + int w = fm.horizontalAdvance(QString("-0.")) + fm.horizontalAdvance('0') * n + 6; +#else int w = fm.width(QString("-0.")) + fm.width('0') * n + 6; +#endif return QSize(w, h); } diff --git a/mscore/drumview.cpp b/mscore/drumview.cpp index aeab5b8fedeb..fdc50cabd5f2 100644 --- a/mscore/drumview.cpp +++ b/mscore/drumview.cpp @@ -347,7 +347,7 @@ void DrumView::moveLocator(int i) void DrumView::wheelEvent(QWheelEvent* event) { - int step = event->delta() / 120; + int step = event->angleDelta().y() / 120; double xmag = transform().m11(); double ymag = transform().m22(); @@ -417,7 +417,17 @@ void DrumView::wheelEvent(QWheelEvent* event) emit xposChanged(xpos); } } else if (event->modifiers() == Qt::ShiftModifier) { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) +# if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 1)) //??? + QWheelEvent we(event->position(), event->globalPosition(), event->pixelDelta(), event->angleDelta(), + event->buttons(), event->modifiers(), event->phase(), event->inverted(), event->source()); +# else + QWheelEvent we(event->pos(), event->globalPos(), event->pixelDelta(), event->angleDelta(), event->buttons(), + event->modifiers(), event->phase(), event->inverted(), event->source()); +# endif +#else QWheelEvent we(event->pos(), event->delta(), event->buttons(), 0, Qt::Horizontal); +#endif QGraphicsView::wheelEvent(&we); } else if (event->modifiers() == 0) { QGraphicsView::wheelEvent(event); diff --git a/mscore/editdrumset.cpp b/mscore/editdrumset.cpp index 0d1eae9f16aa..80923c477acd 100644 --- a/mscore/editdrumset.cpp +++ b/mscore/editdrumset.cpp @@ -70,7 +70,7 @@ NoteHead::Group noteHeadNames[] = { bool EditDrumsetTreeWidgetItem::operator<(const QTreeWidgetItem& other) const { if (treeWidget()->sortColumn() == Column::PITCH) { - return data(Column::PITCH, Qt::UserRole) < other.data(Column::PITCH, Qt::UserRole); + return data(Column::PITCH, Qt::UserRole).toInt() < other.data(Column::PITCH, Qt::UserRole).toInt(); } else { return QTreeWidgetItem::operator<(other); } diff --git a/mscore/editlyrics.cpp b/mscore/editlyrics.cpp index fc43efd489f9..0a1ed6d4dee5 100644 --- a/mscore/editlyrics.cpp +++ b/mscore/editlyrics.cpp @@ -78,7 +78,7 @@ bool ScoreView::editKeyLyrics() case Qt::Key_Underscore: if (editData.control(textEditing)) { // change into normal underscore - editData.modifiers = 0; // &= ~CONTROL_MODIFIER; + editData.modifiers = {}; // &= ~CONTROL_MODIFIER; return false; } else { lyricsUnderscore(); diff --git a/mscore/events.cpp b/mscore/events.cpp index b240fa3bd96f..b9fb68d038fa 100644 --- a/mscore/events.cpp +++ b/mscore/events.cpp @@ -179,7 +179,11 @@ void ScoreView::wheelEvent(QWheelEvent* event) if (event->modifiers() & Qt::ControlModifier) { // Windows touch pad pinches also execute this QApplication::sendPostedEvents(this, 0); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 1)) //??? + zoomStep(nReal, event->position().toPoint()); +#else zoomStep(nReal, event->pos()); +#endif return; } diff --git a/mscore/exampleview.cpp b/mscore/exampleview.cpp index e5b83b9f26d2..776aed54dd08 100644 --- a/mscore/exampleview.cpp +++ b/mscore/exampleview.cpp @@ -197,7 +197,7 @@ void ExampleView::paintEvent(QPaintEvent* ev) QRegion r1(r); Page* page = _score->pages().front(); QList ell = page->items(fr); - qStableSort(ell.begin(), ell.end(), elementLessThan); + std::stable_sort(ell.begin(), ell.end(), elementLessThan); drawElements(p, ell); } QFrame::paintEvent(ev); diff --git a/mscore/excerptsdialog.cpp b/mscore/excerptsdialog.cpp index cae55e1f9962..5220fb821894 100644 --- a/mscore/excerptsdialog.cpp +++ b/mscore/excerptsdialog.cpp @@ -353,7 +353,7 @@ void ExcerptsDialog::excerptChanged(QListWidgetItem* cur, QListWidgetItem*) sli->setDisabled(!b); } pi->setText(0, p->partName()); - partList->setItemExpanded(pi, false); + pi->setExpanded(false); } assignTracks(tracks); } else { diff --git a/mscore/file.cpp b/mscore/file.cpp index 02c198542d59..fc7765ab3a18 100644 --- a/mscore/file.cpp +++ b/mscore/file.cpp @@ -1080,7 +1080,7 @@ QString MuseScore::getSaveScoreName(const QString& title, QString& name, const Q if (preferences.getBool(PREF_UI_APP_USENATIVEDIALOGS)) { QString s; - QFileDialog::Options options = selectFolder ? QFileDialog::ShowDirsOnly : QFileDialog::Options(0); + QFileDialog::Options options = selectFolder ? QFileDialog::ShowDirsOnly : QFileDialog::Options(); return QFileDialog::getSaveFileName(this, title, name, filter, &s, options); } @@ -1863,7 +1863,7 @@ void MuseScore::exportFile() QString name; #ifdef Q_OS_WIN - if (QSysInfo::WindowsVersion == QSysInfo::WV_XP) { + if (QOperatingSystemVersion::current() <= QOperatingSystemVersion(QOperatingSystemVersion::Windows, 5, 1)) { //XP if (!cs->isMaster()) { name = QString("%1/%2-%3").arg(saveDirectory).arg(cs->masterScore()->fileInfo()->completeBaseName()).arg(createDefaultFileName( cs @@ -1963,7 +1963,7 @@ bool MuseScore::exportParts() QString scoreName = cs->isMaster() ? cs->masterScore()->fileInfo()->completeBaseName() : cs->title(); QString name; #ifdef Q_OS_WIN - if (QSysInfo::WindowsVersion == QSysInfo::WV_XP) { + if (QOperatingSystemVersion::current() <= QOperatingSystemVersion(QOperatingSystemVersion::Windows, 5, 1)) { //XP name = QString("%1/%2").arg(saveDirectory).arg(scoreName); } else #endif @@ -2639,7 +2639,7 @@ bool MuseScore::saveAs(Score* cs_, bool saveCopy) } QString name; #ifdef Q_OS_WIN - if (QSysInfo::WindowsVersion == QSysInfo::WV_XP) { + if (QOperatingSystemVersion::current() <= QOperatingSystemVersion(QOperatingSystemVersion::Windows, 5, 1)) { //XP if (!cs_->isMaster()) { name = QString("%1/%2-%3").arg(saveDirectory).arg(fileBaseName).arg(createDefaultFileName(cs->title())); } else { @@ -2924,7 +2924,7 @@ bool MuseScore::savePng(Score* score, QIODevice* device, int pageNumber, bool dr } QList< Element*> pel = page->elements(); - qStableSort(pel.begin(), pel.end(), elementLessThan); + std::stable_sort(pel.begin(), pel.end(), elementLessThan); paintElements(p, pel); if (format == QImage::Format_Indexed8) { //convert to grayscale & respect alpha @@ -3209,7 +3209,7 @@ bool MuseScore::saveSvg(Score* score, QIODevice* device, int pageNumber, bool dr } // 2nd pass: the rest of the elements QList pel = page->elements(); - qStableSort(pel.begin(), pel.end(), elementLessThan); + std::stable_sort(pel.begin(), pel.end(), elementLessThan); ElementType eType; for (const Element* e : pel) { // Always exclude invisible elements diff --git a/mscore/fotomode.cpp b/mscore/fotomode.cpp index 8cc5dc3fce03..28f3eebd9751 100644 --- a/mscore/fotomode.cpp +++ b/mscore/fotomode.cpp @@ -379,6 +379,9 @@ void ScoreView::fotoContextPopup(QContextMenuEvent* ev) preferences.getDouble(PREF_EXPORT_PNG_RESOLUTION), 16.0, 2400.0, 1, &ok +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) //??? + , {}, 1.0 +#endif ); if (ok) { preferences.setPreference(PREF_EXPORT_PNG_RESOLUTION, resolution); @@ -656,6 +659,6 @@ void ScoreView::fotoDragDrop(QMouseEvent*) mimeData->setUrls(ul); drag->setMimeData(mimeData); - drag->start(Qt::CopyAction); + drag->exec(Qt::CopyAction); } } diff --git a/mscore/help.cpp b/mscore/help.cpp index 4e08b9c28d88..da548c687ed1 100644 --- a/mscore/help.cpp +++ b/mscore/help.cpp @@ -97,6 +97,7 @@ void HelpQuery::textChanged(const QString& ss) if (!mscore->helpEngine()) { return; } + // ToDo for Qt 5.15: QHelpEngineCore::linksForIdentifier vs. documentsForIdentifier ?? QMap list = mscore->helpEngine()->linksForIdentifier(s); // QMaplist = mscore->helpEngine()->indexModel()->linksForKeyword(s); int k = 0; @@ -142,6 +143,7 @@ void HelpQuery::returnPressed() if (!he) { return; } + // ToDo for Qt 5.15: QHelpEngineCore::linksForIdentifier vs. documentsForIdentifier ?? QMap list = he->linksForIdentifier(entry->text().toLower()); if (!list.isEmpty()) { mscore->showHelp(list.begin().value()); diff --git a/mscore/importmidi_ui/importmidi_delegate.cpp b/mscore/importmidi_ui/importmidi_delegate.cpp index 23f3a3bbc95b..b23df6d84f33 100644 --- a/mscore/importmidi_ui/importmidi_delegate.cpp +++ b/mscore/importmidi_ui/importmidi_delegate.cpp @@ -298,7 +298,11 @@ void OperationsDelegate::drawArrow( const int height = 4; const int width = 8; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) + const int textWidth = fm.horizontalAdvance(index.data(Qt::DisplayRole).toString()); +#else const int textWidth = fm.width(index.data(Qt::DisplayRole).toString()); +#endif const int x = rightArrowAlign ? option.rect.right() - width - gap : option.rect.left() + textWidth + gap; diff --git a/mscore/importmidi_ui/importmidi_panel.cpp b/mscore/importmidi_ui/importmidi_panel.cpp index a570236f9c98..32f4e9e3f341 100644 --- a/mscore/importmidi_ui/importmidi_panel.cpp +++ b/mscore/importmidi_ui/importmidi_panel.cpp @@ -148,7 +148,7 @@ void ImportMidiPanel::fillCharsetList() _ui->comboBoxCharset->clear(); QList charsets = QTextCodec::availableCodecs(); - qSort(charsets.begin(), charsets.end()); + std::sort(charsets.begin(), charsets.end()); int idx = 0; int maxWidth = 0; for (const auto& charset: charsets) { @@ -156,7 +156,11 @@ void ImportMidiPanel::fillCharsetList() if (charset == MidiCharset::defaultCharset()) { _ui->comboBoxCharset->setCurrentIndex(idx); } +#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) + int newWidth = fm.horizontalAdvance(charset); +#else int newWidth = fm.width(charset); +#endif if (newWidth > maxWidth) { maxWidth = newWidth; } diff --git a/mscore/importmidi_ui/importmidi_view.cpp b/mscore/importmidi_ui/importmidi_view.cpp index 982fa8b292d5..a0b20635a8af 100644 --- a/mscore/importmidi_ui/importmidi_view.cpp +++ b/mscore/importmidi_ui/importmidi_view.cpp @@ -384,7 +384,7 @@ bool TracksView::viewportEvent(QEvent* event) void TracksView::wheelEvent(QWheelEvent* event) { - const int degrees = event->delta() / 8; + const int degrees = event->angleDelta().y() / 8; const int steps = degrees / 15; if ((event->modifiers() & Qt::ShiftModifier) || (event->modifiers() & Qt::ControlModifier)) { diff --git a/mscore/importmidi_ui/importmidi_view.h b/mscore/importmidi_ui/importmidi_view.h index 3d87c7ea3173..d2cd49b7ec26 100644 --- a/mscore/importmidi_ui/importmidi_view.h +++ b/mscore/importmidi_ui/importmidi_view.h @@ -28,13 +28,13 @@ class SeparatorDelegate : public QStyledItemDelegate if (index.row() == _frozenRowIndex) { painter->save(); - painter->setPen(option.palette.foreground().color()); + painter->setPen(option.palette.windowText().color()); painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight()); painter->restore(); } if (index.column() == _frozenColIndex) { painter->save(); - painter->setPen(option.palette.foreground().color()); + painter->setPen(option.palette.windowText().color()); // use -1 padding to create double-line effect const int x = option.rect.right() - 1; painter->drawLine(x, option.rect.top(), x, option.rect.bottom()); diff --git a/mscore/instrwidget.cpp b/mscore/instrwidget.cpp index 41d5585bffff..a36cd949784c 100644 --- a/mscore/instrwidget.cpp +++ b/mscore/instrwidget.cpp @@ -498,7 +498,7 @@ void InstrumentsWidget::genPartList(Score* cs) sli->setStaffType(s->staffType(Fraction(0,1))); // TODO } pli->updateClefs(); - partiturList->setItemExpanded(pli, true); + pli->setExpanded(true); } partiturList->resizeColumnToContents(2); // adjust width of "Clef " and "Staff type" columns partiturList->resizeColumnToContents(4); @@ -627,7 +627,7 @@ void InstrumentsWidget::on_addButton_clicked() sli->setStaffType(it->staffTypePreset); } pli->updateClefs(); - partiturList->setItemExpanded(pli, true); + pli->setExpanded(true); partiturList->clearSelection(); // should not be necessary partiturList->setCurrentItem(pli); } @@ -733,7 +733,7 @@ void InstrumentsWidget::on_upButton_clicked() QTreeWidgetItem* item = wi.front(); if (item->type() == PART_LIST_ITEM) { - bool isExpanded = partiturList->isItemExpanded(item); + bool isExpanded = item->isExpanded(); int idx = partiturList->indexOfTopLevelItem(item); // if part item not first, move one slot up if (idx) { @@ -766,7 +766,7 @@ void InstrumentsWidget::on_upButton_clicked() staffItem->initStaffTypeCombo(true); staffItem->setStaffType(staffIdx[itemIdx]); } - partiturList->setItemExpanded(item1, isExpanded); + item1->setExpanded(isExpanded); partiturList->setCurrentItem(item1); } } else { @@ -822,7 +822,7 @@ void InstrumentsWidget::on_downButton_clicked() } QTreeWidgetItem* item = wi.front(); if (item->type() == PART_LIST_ITEM) { - bool isExpanded = partiturList->isItemExpanded(item); + bool isExpanded = item->isExpanded(); int idx = partiturList->indexOfTopLevelItem(item); int n = partiturList->topLevelItemCount(); // if part not last, move one slot down @@ -857,7 +857,7 @@ void InstrumentsWidget::on_downButton_clicked() staffItem->initStaffTypeCombo(true); staffItem->setStaffType(staffIdx[itemIdx]); } - partiturList->setItemExpanded(item1, isExpanded); + item1->setExpanded(isExpanded); partiturList->setCurrentItem(item1); } } else { diff --git a/mscore/magbox.cpp b/mscore/magbox.cpp index 585a0fae3b43..9c2a983a468a 100644 --- a/mscore/magbox.cpp +++ b/mscore/magbox.cpp @@ -66,7 +66,7 @@ MagBox::MagBox(QWidget* parent) setToolTip(tr("Zoom")); setWhatsThis(tr("Zoom")); setValidator(new MagValidator(this)); - setAutoCompletion(false); + setCompleter(nullptr); int i = 0; for (const MagEntry& e : magTable) { diff --git a/mscore/mixer/mixer.cpp b/mscore/mixer/mixer.cpp index 26f1dca31086..f25a868ee495 100644 --- a/mscore/mixer/mixer.cpp +++ b/mscore/mixer/mixer.cpp @@ -52,6 +52,7 @@ namespace Ms { __x->setChecked(__y); \ __x->blockSignals(false); +#if 0 double volumeToUserRange(char v) { return v * 100.0 / 128.0; } double panToUserRange(char v) { return (v / 128.0) * 360.0; } double chorusToUserRange(char v) { return v * 100.0 / 128.0; } @@ -65,6 +66,7 @@ char userRangeToPan(double v) { return (char)qBound(0, static_cast((v / 360 char userRangeToChorus(double v) { return (char)qBound(0, static_cast(v / 100.0 * 128.0), 127); } //0 to 100 char userRangeToReverb(double v) { return (char)qBound(0, static_cast(v / 100.0 * 128.0), 127); } +#endif //--------------------------------------------------------- // Mixer diff --git a/mscore/mixer/mixer.h b/mscore/mixer/mixer.h index bf4b449675a9..636891250e19 100644 --- a/mscore/mixer/mixer.h +++ b/mscore/mixer/mixer.h @@ -40,6 +40,7 @@ class MixerDetails; class MixerTrack; class MidiMapping; +#if 0 double volumeToUserRange(char v); double panToUserRange(char v); double chorusToUserRange(char v); @@ -53,6 +54,7 @@ char userRangeToPan(double v); char userRangeToChorus(double v); //0 to 100 char userRangeToReverb(double v); +#endif //--------------------------------------------------------- // Mixer diff --git a/mscore/mixer/mixer.ui b/mscore/mixer/mixer.ui index 09585f7cb520..72062e3784c5 100644 --- a/mscore/mixer/mixer.ui +++ b/mscore/mixer/mixer.ui @@ -9,7 +9,7 @@ false - QDockWidget::AllDockWidgetFeatures + QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable diff --git a/mscore/musescore.cpp b/mscore/musescore.cpp index 57806efb2ea2..75da9e6b91b1 100644 --- a/mscore/musescore.cpp +++ b/mscore/musescore.cpp @@ -179,6 +179,10 @@ Q_LOGGING_CATEGORY(undoRedo, "undoRedo", QtCriticalMsg); #include "telemetrymanager.h" #include "global/context/scorestateobserver.h" +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) //??? +# define endl Qt::endl +#endif + namespace Ms { MuseScore* mscore; MasterSynthesizer* synti; @@ -760,7 +764,7 @@ bool MuseScore::importExtension(QString path) infoMsgBox->setTextFormat(Qt::RichText); infoMsgBox->setMinimumSize(300, 100); infoMsgBox->setMaximumSize(300, 100); - infoMsgBox->setStandardButtons(0); + infoMsgBox->setStandardButtons({}); infoMsgBox->setText(QString("

") + tr("Please wait; unpacking extension…") + QString("

")); //setup async run of long operations @@ -1064,7 +1068,7 @@ MuseScore::MuseScore() QScreen* screen = QGuiApplication::primaryScreen(); if (userDPI == 0.0) { #if defined(Q_OS_WIN) - if (QSysInfo::WindowsVersion <= QSysInfo::WV_WINDOWS7) { + if (QOperatingSystemVersion::current() <= QOperatingSystemVersion(QOperatingSystemVersion::Windows, 7)) { _physicalDotsPerInch = screen->logicalDotsPerInch() * screen->devicePixelRatio(); } else { _physicalDotsPerInch = screen->physicalDotsPerInch(); // physical resolution @@ -4383,10 +4387,12 @@ bool MuseScore::readLanguages(const QString& path) int line, column; QString err; if (!doc.setContent(&qf, false, &err, &line, &column)) { + QString error; + error = QString::asprintf(qPrintable(tr("Error reading language file %s at line %d column %d: %s\n")), + qPrintable(qf.fileName()), line, column, qPrintable(err)); QMessageBox::warning(0, QWidget::tr("Load Languages Failed:"), - tr("Error reading language file %1 at line %2 column %3: %4") - .arg(qf.fileName()).arg(line).arg(column).arg(err), + error, QString(), QWidget::tr("Quit"), QString(), 0, 1); return false; } @@ -6096,14 +6102,14 @@ GreendotButton::GreendotButton(QWidget* parent) QRectF drawHandle(QPainter& p, const QPointF& pos, bool active) { p.save(); - p.setPen(QPen(QColor(MScore::selectColor[0]), 2.0 / p.matrix().m11())); + p.setPen(QPen(QColor(MScore::selectColor[0]), 2.0 / p.worldTransform().toAffine().m11())); if (active) { p.setBrush(MScore::selectColor[0]); } else { p.setBrush(Qt::NoBrush); } - qreal w = 8.0 / p.matrix().m11(); - qreal h = 8.0 / p.matrix().m22(); + qreal w = 8.0 / p.worldTransform().toAffine().m11(); + qreal h = 8.0 / p.worldTransform().toAffine().m22(); QRectF r(-w / 2, -h / 2, w, h); r.translate(pos); diff --git a/mscore/navigator.cpp b/mscore/navigator.cpp index 4ff8e1b1364f..95ce3e7ab669 100644 --- a/mscore/navigator.cpp +++ b/mscore/navigator.cpp @@ -115,7 +115,7 @@ Navigator::Navigator(NScrollArea* sa, QWidget* parent) : QWidget(parent) { setObjectName("Navigator"); - setAttribute(Qt::WA_NoBackground); + setAttribute(Qt::WA_OpaquePaintEvent); _score = 0; scrollArea = sa; scrollArea->setWidgetResizable(true); @@ -365,7 +365,11 @@ void Navigator::paintEvent(QPaintEvent* ev) QFont font("FreeSans", 4000); QFontMetrics fm(font); Page* firstPage = _score->pages()[0]; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) + qreal factor = (firstPage->width() * 0.5) / fm.horizontalAdvance(QString::number(_score->pages().size())); +#else qreal factor = (firstPage->width() * 0.5) / fm.width(QString::number(_score->pages().size())); +#endif font.setPointSizeF(font.pointSizeF() * factor); p.setTransform(matrix); diff --git a/mscore/palette.h b/mscore/palette.h index c6b03f3009d4..093e32a6f2c9 100644 --- a/mscore/palette.h +++ b/mscore/palette.h @@ -137,7 +137,7 @@ private slots: void nextPaletteElement(); void prevPaletteElement(); void applyPaletteElement(); - static bool applyPaletteElement(Element* element, Qt::KeyboardModifiers modifiers = 0); + static bool applyPaletteElement(Element* element, Qt::KeyboardModifiers modifiers = {}); PaletteCell* append(Element*, const QString& name, QString tag = QString(),qreal mag = 1.0); PaletteCell* add(int idx, Element*, const QString& name,const QString tag = QString(), qreal mag = 1.0); diff --git a/mscore/pianoroll/pianoview.cpp b/mscore/pianoroll/pianoview.cpp index 48f24f7913db..7dc0601324bd 100644 --- a/mscore/pianoroll/pianoview.cpp +++ b/mscore/pianoroll/pianoview.cpp @@ -571,21 +571,39 @@ void PianoView::zoomView(int step, bool horizontal, int centerX, int centerY) void PianoView::wheelEvent(QWheelEvent* event) { - int step = event->delta() / 120; + int step = event->angleDelta().y() / 120; if (event->modifiers() == 0) { //Vertical scroll QGraphicsView::wheelEvent(event); } else if (event->modifiers() == Qt::ShiftModifier) { //Horizontal scroll +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) +# if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 1)) //??? + QWheelEvent we(event->position(), event->globalPosition(), event->pixelDelta(), event->angleDelta(), + event->buttons(), event->modifiers(), event->phase(), event->inverted(), event->source()); +# else + QWheelEvent we(event->pos(), event->globalPos(), event->pixelDelta(), event->angleDelta(), event->buttons(), + event->modifiers(), event->phase(), event->inverted(), event->source()); +# endif +#else QWheelEvent we(event->pos(), event->delta(), event->buttons(), 0, Qt::Horizontal); +#endif QGraphicsView::wheelEvent(&we); } else if (event->modifiers() == Qt::ControlModifier) { //Vertical zoom +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 1)) //??? + zoomView(step, false, event->position().x(), event->position().y()); +#else zoomView(step, false, event->x(), event->y()); +#endif } else if (event->modifiers() == (Qt::ShiftModifier | Qt::ControlModifier)) { //Horizontal zoom +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 1)) //??? + zoomView(step, true, event->position().x(), event->position().y()); +#else zoomView(step, true, event->x(), event->y()); +#endif } } diff --git a/mscore/pianotools.cpp b/mscore/pianotools.cpp index 9f737a55eaf6..47c019b64cdb 100644 --- a/mscore/pianotools.cpp +++ b/mscore/pianotools.cpp @@ -478,7 +478,7 @@ void PianoTools::changeEvent(QEvent* event) void HPiano::wheelEvent(QWheelEvent* event) { static int deltaSum = 0; - deltaSum += event->delta(); + deltaSum += event->angleDelta().y(); int step = deltaSum / 120; deltaSum %= 120; qreal mag = scaleVal; diff --git a/mscore/playpanel.ui b/mscore/playpanel.ui index b88c23e65366..144760296451 100644 --- a/mscore/playpanel.ui +++ b/mscore/playpanel.ui @@ -20,7 +20,7 @@ true
- QDockWidget::AllDockWidgetFeatures + QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable Play Panel diff --git a/mscore/plugin/api/qmlpluginapi.cpp b/mscore/plugin/api/qmlpluginapi.cpp index 36935976c233..86bf3aa844c7 100644 --- a/mscore/plugin/api/qmlpluginapi.cpp +++ b/mscore/plugin/api/qmlpluginapi.cpp @@ -347,6 +347,23 @@ void PluginAPI::registerQmlTypes() qmlRegisterType("MuseScore", 3, 0, "ScoreView"); qmlRegisterType("MuseScore", 3, 0, "Cursor"); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + qmlRegisterAnonymousType("MuseScore", 3); + //qmlRegisterAnonymousType("MuseScore", 3); + //qmlRegisterAnonymousType("MuseScore", 3); + //qmlRegisterAnonymousType("MuseScore", 3); + //qmlRegisterAnonymousType("MuseScore", 3); +#else qmlRegisterType(); qmlRegisterType(); qmlRegisterType(); @@ -358,11 +375,12 @@ void PluginAPI::registerQmlTypes() qmlRegisterType(); qmlRegisterType(); qmlRegisterType(); - qmlRegisterType("MuseScore", 3, 0, "PlayEvent"); //qmlRegisterType(); //qmlRegisterType(); //qmlRegisterType(); //qmlRegisterType(); +#endif + qmlRegisterType("MuseScore", 3, 0, "PlayEvent"); #if 0 qmlRegisterType("MuseScore", 1, 0, "NoteHead"); @@ -393,7 +411,11 @@ void PluginAPI::registerQmlTypes() qmlRegisterType(); qmlRegisterType(); #endif +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + qmlRegisterAnonymousType("MuseScore", 3); +#else qmlRegisterType(); +#endif qRegisterMetaType("FractionWrapper*"); qmlTypesRegistered = true; diff --git a/mscore/plugin/api/util.h b/mscore/plugin/api/util.h index 3125678757ce..5a76ff0e0efa 100644 --- a/mscore/plugin/api/util.h +++ b/mscore/plugin/api/util.h @@ -123,7 +123,11 @@ class MsProcess : public QProcess public slots: //@ -- +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) //??? + Q_INVOKABLE void start(const QString& program) { QProcess::start(program, {}, ReadWrite); } +#else Q_INVOKABLE void start(const QString& program) { QProcess::start(program); } +#endif //@ -- Q_INVOKABLE bool waitForFinished(int msecs = 30000) { return QProcess::waitForFinished(msecs); } //@ -- diff --git a/mscore/plugin/qmledit.cpp b/mscore/plugin/qmledit.cpp index e1638647c8d1..0a97087c2a9a 100644 --- a/mscore/plugin/qmledit.cpp +++ b/mscore/plugin/qmledit.cpp @@ -274,7 +274,7 @@ void JSHighlighter::mark(const QString& str, Qt::CaseSensitivity caseSensitivity QStringList JSHighlighter::keywords() const { - return m_keywords.toList(); + return m_keywords.values(); } //--------------------------------------------------------- @@ -283,7 +283,11 @@ QStringList JSHighlighter::keywords() const void JSHighlighter::setKeywords(const QStringList& keywords) { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + m_keywords = QSet(keywords.begin(), keywords.end()); +#else m_keywords = QSet::fromList(keywords); +#endif rehighlight(); } diff --git a/mscore/prefsdialog.cpp b/mscore/prefsdialog.cpp index 640bc8e05afe..259a9e27cbaa 100644 --- a/mscore/prefsdialog.cpp +++ b/mscore/prefsdialog.cpp @@ -218,6 +218,7 @@ PreferenceDialog::PreferenceDialog(QWidget* parent) recordButtons->addButton(recordEditMode, RMIDI_NOTE_EDIT_MODE); recordButtons->addButton(recordRealtimeAdvance, RMIDI_REALTIME_ADVANCE); + // ToDo for Qt 5.15: QButtonGroup::buttonClicked vs. QButtonGroup::idClicked(int) ?? connect(recordButtons, QOverload::of( &QButtonGroup::buttonClicked), this, &PreferenceDialog::recordButtonClicked); connect(midiRemoteControlClear, &QToolButton::clicked, this, &PreferenceDialog::midiRemoteControlClearClicked); diff --git a/mscore/qml/nativemenu.h b/mscore/qml/nativemenu.h index 335a68584b51..75a15bd145a4 100644 --- a/mscore/qml/nativemenu.h +++ b/mscore/qml/nativemenu.h @@ -42,7 +42,11 @@ class QmlNativeMenu : public QQuickItem Q_PROPERTY(bool visible READ visible WRITE setVisible NOTIFY visibleChanged) +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) //??? + QQmlListProperty contentData() { return QQmlListProperty(this, &_contentData); } // TODO: use different QQmlListProperty constructor? +#else QQmlListProperty contentData() { return QQmlListProperty(this, _contentData); } // TODO: use different QQmlListProperty constructor? +#endif QMenu* createMenu() const; void showMenu(QPoint p); diff --git a/mscore/qml/palettes/Palette.qml b/mscore/qml/palettes/Palette.qml index 3d1a134f3644..9210fc812534 100644 --- a/mscore/qml/palettes/Palette.qml +++ b/mscore/qml/palettes/Palette.qml @@ -767,7 +767,7 @@ GridView { // force not hiding palette cell if it is being dragged to a score enabled: paletteCell.paletteDrag target: mscore - onElementDraggedToScoreView: paletteCell.paletteDrag = false + function onElementDraggedToScoreView() { paletteCell.paletteDrag = false; } } } // end ItemDelegate } // end DelegateModel diff --git a/mscore/qml/palettes/PaletteTree.qml b/mscore/qml/palettes/PaletteTree.qml index 1efd3e491dfe..ee08a13aa74e 100644 --- a/mscore/qml/palettes/PaletteTree.qml +++ b/mscore/qml/palettes/PaletteTree.qml @@ -763,7 +763,7 @@ ListView { Connections { target: palettesWidget - onHasFocusChanged: { + function onHasFocusChanged() { if (!palettesWidget.hasFocus) { paletteSelectionModel.clearSelection(); expandedPopupIndex = null; diff --git a/mscore/qml/palettes/PalettesWidgetHeader.qml b/mscore/qml/palettes/PalettesWidgetHeader.qml index c37e0127572e..0852beec284f 100644 --- a/mscore/qml/palettes/PalettesWidgetHeader.qml +++ b/mscore/qml/palettes/PalettesWidgetHeader.qml @@ -130,7 +130,7 @@ Item { Connections { target: palettesWidget - onHasFocusChanged: { + function onHasFocusChanged() { if (!palettesWidget.hasFocus && !palettePopup.inMenuAction) palettePopup.visible = false; } @@ -138,7 +138,7 @@ Item { Connections { target: mscore - onPaletteSearchRequested: { + function onPaletteSearchRequested() { searchTextInput.forceActiveFocus() searchTextInput.selectAll() } diff --git a/mscore/scorePreview.cpp b/mscore/scorePreview.cpp index 3acaf8ece235..373faab97209 100644 --- a/mscore/scorePreview.cpp +++ b/mscore/scorePreview.cpp @@ -52,7 +52,11 @@ void ScorePreview::setScore(const ScoreInfo& si) { scoreInfo = si; name->setText(si.completeBaseName()); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) + creationDate->setText(si.birthTime().toString()); +#else creationDate->setText(si.created().toString()); +#endif fileSize->setText(QString("%1 KiB").arg(si.size() / 1024)); name->setEnabled(true); creationDate->setEnabled(true); diff --git a/mscore/scoreview.cpp b/mscore/scoreview.cpp index 394fe6c3447f..f3fe9ce8b6fa 100644 --- a/mscore/scoreview.cpp +++ b/mscore/scoreview.cpp @@ -1163,7 +1163,7 @@ static void drawDebugInfo(QPainter& p, const Element* _e) e->shape().paint(p); p.setPen(QPen(Qt::red, 0.0)); // red x at 0,0 of bbox - qreal w = 5.0 / p.matrix().m11(); + qreal w = 5.0 / p.worldTransform().toAffine().m11(); qreal h = w; qreal x = 0; // e->bbox().x(); qreal y = 0; // e->bbox().y(); @@ -1200,7 +1200,7 @@ static void drawDebugInfo(QPainter& p, const Element* _e) void ScoreView::drawElements(QPainter& painter, QList& el, Element* editElement) { - qStableSort(el.begin(), el.end(), elementLessThan); + std::stable_sort(el.begin(), el.end(), elementLessThan); for (const Element* e : el) { e->itemDiscovered = 0; @@ -1457,7 +1457,7 @@ void ScoreView::paint(const QRect& r, QPainter& p) QPen pen; pen.setColor(MScore::selectColor[0]); - pen.setWidthF(2.0 / p.matrix().m11()); + pen.setWidthF(2.0 / p.worldTransform().toAffine().m11()); pen.setStyle(Qt::SolidLine); @@ -5173,7 +5173,7 @@ QList ScoreView::elementsNear(QPointF p) } } if (!ll.empty()) { - qSort(ll.begin(), ll.end(), elementLower); + std::sort(ll.begin(), ll.end(), elementLower); } return ll; } diff --git a/mscore/script/script.cpp b/mscore/script/script.cpp index 76412f459e77..af57e7654b4a 100644 --- a/mscore/script/script.cpp +++ b/mscore/script/script.cpp @@ -19,6 +19,10 @@ #include "libmscore/score.h" +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) //??? +#define endl Qt::endl +#endif + namespace Ms { //--------------------------------------------------------- // ScriptContext diff --git a/mscore/script/testscript.cpp b/mscore/script/testscript.cpp index 632dd5c12097..e0393b0d1392 100644 --- a/mscore/script/testscript.cpp +++ b/mscore/script/testscript.cpp @@ -17,6 +17,10 @@ #include "libmscore/scorediff.h" +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) //??? +#define endl Qt::endl +#endif + namespace Ms { //--------------------------------------------------------- // TestScriptEntry::deserialize diff --git a/mscore/shortcut.cpp b/mscore/shortcut.cpp index 3e5d08ae85cf..06d514311805 100644 --- a/mscore/shortcut.cpp +++ b/mscore/shortcut.cpp @@ -4645,7 +4645,11 @@ QKeySequence Shortcut::keySeqFromString(const QString& str, QKeySequence::Sequen code[i] = 0; } +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + QStringList strList = str.split(QRegularExpression("(?= QT_VERSION_CHECK(5, 15, 0)) //??? +#define endl Qt::endl +#endif + /////////////////////////////////////////////////////////////////////////////// // FOR GRADIENT FUNCTIONALITY THAT IS NOT IMPLEMENTED (YET): // diff --git a/mscore/timeline.cpp b/mscore/timeline.cpp index c12f814971d4..ccf856304a70 100644 --- a/mscore/timeline.cpp +++ b/mscore/timeline.cpp @@ -736,7 +736,7 @@ Timeline::Timeline(TDockWidget* dockWidget, QWidget* parent) { setFocusPolicy(Qt::NoFocus); setAlignment(Qt::Alignment((Qt::AlignLeft | Qt::AlignTop))); - setAttribute(Qt::WA_NoBackground); + setAttribute(Qt::WA_OpaquePaintEvent); // theming _lightTheme.backgroundColor = QColor(192, 192, 192); diff --git a/thirdparty/google_analytics/CMakeLists.txt b/thirdparty/google_analytics/CMakeLists.txt index ce0be7aa9328..07386e06cf92 100644 --- a/thirdparty/google_analytics/CMakeLists.txt +++ b/thirdparty/google_analytics/CMakeLists.txt @@ -27,6 +27,12 @@ target_link_libraries(google_analytics Qt5::Core Qt5::Network) if (MSVC) set_target_properties( google_analytics PROPERTIES - COMPILE_FLAGS "/wd4458 /wd4127" + COMPILE_FLAGS "/wd4127 /wd4458 /wd4996" ) +else (MSVC) + if (MINGW) + set_target_properties( google_analytics PROPERTIES + COMPILE_FLAGS "-Wno-deprecated-declarations" + ) + endif (MINGW) endif (MSVC)