diff --git a/include/Song.h b/include/Song.h index d398a168c..473678281 100644 --- a/include/Song.h +++ b/include/Song.h @@ -441,7 +441,7 @@ private: SaveOptions m_saveOptions; - QStringList m_errors; + QHash m_errors; PlayModes m_playMode; PlayPos m_playPos[Mode_Count]; diff --git a/src/core/Song.cpp b/src/core/Song.cpp index b12b98573..3a7d34c43 100644 --- a/src/core/Song.cpp +++ b/src/core/Song.cpp @@ -1421,21 +1421,34 @@ void Song::clearErrors() void Song::collectError( const QString error ) { - m_errors.append( error ); + if (!m_errors.contains(error)) { m_errors[error] = 1; } + else { m_errors[ error ]++; } } bool Song::hasErrors() { - return ( m_errors.length() > 0 ); + return !(m_errors.isEmpty()); } QString Song::errorSummary() { - QString errors = m_errors.join("\n") + '\n'; + QString errors; + + auto i = m_errors.constBegin(); + while (i != m_errors.constEnd()) + { + errors.append( i.key() ); + if( i.value() > 1 ) + { + errors.append( tr(" (repeated %1 times)").arg( i.value() ) ); + } + errors.append("\n"); + ++i; + } errors.prepend( "\n\n" ); errors.prepend( tr( "The following errors occurred while loading: " ) );