|
From: Tapio V. <aa...@us...> - 2011-02-24 07:28:06
|
Author: Tapio Vierros <tap...@gm...>
Date: Thu Feb 24 09:27:28 2011 +0200
Tweak current phrase display.
---
editor.ui | 2 +-
editorapp.cc | 3 ++-
notegraphwidget.cc | 15 +++++++++++----
3 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/editor.ui b/editor.ui
index 3894a64..2267501 100644
--- a/editor.ui
+++ b/editor.ui
@@ -211,7 +211,7 @@
</property>
</spacer>
</item>
- <item row="4" column="0">
+ <item row="4" column="0" colspan="4">
<widget class="QLabel" name="lblCurrentSentence">
<property name="text">
<string>Current phrase:</string>
diff --git a/editorapp.cc b/editorapp.cc
index 9a0c55f..e7d35b9 100644
--- a/editorapp.cc
+++ b/editorapp.cc
@@ -267,7 +267,8 @@ void EditorApp::updateNoteInfo(NoteLabel *note)
// These are only available for single note selections
ui.cmdSplit->setEnabled(true);
ui.cmdInsert->setEnabled(true);
- ui.lblCurrentSentence->setText(tr("Current phrase:") + " <b>" + noteGraph->getCurrentSentence() + "</b>");
+ ui.lblCurrentSentence->setText(tr("Current phrase: ")
+ + "<small>" + noteGraph->getPrevSentence() + "</small> <b>" + noteGraph->getCurrentSentence() + "</b>");
}
// The next ones are available also for multi-note selections
ui.cmbNoteType->setEnabled(true);
diff --git a/notegraphwidget.cc b/notegraphwidget.cc
index b2af794..6349ba4 100644
--- a/notegraphwidget.cc
+++ b/notegraphwidget.cc
@@ -650,6 +650,10 @@ QString NoteGraphWidget::getCurrentSentence() const
QString lyrics;
if (!m_notes.isEmpty() && selectedNote()) {
int id = getNoteLabelId(selectedNote());
+ // Get to phrase beginning
+ while (id >= 0 && !m_notes[id]->note().lineBreak) --id;
+ if (id < 0) return "";
+ // Now loop the phrase
for (int i = id; i < m_notes.size(); ++i) {
if (i != id && m_notes[i]->note().lineBreak) break;
// Selected notes are highlighted with different color
@@ -668,12 +672,15 @@ QString NoteGraphWidget::getPrevSentence() const
QString lyrics;
if (!m_notes.isEmpty() && selectedNote()) {
// First find the previous start
- int id = getNoteLabelId(selectedNote()), i = id-1;
- for (; i >= 0 && !m_notes[i]->note().lineBreak; --i) ;
- if (i < 0) return "";
+ int id = getNoteLabelId(selectedNote());
+ while (id >= 0 && !m_notes[id]->note().lineBreak) --id;
+ if (id < 0) return "";
+ --id;
+ while (id >= 0 && !m_notes[id]->note().lineBreak) --id;
+ if (id < 0) return "";
// Now get the sentence
- for (id = i; i < m_notes.size(); ++i) {
+ for (int i = id; i < m_notes.size(); ++i) {
if (i != id && m_notes[i]->note().lineBreak) break;
lyrics += m_notes[i]->lyric() + " ";
}
|