From ae8034354673b0c5ceffd253c7f614d54ffec583 Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Tue, 29 Sep 2020 10:08:12 +0200 Subject: [PATCH 1/5] fix compiler warnings as seen in MinGW and/or MSVC --- framework/midi/internal/zerberus/channel.cpp | 2 ++ framework/midi/internal/zerberus/filter.cpp | 2 ++ framework/midi/midievent.h | 8 ++++---- .../fluidsynth/fluidsynth-2.1.4/src/utils/fluid_sys.c | 3 +++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/framework/midi/internal/zerberus/channel.cpp b/framework/midi/internal/zerberus/channel.cpp index 0c82359ac7ace..b079776e2a9ed 100644 --- a/framework/midi/internal/zerberus/channel.cpp +++ b/framework/midi/internal/zerberus/channel.cpp @@ -12,7 +12,9 @@ #include "zerberus.h" +#ifndef _USE_MATH_DEFINES #define _USE_MATH_DEFINES +#endif #include #include "channel.h" diff --git a/framework/midi/internal/zerberus/filter.cpp b/framework/midi/internal/zerberus/filter.cpp index 276cfad001e3b..ffc4fa28bffb1 100644 --- a/framework/midi/internal/zerberus/filter.cpp +++ b/framework/midi/internal/zerberus/filter.cpp @@ -15,7 +15,9 @@ #include #include +#ifndef _USE_MATH_DEFINES #define _USE_MATH_DEFINES +#endif #include #include diff --git a/framework/midi/midievent.h b/framework/midi/midievent.h index 9f547d7817e9c..95d14dbac0dba 100644 --- a/framework/midi/midievent.h +++ b/framework/midi/midievent.h @@ -636,7 +636,7 @@ struct Event { assertOpcode({ PerNoteManagement }); assertMessageType({ ChannelVoice20 }); m_data[0] &= 0xFFFFFFFD; - m_data[0] |= value; + m_data[0] |= static_cast(value); } void setPerNoteReset(bool value) @@ -644,7 +644,7 @@ struct Event { assertOpcode({ PerNoteManagement }); assertMessageType({ ChannelVoice20 }); m_data[0] &= 0xFFFFFFFE; - m_data[0] |= value; + m_data[0] |= static_cast(value); } //!convert ChannelVoice from MIDI2.0 to MIDI1.0 @@ -985,13 +985,13 @@ struct Event { // simple bit shift size_t scaleBits = dstBits - srcBits; uint32_t bitShiftedValue = srcVal << scaleBits; - uint32_t srcCenter = 2 ^ (srcBits - 1); + uint32_t srcCenter = static_cast(2 ^ (srcBits - 1)); if (srcVal <= srcCenter) { return bitShiftedValue; } // expanded bit repeat scheme size_t repeatBits = srcBits - 1; - uint32_t repeatMask = (2 ^ repeatBits) - 1; + uint32_t repeatMask = static_cast((2 ^ repeatBits) - 1); uint32_t repeatValue = srcVal & repeatMask; if (scaleBits > repeatBits) { repeatValue <<= scaleBits - repeatBits; diff --git a/thirdparty/fluidsynth/fluidsynth-2.1.4/src/utils/fluid_sys.c b/thirdparty/fluidsynth/fluidsynth-2.1.4/src/utils/fluid_sys.c index 2cf4f5813dd26..1e5e0a79e116e 100644 --- a/thirdparty/fluidsynth/fluidsynth-2.1.4/src/utils/fluid_sys.c +++ b/thirdparty/fluidsynth/fluidsynth-2.1.4/src/utils/fluid_sys.c @@ -304,6 +304,9 @@ char *fluid_strtok(char **str, char *delim) return token; } +#if defined(NO_GLIB) && !defined(_MSC_VER) +#include // for usleep() +#endif /** * Suspend the execution of the current thread for the specified amount of time. * @param milliseconds to wait. From 26bc4ef26949052c075f9b4d18e07c7de589e63e Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Wed, 30 Sep 2020 14:47:26 +0200 Subject: [PATCH 2/5] Fix warnings reg. class enum and FALLTRHOUGH cleanup --- framework/midi/devtools/midiportdevmodel.cpp | 4 +- framework/midi/midievent.h | 358 ++++++++++--------- libmscore/realizedharmony.cpp | 1 - mscore/scoreitemmodel.cpp | 2 +- 4 files changed, 184 insertions(+), 181 deletions(-) diff --git a/framework/midi/devtools/midiportdevmodel.cpp b/framework/midi/devtools/midiportdevmodel.cpp index 8e36aefafd782..562867f04cb77 100644 --- a/framework/midi/devtools/midiportdevmodel.cpp +++ b/framework/midi/devtools/midiportdevmodel.cpp @@ -145,7 +145,7 @@ void MidiPortDevModel::generateMIDI20() for (auto& o : opcodes) { Event e; - e.setMessageType(Event::ChannelVoice20); + e.setMessageType(Event::MessageType::ChannelVoice20); e.setOpcode(o); e.setGroup(++group); e.setChannel(++channel); @@ -186,7 +186,7 @@ void MidiPortDevModel::generateMIDI20() case Event::Opcode::RelativeAssignableController: e.setBank(++bank); e.setIndex(++index); - /* no break */ + Q_FALLTHROUGH(); case Event::Opcode::ChannelPressure: case Event::Opcode::PitchBend: e.setData(++data); diff --git a/framework/midi/midievent.h b/framework/midi/midievent.h index 95d14dbac0dba..fe3386f5055aa 100644 --- a/framework/midi/midievent.h +++ b/framework/midi/midievent.h @@ -34,7 +34,7 @@ using EventType = Ms::EventType; * @see midi.org */ struct Event { - enum MessageType { + enum class MessageType { Utility = 0x0, SystemRealTime = 0x1, //! MIDI1.0 voice message @@ -45,7 +45,7 @@ struct Event { Data = 0x5 }; - enum Opcode { + enum class Opcode { RegisteredPerNoteController = 0b0000, AssignablePerNoteController = 0b0001, RegisteredController = 0b0010, @@ -63,14 +63,14 @@ struct Event { PerNoteManagement = 0b1111 }; - enum AttributeType { + enum class AttributeType { NoData = 0x00, ManufacturerSpecific = 0x01, ProfileSpecific = 0x02, Pitch = 0x03 }; - enum UtilityStatus { + enum class UtilityStatus { NoOperation = 0x00, JRClock = 0x01, JRTimestamp = 0x02 @@ -78,7 +78,7 @@ struct Event { Event() : m_data({ 0, 0, 0, 0 }) {} - Event(Opcode opcode, MessageType type = ChannelVoice20) + Event(Opcode opcode, MessageType type = MessageType::ChannelVoice20) { setMessageType(type); setOpcode(opcode); @@ -119,14 +119,14 @@ struct Event { || (u.byte[0] & 0xE0) ) { e.m_data[0] = (u.byte[0] << 16) | (u.byte[1] << 8) | u.byte[2]; - e.setMessageType(ChannelVoice10); + e.setMessageType(MessageType::ChannelVoice10); } return e; } uint32_t to_MIDI10Package() const { - if (messageType() == ChannelVoice10) { + if (messageType() == MessageType::ChannelVoice10) { union { unsigned char byte[4]; uint32_t uint32; @@ -145,8 +145,8 @@ struct Event { return operator!=(NOOP()) && isValid(); } - bool isChannelVoice() const { return messageType() == ChannelVoice10 || messageType() == ChannelVoice20; } - bool isChannelVoice20() const { return messageType() == ChannelVoice20; } + bool isChannelVoice() const { return messageType() == MessageType::ChannelVoice10 || messageType() == MessageType::ChannelVoice20; } + bool isChannelVoice20() const { return messageType() == MessageType::ChannelVoice20; } bool isMessageTypeIn(const std::set& types) const { return types.find(messageType()) != types.end(); } bool isOpcodeIn(const std::set& opcodes) const { return opcodes.find(opcode()) != opcodes.end(); } @@ -154,35 +154,36 @@ struct Event { bool isValid() const { switch (messageType()) { - case Utility: { - std::set statuses = { NoOperation, JRClock, JRTimestamp }; + case MessageType::Utility: { + std::set statuses = { UtilityStatus::NoOperation, UtilityStatus::JRClock, UtilityStatus::JRTimestamp }; return statuses.find(static_cast(status())) != statuses.end(); } - case SystemRealTime: - case SystemExclusiveData: - case Data: + case MessageType::SystemRealTime: + case MessageType::SystemExclusiveData: + case MessageType::Data: return true; - case ChannelVoice10: - return isOpcodeIn({ NoteOff, NoteOn, PolyPressure, ControlChange, ProgramChange, ChannelPressure, PitchBend }); - - case ChannelVoice20: - return isOpcodeIn({ RegisteredPerNoteController, - AssignablePerNoteController, - RegisteredController, - AssignableController, - RelativeRegisteredController, - RelativeAssignableController, - PerNotePitchBend, - NoteOff, - NoteOn, - PolyPressure, - ControlChange, - ProgramChange, - ChannelPressure, - PitchBend, - PerNoteManagement + case MessageType::ChannelVoice10: + return isOpcodeIn({ Opcode::NoteOff, Opcode::NoteOn, Opcode::PolyPressure, Opcode::ControlChange, Opcode::ProgramChange, + Opcode::ChannelPressure, Opcode::PitchBend }); + + case MessageType::ChannelVoice20: + return isOpcodeIn({ Opcode::RegisteredPerNoteController, + Opcode::AssignablePerNoteController, + Opcode::RegisteredController, + Opcode::AssignableController, + Opcode::RelativeRegisteredController, + Opcode::RelativeAssignableController, + Opcode::PerNotePitchBend, + Opcode::NoteOff, + Opcode::NoteOn, + Opcode::PolyPressure, + Opcode::ControlChange, + Opcode::ProgramChange, + Opcode::ChannelPressure, + Opcode::PitchBend, + Opcode::PerNoteManagement }); } return false; @@ -191,7 +192,7 @@ struct Event { MessageType messageType() const { return static_cast(m_data[0] >> 28); } void setMessageType(MessageType type) { - uint32_t mask = type << 28; + uint32_t mask = static_cast(type) << 28; m_data[0] &= 0x0FFFFFFF; m_data[0] |= mask; } @@ -214,18 +215,18 @@ struct Event { void setOpcode(Opcode code) { assertChannelVoice(); - uint32_t mask = code << 20; + uint32_t mask = static_cast(code) << 20; m_data[0] &= 0xFF0FFFFF; m_data[0] |= mask; } uint8_t status() const { - assertMessageType({ SystemRealTime, Utility }); + assertMessageType({ MessageType::SystemRealTime, MessageType::Utility }); switch (messageType()) { - case SystemRealTime: return (m_data[0] >> 16) & 0b11111111; - case Utility: return (m_data[0] >> 16) & 0b00001111; + case MessageType::SystemRealTime: return (m_data[0] >> 16) & 0b11111111; + case MessageType::Utility: return (m_data[0] >> 16) & 0b00001111; default: break; } return 0; @@ -234,7 +235,7 @@ struct Event { [[deprecated]] EventType type() const { if (isChannelVoice()) { - return static_cast(opcode() << 4); + return static_cast(static_cast(opcode()) << 4); } return EventType::ME_INVALID; } @@ -247,7 +248,7 @@ struct Event { assert(supportedTypes.find(type) != supportedTypes.end()); Opcode code = static_cast(type >> 4); - setMessageType(ChannelVoice10); + setMessageType(MessageType::ChannelVoice10); setOpcode(code); } @@ -268,12 +269,12 @@ struct Event { uint8_t note() const { - assertOpcode({ NoteOn, NoteOff, PolyPressure, - PerNotePitchBend, PerNoteManagement, - RegisteredPerNoteController, AssignablePerNoteController }); + assertOpcode({ Opcode::NoteOn, Opcode::NoteOff, Opcode::PolyPressure, + Opcode::PerNotePitchBend, Opcode::PerNoteManagement, + Opcode::RegisteredPerNoteController, Opcode::AssignablePerNoteController }); switch (messageType()) { - case ChannelVoice10: - case ChannelVoice20: return (m_data[0] >> 8) & 0x7F; + case MessageType::ChannelVoice10: + case MessageType::ChannelVoice20: return (m_data[0] >> 8) & 0x7F; break; default: assert(false); } @@ -281,9 +282,9 @@ struct Event { void setNote(uint8_t value) { - assertOpcode({ NoteOn, NoteOff, PolyPressure, - PerNotePitchBend, PerNoteManagement, - RegisteredPerNoteController, AssignablePerNoteController }); + assertOpcode({ Opcode::NoteOn, Opcode::NoteOff, Opcode::PolyPressure, + Opcode::PerNotePitchBend, Opcode::PerNoteManagement, + Opcode::RegisteredPerNoteController, Opcode::AssignablePerNoteController }); assert(value < 128); uint32_t mask = value << 8; m_data[0] &= 0xFFFF00FF; @@ -293,7 +294,7 @@ struct Event { //! return note from Pitch attribute (for NoteOn & NoteOff) events) if exists else return note() uint8_t pitchNote() const { - assertOpcode({ NoteOn, NoteOff }); + assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); if (attributeType() == AttributeType::Pitch) { return attribute() >> 9; } @@ -303,7 +304,7 @@ struct Event { //! return tuning in semitones from Pitch attribute (for NoteOn & NoteOff) events) if exists else return 0.f float pitchTuning() const { - assertOpcode({ NoteOn, NoteOff }); + assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); if (attributeType() == AttributeType::Pitch) { return (attribute() & 0x1FF) / static_cast(0x200); } @@ -319,8 +320,8 @@ struct Event { //! 4.2.14.3 @see pitchNote(), pitchTuning() void setPitchNote(uint8_t note, float tuning) { - assertOpcode({ NoteOn, NoteOff }); - assertMessageType({ ChannelVoice20 }); + assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); + assertMessageType({ MessageType::ChannelVoice20 }); setAttributeType(AttributeType::Pitch); uint16_t attribute = static_cast(tuning * 0x200); @@ -332,7 +333,7 @@ struct Event { uint16_t velocity() const { assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); - if (messageType() == ChannelVoice20) { + if (messageType() == MessageType::ChannelVoice20) { return m_data[1] >> 16; } return m_data[0] & 0x7F; @@ -342,7 +343,7 @@ struct Event { uint16_t maxVelocity() const { assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); - if (messageType() == ChannelVoice20) { + if (messageType() == MessageType::ChannelVoice20) { return 0xFFFF; } return 0x7F; @@ -352,7 +353,7 @@ struct Event { { assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); - if (messageType() == ChannelVoice20) { + if (messageType() == MessageType::ChannelVoice20) { uint32_t mask = value << 16; m_data[1] &= 0x0000FFFF; m_data[1] |= mask; @@ -380,34 +381,35 @@ struct Event { uint32_t data() const { switch (messageType()) { - case ChannelVoice10: + case MessageType::ChannelVoice10: switch (opcode()) { - case PolyPressure: - case ControlChange: + case Opcode::PolyPressure: + case Opcode::ControlChange: return m_data[0] & 0x7F; - case ChannelPressure: + case Opcode::ChannelPressure: return (m_data[0] >> 8) & 0x7F; - case PitchBend: + case Opcode::PitchBend: return ((m_data[0] & 0x7F) << 7) | ((m_data[0] & 0x7F00) >> 8); default: assert(false); } - case ChannelVoice20: + Q_FALLTHROUGH(); + case MessageType::ChannelVoice20: switch (opcode()) { - case PolyPressure: - case RegisteredPerNoteController: - case AssignablePerNoteController: - case RegisteredController: - case AssignableController: - case RelativeRegisteredController: - case RelativeAssignableController: - case ControlChange: - case ChannelPressure: - case PitchBend: - case PerNotePitchBend: + case Opcode::PolyPressure: + case Opcode::RegisteredPerNoteController: + case Opcode::AssignablePerNoteController: + case Opcode::RegisteredController: + case Opcode::AssignableController: + case Opcode::RelativeRegisteredController: + case Opcode::RelativeAssignableController: + case Opcode::ControlChange: + case Opcode::ChannelPressure: + case Opcode::PitchBend: + case Opcode::PerNotePitchBend: return m_data[1]; default: assert(false); } - + Q_FALLTHROUGH(); default:; //TODO } @@ -417,24 +419,24 @@ struct Event { void setData(uint32_t data) { switch (messageType()) { - case ChannelVoice10: + case MessageType::ChannelVoice10: switch (opcode()) { - case PolyPressure: - case ControlChange: { + case Opcode::PolyPressure: + case Opcode::ControlChange: { assert(data < 128); uint32_t mask = data & 0x7F; m_data[0] &= 0xFFFFFF00; m_data[0] |= mask; break; } - case ChannelPressure: { + case Opcode::ChannelPressure: { assert(data < 128); uint32_t mask = (data & 0x7F) << 8; m_data[0] &= 0xFFFF00FF; m_data[0] |= mask; break; } - case PitchBend: { + case Opcode::PitchBend: { data &= 0x3FFF; m_data[0] &= 0xFFFF0000; //3d byte: r,lsb 4th: r,msb @@ -445,19 +447,19 @@ struct Event { } break; - case ChannelVoice20: + case MessageType::ChannelVoice20: switch (opcode()) { - case PolyPressure: - case RegisteredPerNoteController: - case AssignablePerNoteController: - case RegisteredController: - case AssignableController: - case RelativeRegisteredController: - case RelativeAssignableController: - case ControlChange: - case ChannelPressure: - case PitchBend: - case PerNotePitchBend: + case Opcode::PolyPressure: + case Opcode::RegisteredPerNoteController: + case Opcode::AssignablePerNoteController: + case Opcode::RegisteredController: + case Opcode::AssignableController: + case Opcode::RelativeRegisteredController: + case Opcode::RelativeAssignableController: + case Opcode::ControlChange: + case Opcode::ChannelPressure: + case Opcode::PitchBend: + case Opcode::PerNotePitchBend: m_data[1] = data; break; default: assert(false); @@ -473,9 +475,9 @@ struct Event { */ float pitch() const { - assertOpcode({ PitchBend }); + assertOpcode({ Opcode::PitchBend }); switch (messageType()) { - case ChannelVoice20: return (data() - 0x80000000) / static_cast(0xFFFFFFFF); + case MessageType::ChannelVoice20: return (data() - 0x80000000) / static_cast(0xFFFFFFFF); default: /* silence */ break; } return (data() - 8192) / static_cast(0x3FFF);//MIDI1.0 @@ -483,8 +485,9 @@ struct Event { uint8_t index() const { - assertOpcode({ ControlChange, RegisteredPerNoteController, AssignablePerNoteController, - RegisteredController, AssignableController, RelativeRegisteredController, RelativeAssignableController }); + assertOpcode({ Opcode::ControlChange, Opcode::RegisteredPerNoteController, Opcode::AssignablePerNoteController, + Opcode::RegisteredController, Opcode::AssignableController, Opcode::RelativeRegisteredController, + Opcode::RelativeAssignableController }); switch (opcode()) { case Opcode::ControlChange: case Opcode::RegisteredController: @@ -503,8 +506,9 @@ struct Event { void setIndex(uint8_t value) { - assertOpcode({ ControlChange, RegisteredPerNoteController, AssignablePerNoteController, - RegisteredController, AssignableController, RelativeRegisteredController, RelativeAssignableController }); + assertOpcode({ Opcode::ControlChange, Opcode::RegisteredPerNoteController, Opcode::AssignablePerNoteController, + Opcode::RegisteredController, Opcode::AssignableController, Opcode::RelativeRegisteredController, + Opcode::RelativeAssignableController }); switch (opcode()) { case Opcode::ControlChange: @@ -532,9 +536,9 @@ struct Event { { assertOpcode({ Opcode::ProgramChange }); switch (messageType()) { - case ChannelVoice10: return (m_data[0] >> 8) & 0x7F; + case MessageType::ChannelVoice10: return (m_data[0] >> 8) & 0x7F; break; - case ChannelVoice20: return (m_data[1] >> 24) & 0x7F; + case MessageType::ChannelVoice20: return (m_data[1] >> 24) & 0x7F; break; default: assert(false); } @@ -545,13 +549,13 @@ struct Event { assertOpcode({ Opcode::ProgramChange }); assert(value < 128); switch (messageType()) { - case ChannelVoice10: { + case MessageType::ChannelVoice10: { uint32_t mask = value << 8; m_data[0] &= 0xFFFF00FF; m_data[0] |= mask; break; } - case ChannelVoice20: { + case MessageType::ChannelVoice20: { uint32_t mask = value << 24; m_data[1] &= 0x00FFFFFF; m_data[1] |= mask; @@ -563,10 +567,10 @@ struct Event { uint16_t bank() const { - assertOpcode({ ProgramChange, RegisteredController, AssignableController, RelativeRegisteredController, - RelativeAssignableController }); - assertMessageType({ ChannelVoice20 }); - if (opcode() == ProgramChange) { + assertOpcode({ Opcode::ProgramChange, Opcode::RegisteredController, Opcode::AssignableController, + Opcode::RelativeRegisteredController, Opcode::RelativeAssignableController }); + assertMessageType({ MessageType::ChannelVoice20 }); + if (opcode() == Opcode::ProgramChange) { return ((m_data[1] & 0x7F00) >> 1) | (m_data[1] & 0x7F); } return (m_data[0] >> 8) & 0x7F; @@ -574,10 +578,10 @@ struct Event { void setBank(uint16_t bank) { - assertOpcode({ ProgramChange, RegisteredController, AssignableController, RelativeRegisteredController, - RelativeAssignableController }); - assertMessageType({ ChannelVoice20 }); - if (opcode() == ProgramChange) { + assertOpcode({ Opcode::ProgramChange, Opcode::RegisteredController, Opcode::AssignableController, + Opcode::RelativeRegisteredController, Opcode::RelativeAssignableController }); + assertMessageType({ MessageType::ChannelVoice20 }); + if (opcode() == Opcode::ProgramChange) { m_data[0] |= 0x01; //set BankValid bit uint32_t mask = (bank & 0x3F80) << 8 | (bank & 0x7F); m_data[1] &= 0xFFFF0000; @@ -592,32 +596,32 @@ struct Event { bool isBankValid() const { - assertOpcode({ ProgramChange }); - assertMessageType({ ChannelVoice20 }); + assertOpcode({ Opcode::ProgramChange }); + assertMessageType({ MessageType::ChannelVoice20 }); return m_data[0] & 0x01; } AttributeType attributeType() const { assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); - assertMessageType({ ChannelVoice20 }); + assertMessageType({ MessageType::ChannelVoice20 }); return static_cast(m_data[0] & 0xFF); } void setAttributeType(AttributeType type) { assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); - assertMessageType({ ChannelVoice20 }); + assertMessageType({ MessageType::ChannelVoice20 }); m_data[0] &= 0xFFFFFF00; - m_data[0] |= type; + m_data[0] |= static_cast(type); } void setAttributeType(uint8_t type) { setAttributeType(static_cast(type)); } uint16_t attribute() const { - assertOpcode({ NoteOn, NoteOff }); - if (messageType() == ChannelVoice20) { + assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); + if (messageType() == MessageType::ChannelVoice20) { return m_data[1] & 0xFFFF; } return 0x00; @@ -625,24 +629,24 @@ struct Event { void setAttribute(uint16_t value) { - assertOpcode({ NoteOn, NoteOff }); - assertMessageType({ ChannelVoice20 }); + assertOpcode({ Opcode::NoteOn, Opcode::NoteOff }); + assertMessageType({ MessageType::ChannelVoice20 }); m_data[1] &= 0xFFFF0000; m_data[1] |= value; } void setPerNoteDetach(bool value) { - assertOpcode({ PerNoteManagement }); - assertMessageType({ ChannelVoice20 }); + assertOpcode({ Opcode::PerNoteManagement }); + assertMessageType({ MessageType::ChannelVoice20 }); m_data[0] &= 0xFFFFFFFD; m_data[0] |= static_cast(value); } void setPerNoteReset(bool value) { - assertOpcode({ PerNoteManagement }); - assertMessageType({ ChannelVoice20 }); + assertOpcode({ Opcode::PerNoteManagement }); + assertMessageType({ MessageType::ChannelVoice20 }); m_data[0] &= 0xFFFFFFFE; m_data[0] |= static_cast(value); } @@ -652,16 +656,16 @@ struct Event { { std::list events; switch (messageType()) { - case ChannelVoice10: events.push_back(*this); + case MessageType::ChannelVoice10: events.push_back(*this); break; - case ChannelVoice20: { - auto basic10Event = Event(opcode(), ChannelVoice10); + case MessageType::ChannelVoice20: { + auto basic10Event = Event(opcode(), MessageType::ChannelVoice10); basic10Event.setChannel(channel()); basic10Event.setGroup(group()); switch (opcode()) { //D2.1 - case NoteOn: - case NoteOff: { + case Opcode::NoteOn: + case Opcode::NoteOff: { auto e = basic10Event; auto v = scaleDown(velocity(), 16, 7); e.setNote(note()); @@ -676,7 +680,7 @@ struct Event { } //D2.2 - case ChannelPressure: { + case Opcode::ChannelPressure: { auto e = basic10Event; e.setData(scaleDown(data(), 32, 7)); events.push_back(e); @@ -684,17 +688,17 @@ struct Event { } //D2.3 - case AssignableController: - case RegisteredController: { + case Opcode::AssignableController: + case Opcode::RegisteredController: { std::list > controlChanges = { - { (opcode() == RegisteredController ? 101 : 99), bank() }, - { (opcode() == RegisteredController ? 100 : 98), index() }, + { (opcode() == Opcode::RegisteredController ? 101 : 99), bank() }, + { (opcode() == Opcode::RegisteredController ? 100 : 98), index() }, { 6, (data() & 0x7FFFFFFF) >> 24 }, { 38, (data() & 0x1FC0000) >> 18 } }; for (auto& c : controlChanges) { auto e = basic10Event; - e.setOpcode(ControlChange); + e.setOpcode(Opcode::ControlChange); e.setIndex(c.first); e.setData(c.second); events.push_back(e); @@ -703,10 +707,10 @@ struct Event { } //D.4 - case ProgramChange: { + case Opcode::ProgramChange: { if (isBankValid()) { auto e = basic10Event; - e.setOpcode(ControlChange); + e.setOpcode(Opcode::ControlChange); e.setIndex(0); e.setData((bank() & 0x7F00) >> 8); events.push_back(e); @@ -720,7 +724,7 @@ struct Event { break; } //D2.5 - case PitchBend: { + case Opcode::PitchBend: { auto e = basic10Event; e.setData(data()); events.push_back(e); @@ -740,44 +744,44 @@ struct Event { { Event event; switch (messageType()) { - case ChannelVoice20: return *this; + case MessageType::ChannelVoice20: return *this; break; - case ChannelVoice10: { + case MessageType::ChannelVoice10: { if (chain) { event = chain; } else { - event = Event(opcode(), ChannelVoice20); + event = Event(opcode(), MessageType::ChannelVoice20); event.setChannel(channel()); event.setGroup(group()); } switch (opcode()) { //D3.1 - case NoteOn: - case NoteOff: + case Opcode::NoteOn: + case Opcode::NoteOff: event.setNote(note()); event.setVelocity(scaleUp(velocity(), 7, 16)); if (velocity() == 0) { - event.setOpcode(NoteOff); + event.setOpcode(Opcode::NoteOff); } break; //D3.2 - case PolyPressure: + case Opcode::PolyPressure: event.setNote(note()); event.setData(scaleUp(data(), 7, 32)); break; //D3.3 - case ControlChange: { + case Opcode::ControlChange: { std::set skip = { 6, 38, 98, 99, 100, 101 }; if (skip.find(index()) == skip.end()) { break; } switch (index()) { case 99: - event.setOpcode(AssignableController); + event.setOpcode(Opcode::AssignableController); event.setBank(data()); break; case 101: - event.setOpcode(RegisteredController); + event.setOpcode(Opcode::RegisteredController); event.setBank(data()); break; case 98: @@ -800,17 +804,17 @@ struct Event { } //D3.4 - case ProgramChange: + case Opcode::ProgramChange: event.setProgram(program()); break; //D3.5 - case ChannelPressure: + case Opcode::ChannelPressure: event.setData(scaleUp(data(), 7, 32)); break; //D3.6 - case PitchBend: + case Opcode::PitchBend: event.setData(scaleUp(data(), 14, 32)); break; @@ -861,95 +865,95 @@ struct Event { }; switch (messageType()) { - case ChannelVoice10: { + case MessageType::ChannelVoice10: { str += "MIDI1.0 " + opcodeString(); str += " group: " + std::to_string(group()); str += " channel: " + std::to_string(channel()); switch (opcode()) { - case NoteOn: - case NoteOff: + case Opcode::NoteOn: + case Opcode::NoteOff: str += " note: " + std::to_string(note()) + " velocity: " + std::to_string(velocity()); break; - case PolyPressure: + case Opcode::PolyPressure: str += " note: " + std::to_string(note()) + " data: " + std::to_string(data()); break; - case ControlChange: + case Opcode::ControlChange: str += " index: " + std::to_string(index()) + " data: " + std::to_string(data()); break; - case ProgramChange: + case Opcode::ProgramChange: str += " program: " + std::to_string(program()); break; - case ChannelPressure: + case Opcode::ChannelPressure: str += " data: " + std::to_string(data()); break; - case PitchBend: + case Opcode::PitchBend: str += " value: " + std::to_string(pitch()); break; default: /* silence warning */ break; } break; } - case ChannelVoice20: { + case MessageType::ChannelVoice20: { str += "MIDI2.0 " + opcodeString(); str += " group: " + std::to_string(group()); str += " channel: " + std::to_string(channel()); switch (opcode()) { - case NoteOff: - case NoteOn: + case Opcode::NoteOff: + case Opcode::NoteOn: str += " note: " + std::to_string(note()) + " velocity: " + std::to_string(velocity()) - + " attr type: " + std::to_string(attributeType()) + + " attr type: " + std::to_string(static_cast(attributeType())) + " attr value: " + std::to_string(attribute()); if (attributeType() == AttributeType::Pitch) { str += "pitch: note:" + std::to_string(pitchNote()) + " " + std::to_string(pitchTuning()) + " semitone"; } break; - case PolyPressure: - case PerNotePitchBend: + case Opcode::PolyPressure: + case Opcode::PerNotePitchBend: str += " note: " + std::to_string(note()) + " data: " + std::to_string(data()); break; - case RegisteredPerNoteController: - case AssignablePerNoteController: + case Opcode::RegisteredPerNoteController: + case Opcode::AssignablePerNoteController: str += " note: " + std::to_string(note()) + " index: " + std::to_string(index()) + " data: " + std::to_string(data()); break; - case PerNoteManagement: + case Opcode::PerNoteManagement: str += " note: " + std::to_string(note()) + (m_data[0] & 0b10 ? " detach controller" : "") + (m_data[0] & 0b01 ? " reset controller" : ""); break; - case ControlChange: + case Opcode::ControlChange: str += " index: " + std::to_string(index()) + " data: " + std::to_string(data()); break; - case ProgramChange: + case Opcode::ProgramChange: str += " program: " + std::to_string(program()) + (isBankValid() ? " set bank: " + std::to_string(bank()) : ""); break; - case RegisteredController: - case AssignableController: - case RelativeRegisteredController: - case RelativeAssignableController: + case Opcode::RegisteredController: + case Opcode::AssignableController: + case Opcode::RelativeRegisteredController: + case Opcode::RelativeAssignableController: str += " bank: " + std::to_string(bank()) + " index: " + std::to_string(index()) + " data: " + std::to_string(data()); break; - case ChannelPressure: + case Opcode::ChannelPressure: str += " data: " + std::to_string(data()); break; - case PitchBend: + case Opcode::PitchBend: str += " value: " + std::to_string(pitch()); break; } break; } - case Utility: + case MessageType::Utility: str += "MIDI2.0 Utility "; if (m_data[0] == 0) { str += " NOOP"; @@ -957,15 +961,15 @@ struct Event { } dataToStr(); break; - case SystemRealTime: + case MessageType::SystemRealTime: str += "MIDI System"; dataToStr(); break; - case SystemExclusiveData: + case MessageType::SystemExclusiveData: str += "MIDI System Exlusive"; dataToStr(); break; - case Data: + case MessageType::Data: str += "MIDI2.0 Data"; dataToStr(); break; diff --git a/libmscore/realizedharmony.cpp b/libmscore/realizedharmony.cpp index 6056ff56d18c8..a38b0fffc7232 100644 --- a/libmscore/realizedharmony.cpp +++ b/libmscore/realizedharmony.cpp @@ -167,7 +167,6 @@ const RealizedHarmony::PitchMap RealizedHarmony::generateNotes(int rootTpc, int break; case Voicing::FOUR_NOTE: case Voicing::SIX_NOTE: - //FALLTHROUGH { //four/six note voicing, drop every other note PitchMap relIntervals = getIntervals(rootTpc, literal); diff --git a/mscore/scoreitemmodel.cpp b/mscore/scoreitemmodel.cpp index 325476d83e3d4..7a903818d50b1 100644 --- a/mscore/scoreitemmodel.cpp +++ b/mscore/scoreitemmodel.cpp @@ -51,7 +51,7 @@ QVariant ScoreItemModel::data(const QModelIndex& index, int role) const if (scoreElement->isElement()) { return toElement(scoreElement)->accessibleInfo(); } - // fallthrough + // FALLTHROUGH case Qt::ToolTipRole: case Qt::StatusTipRole: case Qt::WhatsThisRole: From 2b16eef5543bea34105645eb094e6bd09bc71697 Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Fri, 2 Oct 2020 12:41:05 +0200 Subject: [PATCH 3/5] Fix some Qt 5.15 deprecation warnings --- libmscore/staff.cpp | 4 ++-- libmscore/undo.cpp | 2 +- mu4/instruments/view/instrumentlistmodel.cpp | 4 ++++ mu4/plugins/view/pluginsmodel.cpp | 4 ++++ mu4/userscores/view/templatesmodel.cpp | 4 ++++ thirdparty/soloud/src/core/soloud_bus.cpp | 6 +++--- 6 files changed, 18 insertions(+), 6 deletions(-) diff --git a/libmscore/staff.cpp b/libmscore/staff.cpp index efe6b3b784498..f6527d319b828 100644 --- a/libmscore/staff.cpp +++ b/libmscore/staff.cpp @@ -157,7 +157,7 @@ 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)) +#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)) _brackets.swapItemsAt(oldIdx, newIdx); #else _brackets.swap(oldIdx, newIdx); @@ -179,7 +179,7 @@ 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)) +#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)) _brackets.swapItemsAt(oldIdx, newIdx); #else _brackets.swap(oldIdx, newIdx); diff --git a/libmscore/undo.cpp b/libmscore/undo.cpp index 939fb381b3815..20b2982847d60 100644 --- a/libmscore/undo.cpp +++ b/libmscore/undo.cpp @@ -2067,7 +2067,7 @@ void RemoveExcerpt::redo(EditData*) void SwapExcerpt::flip(EditData*) { -#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) +#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)) score->excerpts().swapItemsAt(pos1, pos2); #else score->excerpts().swap(pos1, pos2); diff --git a/mu4/instruments/view/instrumentlistmodel.cpp b/mu4/instruments/view/instrumentlistmodel.cpp index 25badd3c2abab..85ea9641585d7 100644 --- a/mu4/instruments/view/instrumentlistmodel.cpp +++ b/mu4/instruments/view/instrumentlistmodel.cpp @@ -204,7 +204,11 @@ void InstrumentListModel::unselectInstrument(const QString& id) void InstrumentListModel::swapSelectedInstruments(int firstIndex, int secondIndex) { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)) + m_selectedInstruments.swapItemsAt(firstIndex, secondIndex); +#else m_selectedInstruments.swap(firstIndex, secondIndex); +#endif emit selectedInstrumentsChanged(); } diff --git a/mu4/plugins/view/pluginsmodel.cpp b/mu4/plugins/view/pluginsmodel.cpp index 7d006420835f7..753e26d3051c2 100644 --- a/mu4/plugins/view/pluginsmodel.cpp +++ b/mu4/plugins/view/pluginsmodel.cpp @@ -176,7 +176,11 @@ QStringList PluginsModel::categories() const result << plugin.category; } +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) // ?? + return result.values(); +#else return result.toList(); +#endif } void PluginsModel::updatePlugin(const PluginInfo& plugin) diff --git a/mu4/userscores/view/templatesmodel.cpp b/mu4/userscores/view/templatesmodel.cpp index 38a36e6bf67bb..cd6d865ee5d8a 100644 --- a/mu4/userscores/view/templatesmodel.cpp +++ b/mu4/userscores/view/templatesmodel.cpp @@ -31,7 +31,11 @@ void TemplatesModel::load() QStringList TemplatesModel::categoriesTitles() const { +#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) // ?? + return m_visibleCategoriesTitles.values(); +#else return m_visibleCategoriesTitles.toList(); +#endif } QString TemplatesModel::currentTemplatePath() const diff --git a/thirdparty/soloud/src/core/soloud_bus.cpp b/thirdparty/soloud/src/core/soloud_bus.cpp index 8d6800dbaff5d..78a1fa83ffb3b 100644 --- a/thirdparty/soloud/src/core/soloud_bus.cpp +++ b/thirdparty/soloud/src/core/soloud_bus.cpp @@ -41,8 +41,8 @@ namespace SoLoud unsigned int BusInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize) { - int handle = mParent->mChannelHandle; - if (handle == 0) + int _handle = mParent->mChannelHandle; + if (_handle == 0) { // Avoid reuse of scratch data if this bus hasn't played anything yet unsigned int i; @@ -58,7 +58,7 @@ namespace SoLoud mScratch.init(mScratchSize * MAX_CHANNELS); } - s->mixBus_internal(aBuffer, aSamplesToRead, aBufferSize, mScratch.mData, handle, mSamplerate, mChannels); + s->mixBus_internal(aBuffer, aSamplesToRead, aBufferSize, mScratch.mData, _handle, mSamplerate, mChannels); int i; if (mParent->mFlags & AudioSource::VISUALIZATION_DATA) From cd679ce3b9b9e321d49fb32a05217e060cd92ef7 Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Fri, 2 Oct 2020 13:35:44 +0200 Subject: [PATCH 4/5] Fix a C++17 warning --- mu4/palette/internal/palette/palette.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mu4/palette/internal/palette/palette.cpp b/mu4/palette/internal/palette/palette.cpp index 893294fe17304..c3a2411a9c704 100644 --- a/mu4/palette/internal/palette/palette.cpp +++ b/mu4/palette/internal/palette/palette.cpp @@ -112,7 +112,7 @@ Palette::Palette(std::unique_ptr pp, QWidget* parent) const auto allCells = pp->takeCells(0, pp->ncells()); for (const PaletteCellPtr& cell : allCells) { - Element* e = cell.unique() ? cell->element.release() : (cell->element ? cell->element->clone() : nullptr); + Element* e = (cell.use_count() == 1) ? cell->element.release() : (cell->element ? cell->element->clone() : nullptr); if (e) { PaletteCell* newCell = append(e, cell->name, cell->tag, cell->mag); newCell->drawStaff = cell->drawStaff; From e693c56dadcdbde3a7460079466e447cc4c6f906 Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Sat, 3 Oct 2020 16:44:02 +0200 Subject: [PATCH 5/5] Make Qt 5.15.0 the minimum requirement and remove all conditions checking for Qt versions --- CMakeLists.txt | 6 +--- awl/pitchlabel.cpp | 5 ---- awl/poslabel.cpp | 8 ------ framework/ui/view/qmldialog.cpp | 4 --- .../view/validators/doubleinputvalidator.cpp | 4 --- libmscore/chordlist.cpp | 12 -------- libmscore/figuredbass.cpp | 4 --- libmscore/harmony.cpp | 4 --- libmscore/lyrics.cpp | 4 --- libmscore/mscore.cpp | 14 ---------- libmscore/page.cpp | 13 ++------- libmscore/read114.cpp | 4 --- libmscore/read206.cpp | 4 --- libmscore/scorediff.cpp | 7 ----- libmscore/staff.cpp | 8 ------ libmscore/undo.cpp | 4 --- libmscore/volta.cpp | 4 --- libmscore/xmlwriter.cpp | 21 ++++++-------- mscore/chordview.cpp | 9 ------ mscore/cloud/uploadscoredialog.cpp | 4 --- mscore/debugger/debugger.cpp | 4 --- mscore/drumview.cpp | 9 ------ mscore/events.cpp | 4 --- mscore/fotomode.cpp | 6 ++-- mscore/importmidi_ui/importmidi_delegate.cpp | 4 --- mscore/importmidi_ui/importmidi_panel.cpp | 4 --- mscore/musescore.cpp | 24 +++++++--------- mscore/navigator.cpp | 4 --- mscore/pianoroll/pianoview.cpp | 17 ----------- mscore/plugin/qmledit.cpp | 4 --- mscore/qml/nativemenu.h | 4 --- mscore/qmldockwidget.cpp | 11 -------- mscore/scorePreview.cpp | 4 --- mscore/script/script.cpp | 8 ++---- mscore/script/testscript.cpp | 10 ++----- mscore/shortcut.cpp | 4 --- mscore/svggenerator.cpp | 28 ++++++++----------- mu4/cloud/internal/cloudmanager.cpp | 4 --- .../internal/guitarpro/importgtp-gp6.cpp | 4 --- .../internal/guitarpro/importgtp.cpp | 5 ---- .../internal/musedata/musedata.cpp | 4 --- .../internal/musicxml/importmxmlpass2.cpp | 4 --- mu4/importexport/internal/ove/ove.cpp | 8 ------ mu4/instruments/view/instrumentlistmodel.cpp | 4 --- .../internal/palette/paletteworkspace.cpp | 18 ------------ .../internal/palette/paletteworkspace.h | 2 -- .../qml/MuseScore/Palette/PaletteTree.qml | 6 ++-- mu4/plugins/api/qmlpluginapi.cpp | 22 --------------- mu4/plugins/api/util.h | 4 --- mu4/plugins/view/pluginsmodel.cpp | 4 --- mu4/userscores/view/templatesmodel.cpp | 4 --- thirdparty/google_analytics/ganalytics.cpp | 13 ++++++--- thirdparty/singleapp/src/qtlocalpeer.cpp | 2 +- 53 files changed, 53 insertions(+), 347 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 49aea57e5c17f..d104da4f8be46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,11 +74,7 @@ endif (BUILD_WEBENGINE) set(SCRIPT_INTERFACE TRUE) # Look for Qt5 -if (SCRIPT_INTERFACE) -SET(QT_MIN_VERSION "5.8.0") -else (SCRIPT_INTERFACE) -SET(QT_MIN_VERSION "5.7.0") -endif (SCRIPT_INTERFACE) +SET(QT_MIN_VERSION "5.15.0") # Include modules set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build" ${CMAKE_MODULE_PATH}) include (FindQt5) diff --git a/awl/pitchlabel.cpp b/awl/pitchlabel.cpp index 93cef715c709c..1e4414cb7136d 100644 --- a/awl/pitchlabel.cpp +++ b/awl/pitchlabel.cpp @@ -57,13 +57,8 @@ 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()); } diff --git a/awl/poslabel.cpp b/awl/poslabel.cpp index 6ec9bc53cca32..29021f721eee1 100644 --- a/awl/poslabel.cpp +++ b/awl/poslabel.cpp @@ -68,19 +68,11 @@ 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()); } diff --git a/framework/ui/view/qmldialog.cpp b/framework/ui/view/qmldialog.cpp index ec964aeb094a1..c69e1a8e13aa2 100644 --- a/framework/ui/view/qmldialog.cpp +++ b/framework/ui/view/qmldialog.cpp @@ -63,11 +63,7 @@ void QmlDialog::componentComplete() if (m_content) { QQmlEngine* engine = nullptr; -#if QT_VERSION < QT_VERSION_CHECK(5, 12, 0) - engine = framework::ioc()->resolve("appshell")->qmlEngine(); -#else engine = m_content->engine(); -#endif m_view = new QQuickView(engine, nullptr); m_view->setResizeMode(QQuickView::SizeRootObjectToView); diff --git a/framework/uicomponents/view/validators/doubleinputvalidator.cpp b/framework/uicomponents/view/validators/doubleinputvalidator.cpp index 0f5d96a8eded1..50f9cb10b1249 100644 --- a/framework/uicomponents/view/validators/doubleinputvalidator.cpp +++ b/framework/uicomponents/view/validators/doubleinputvalidator.cpp @@ -27,11 +27,7 @@ void DoubleInputValidator::fixup(QString& string) const 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/libmscore/chordlist.cpp b/libmscore/chordlist.cpp index 87b096d06ef90..90cc671ddb676 100644 --- a/libmscore/chordlist.cpp +++ b/libmscore/chordlist.cpp @@ -29,11 +29,7 @@ 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]) { @@ -320,18 +316,10 @@ 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/figuredbass.cpp b/libmscore/figuredbass.cpp index cfceecf4e13ab..4212ea77b3503 100644 --- a/libmscore/figuredbass.cpp +++ b/libmscore/figuredbass.cpp @@ -1389,11 +1389,7 @@ 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 16a0017e26871..17cc3d628822d 100644 --- a/libmscore/harmony.cpp +++ b/libmscore/harmony.cpp @@ -2103,11 +2103,7 @@ 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/lyrics.cpp b/libmscore/lyrics.cpp index 10d6e7e0e89e3..3934a55832186 100644 --- a/libmscore/lyrics.cpp +++ b/libmscore/lyrics.cpp @@ -402,11 +402,7 @@ 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/mscore.cpp b/libmscore/mscore.cpp index 906d95faa70da..8709f7e7bf6f8 100644 --- a/libmscore/mscore.cpp +++ b/libmscore/mscore.cpp @@ -396,20 +396,6 @@ void MScore::init() } } -#endif -// Workaround for QTBUG-73241 (solved in Qt 5.12.2) in Windows 10, see https://musescore.org/en/node/280244 -#if defined(Q_OS_WIN) && (QT_VERSION < QT_VERSION_CHECK(5, 12, 2)) - if (QOperatingSystemVersion::current().majorVersion() >= 10) { - const QDir additionalFontsDir(QString("%1/Microsoft/Windows/Fonts").arg(QStandardPaths::writableLocation(QStandardPaths:: - GenericDataLocation))); - if (additionalFontsDir.exists()) { - QFileInfoList fileList = additionalFontsDir.entryInfoList(); - for (int i = 0; i < fileList.size(); ++i) { - QFileInfo fileInfo = fileList.at(i); - QFontDatabase::addApplicationFont(fileInfo.filePath()); - } - } - } #endif initScoreFonts(); StaffType::initStaffTypes(); diff --git a/libmscore/page.cpp b/libmscore/page.cpp index 6773bcf4e608a..f912c7fa3fc37 100644 --- a/libmscore/page.cpp +++ b/libmscore/page.cpp @@ -356,17 +356,10 @@ QString Page::replaceTextMacros(const QString& s) const case 'D': { QString creationDate = score()->metaTag("creationDate"); - if (creationDate.isNull()) -#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) - { // ToDo for Qt 5.15: Qt::DefaultLocaleShortDate vs. QLocale ?? + if (creationDate.isNull()) { + // 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 { + } else { // ToDo for Qt 5.15: Qt::DefaultLocaleShortDate vs. QLocale ?? d += QDate::fromString(creationDate, Qt::ISODate).toString(Qt::DefaultLocaleShortDate); } diff --git a/libmscore/read114.cpp b/libmscore/read114.cpp index b237046b72c85..e9d9bac794725 100644 --- a/libmscore/read114.cpp +++ b/libmscore/read114.cpp @@ -1303,11 +1303,7 @@ 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 819753e6afb87..aa2f3ec50188d 100644 --- a/libmscore/read206.cpp +++ b/libmscore/read206.cpp @@ -2435,11 +2435,7 @@ 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/scorediff.cpp b/libmscore/scorediff.cpp index ab69129b47c2b..0e22f828c687f 100644 --- a/libmscore/scorediff.cpp +++ b/libmscore/scorediff.cpp @@ -127,17 +127,10 @@ 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/staff.cpp b/libmscore/staff.cpp index f6527d319b828..3f6a7f3a752fe 100644 --- a/libmscore/staff.cpp +++ b/libmscore/staff.cpp @@ -157,11 +157,7 @@ void Staff::swapBracket(int oldIdx, int newIdx) fillBrackets(idx); _brackets[oldIdx]->setColumn(newIdx); _brackets[newIdx]->setColumn(oldIdx); -#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)) _brackets.swapItemsAt(oldIdx, newIdx); -#else - _brackets.swap(oldIdx, newIdx); -#endif cleanBrackets(); } @@ -179,11 +175,7 @@ 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, 13, 0)) _brackets.swapItemsAt(oldIdx, newIdx); -#else - _brackets.swap(oldIdx, newIdx); -#endif } cleanBrackets(); } diff --git a/libmscore/undo.cpp b/libmscore/undo.cpp index 20b2982847d60..4d8da8c2aed52 100644 --- a/libmscore/undo.cpp +++ b/libmscore/undo.cpp @@ -2067,11 +2067,7 @@ void RemoveExcerpt::redo(EditData*) void SwapExcerpt::flip(EditData*) { -#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)) score->excerpts().swapItemsAt(pos1, pos2); -#else - score->excerpts().swap(pos1, pos2); -#endif score->setExcerptsChanged(true); } diff --git a/libmscore/volta.cpp b/libmscore/volta.cpp index cf6fc4bb129f7..db9bfaf54ba69 100644 --- a/libmscore/volta.cpp +++ b/libmscore/volta.cpp @@ -145,11 +145,7 @@ 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 f2a22d240e17a..199fad0a97f10 100644 --- a/libmscore/xmlwriter.cpp +++ b/libmscore/xmlwriter.cpp @@ -14,11 +14,6 @@ #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 @@ -78,7 +73,7 @@ void XmlWriter::header() void XmlWriter::stag(const QString& s) { putLevel(); - *this << '<' << s << '>' << endl; + *this << '<' << s << '>' << Qt::endl; stack.append(s.split(' ')[0]); } @@ -104,7 +99,7 @@ void XmlWriter::stag(const QString& name, const ScoreElement* se, const QString& if (!attributes.isEmpty()) { *this << ' ' << attributes; } - *this << '>' << endl; + *this << '>' << Qt::endl; stack.append(name); if (_recordElements) { @@ -120,7 +115,7 @@ void XmlWriter::stag(const QString& name, const ScoreElement* se, const QString& void XmlWriter::etag() { putLevel(); - *this << "' << endl; + *this << "' << Qt::endl; } //--------------------------------------------------------- @@ -138,7 +133,7 @@ void XmlWriter::tagE(const char* format, ...) vsnprintf(buffer, BS, format, args); *this << buffer; va_end(args); - *this << "/>" << endl; + *this << "/>" << Qt::endl; } //--------------------------------------------------------- @@ -169,7 +164,7 @@ void XmlWriter::ntag(const char* name) void XmlWriter::netag(const char* s) { - *this << "' << endl; + *this << "' << Qt::endl; } //--------------------------------------------------------- @@ -325,7 +320,7 @@ void XmlWriter::tag(const char* name, const QWidget* g) void XmlWriter::comment(const QString& text) { putLevel(); - *this << "" << endl; + *this << "" << Qt::endl; } //--------------------------------------------------------- @@ -381,7 +376,7 @@ void XmlWriter::dump(int len, const unsigned char* p) for (int i = 0; i < len; ++i, ++col) { if (col >= 16) { setFieldWidth(0); - *this << endl; + *this << Qt::endl; col = 0; putLevel(); setFieldWidth(5); @@ -389,7 +384,7 @@ void XmlWriter::dump(int len, const unsigned char* p) *this << (p[i] & 0xff); } if (col) { - *this << endl << dec; + *this << Qt::endl << Qt::dec; } setFieldWidth(0); setIntegerBase(10); diff --git a/mscore/chordview.cpp b/mscore/chordview.cpp index eae43904d9f7f..a05d35ff63555 100644 --- a/mscore/chordview.cpp +++ b/mscore/chordview.cpp @@ -415,17 +415,8 @@ 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/uploadscoredialog.cpp b/mscore/cloud/uploadscoredialog.cpp index ec35b184539ed..f1a16d212a67c 100644 --- a/mscore/cloud/uploadscoredialog.cpp +++ b/mscore/cloud/uploadscoredialog.cpp @@ -101,11 +101,7 @@ void UploadScoreDialog::upload(int nid) { Score* score = mscore->currentScore()->masterScore(); const QString scoreTitle = title->text().trimmed().isEmpty() ? score->title() : title->text(); -#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/debugger/debugger.cpp b/mscore/debugger/debugger.cpp index 323a1cd5de091..571faca401f51 100644 --- a/mscore/debugger/debugger.cpp +++ b/mscore/debugger/debugger.cpp @@ -1873,11 +1873,7 @@ 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 fdc50cabd5f2f..79eae01598e2f 100644 --- a/mscore/drumview.cpp +++ b/mscore/drumview.cpp @@ -417,17 +417,8 @@ 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/events.cpp b/mscore/events.cpp index 4e7b728fc19c0..e905e9da6eb7a 100644 --- a/mscore/events.cpp +++ b/mscore/events.cpp @@ -179,11 +179,7 @@ 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/fotomode.cpp b/mscore/fotomode.cpp index 2a2fc5df9c065..1c1ed052aa6d7 100644 --- a/mscore/fotomode.cpp +++ b/mscore/fotomode.cpp @@ -378,10 +378,8 @@ void ScoreView::fotoContextPopup(QContextMenuEvent* ev) tr("Set output resolution for PNG"), preferences.getDouble(PREF_EXPORT_PNG_RESOLUTION), 16.0, 2400.0, 1, - &ok -#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) //??? - , {}, 1.0 -#endif + &ok, + {}, 1.0 ); if (ok) { preferences.setPreference(PREF_EXPORT_PNG_RESOLUTION, resolution); diff --git a/mscore/importmidi_ui/importmidi_delegate.cpp b/mscore/importmidi_ui/importmidi_delegate.cpp index b23df6d84f334..bbd8e6a136d05 100644 --- a/mscore/importmidi_ui/importmidi_delegate.cpp +++ b/mscore/importmidi_ui/importmidi_delegate.cpp @@ -298,11 +298,7 @@ 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 228f36d4ad8f9..4f21867bd89e5 100644 --- a/mscore/importmidi_ui/importmidi_panel.cpp +++ b/mscore/importmidi_ui/importmidi_panel.cpp @@ -156,11 +156,7 @@ 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/musescore.cpp b/mscore/musescore.cpp index 0b3f62b8d40f2..dcb5c5296bd27 100644 --- a/mscore/musescore.cpp +++ b/mscore/musescore.cpp @@ -191,10 +191,6 @@ 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; @@ -3643,10 +3639,10 @@ bool MuseScore::runTestScripts(const QStringList& scriptFiles) while (!scores().empty()) { closeScore(scores().back()); } - QTextStream(stdout) << "Start test: " << scriptFile << endl; + QTextStream(stdout) << "Start test: " << scriptFile << Qt::endl; std::unique_ptr