diff options
| -rw-r--r-- | src/qmmpui/cueeditor.cpp | 8 | ||||
| -rw-r--r-- | src/qmmpui/cueeditor_p.h | 4 | ||||
| -rw-r--r-- | src/qmmpui/detailsdialog.cpp | 9 |
3 files changed, 19 insertions, 2 deletions
diff --git a/src/qmmpui/cueeditor.cpp b/src/qmmpui/cueeditor.cpp index 221abee94..451fa6a77 100644 --- a/src/qmmpui/cueeditor.cpp +++ b/src/qmmpui/cueeditor.cpp @@ -35,6 +35,7 @@ CueEditor::CueEditor(MetaDataModel *model, const TrackInfo &info, QWidget *paren { m_ui->setupUi(this); m_ui->plainTextEdit->setPlainText(model->cue()); + m_parser.loadData(model->cue().toUtf8()); QSettings settings(Qmmp::configFile(), QSettings::IniFormat); m_lastDir = settings.value("CueEditor/last_dir", QDir::homePath()).toString(); m_editable = m_model && (m_model->dialogHints() & MetaDataModel::IsCueEditable) && !m_model->isReadOnly(); @@ -54,11 +55,13 @@ void CueEditor::save() if(data.isEmpty()) { m_model->removeCue(); + m_parser.clear(); } else { data.append(QChar::LineFeed); m_model->setCue(data); + m_parser.loadData(data.toUtf8()); } } @@ -67,6 +70,11 @@ bool CueEditor::isEditable() const return m_editable; } +int CueEditor::trackCount() const +{ + return m_parser.count(); +} + void CueEditor::on_loadButton_clicked() { QString path = FileDialog::getOpenFileName(this, tr("Open CUE File"), diff --git a/src/qmmpui/cueeditor_p.h b/src/qmmpui/cueeditor_p.h index 32c909af0..2b45aa861 100644 --- a/src/qmmpui/cueeditor_p.h +++ b/src/qmmpui/cueeditor_p.h @@ -22,7 +22,7 @@ #define CUEEDITOR_P_H #include <QWidget> - +#include <qmmp/cueparser.h> #include <qmmp/trackinfo.h> namespace Ui { @@ -41,6 +41,7 @@ public: void save(); bool isEditable() const; + int trackCount() const; private slots: void on_loadButton_clicked(); @@ -53,6 +54,7 @@ private: QString m_lastDir; bool m_editable; TrackInfo m_info; + CueParser m_parser; }; #endif // CUEEDITOR_P_H diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp index bba2d9f6a..c1ef22904 100644 --- a/src/qmmpui/detailsdialog.cpp +++ b/src/qmmpui/detailsdialog.cpp @@ -123,8 +123,15 @@ void DetailsDialog::on_buttonBox_clicked(QAbstractButton *button) } else if((cueEditor = qobject_cast<CueEditor *>(m_ui->tabWidget->currentWidget()))) { - cueEditor->save(); + //update all cue tracks + int count = cueEditor->trackCount(); + QString path = m_info.path(); + path.remove(QRegularExpression("#\\d+$")); + for(int i = 0; i < count; ++i) + m_modifiedPaths.insert(QString("%1#%2").arg(path).arg(i + 1)); m_modifiedPaths.insert(m_info.path()); + + cueEditor->save(); } } else |
