aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmmpui')
-rw-r--r--src/qmmpui/cueeditor.cpp8
-rw-r--r--src/qmmpui/cueeditor_p.h4
-rw-r--r--src/qmmpui/detailsdialog.cpp9
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