From 65f5026ee44ebf74a873ec8b8f59a05e742a778d Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Tue, 30 Aug 2022 10:16:28 -0500 Subject: [PATCH] make sure to display spaces in lyrics as separate slides --- src/songsqlmodel.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/songsqlmodel.cpp b/src/songsqlmodel.cpp index 602fef8..3a8991c 100644 --- a/src/songsqlmodel.cpp +++ b/src/songsqlmodel.cpp @@ -158,6 +158,7 @@ QStringList SongSqlModel::getLyricList(const int &row) { } QStringList rawLyrics = recordData.value("lyrics").toString().split("\n"); + qDebug() << rawLyrics; QStringList lyrics; QStringList vorder = recordData.value("vorder").toString().split(" "); @@ -175,7 +176,7 @@ QStringList SongSqlModel::getLyricList(const int &row) { QString verse; QString vtitle; QString line; - QMap verses; + QMultiMap verses; //TODO make sure to split empty line in verse into two slides @@ -190,6 +191,19 @@ QStringList SongSqlModel::getLyricList(const int &row) { continue; } } else if (keywords.contains(line)) { + // qDebug() << verse; + verse = verse.trimmed(); + if (verse.contains("\n\n")) { + qDebug() << "THIS IS A EMPTY SLIDE!" << verse; + QStringList multiverses = verse.split("\n\n"); + foreach (verse, multiverses) + verses.insert(vtitle, verse); + verse.clear(); + multiverses.clear(); + vtitle = line; + recordVerse = false; + continue; + } verses.insert(vtitle, verse); verse.clear(); vtitle = line; @@ -215,11 +229,14 @@ QStringList SongSqlModel::getLyricList(const int &row) { qDebug() << lyrics; return lyrics; } + // this function appends the verse that matches the verse order from the map foreach (const QString &vstr, vorder) { foreach (line, rawLyrics) { if (line.startsWith(vstr.at(0)) && line.endsWith(vstr.at(1))) { - lyrics.append(verses[line]); + QList values = verses.values(line); + for (int i = values.size(); i > 0;) + lyrics.append(values.at(--i)); } } }