aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/cue
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Input/cue')
-rw-r--r--src/plugins/Input/cue/cuefile.cpp20
-rw-r--r--src/plugins/Input/cue/cuefile.h2
-rw-r--r--src/plugins/Input/cue/cuemetadatamodel.cpp42
-rw-r--r--src/plugins/Input/cue/cuemetadatamodel.h6
4 files changed, 53 insertions, 17 deletions
diff --git a/src/plugins/Input/cue/cuefile.cpp b/src/plugins/Input/cue/cuefile.cpp
index 5bcedff49..15b40093a 100644
--- a/src/plugins/Input/cue/cuefile.cpp
+++ b/src/plugins/Input/cue/cuefile.cpp
@@ -34,13 +34,16 @@
CueFile::CueFile(const QString &path) : CueParser()
{
- QString filePath = path;
+ m_filePath = path;
+
if(path.contains("://"))
{
- filePath.remove("cue://");
- filePath.remove(QRegularExpression("#\\d+$"));
+ m_filePath.remove("cue://");
+ m_filePath.remove(QRegularExpression("#\\d+$"));
}
- QFile file(filePath);
+ qDebug("+%s+", qPrintable(m_filePath));
+
+ QFile file(m_filePath);
if (!file.open(QIODevice::ReadOnly))
{
qDebug("CueFile: error: %s", qPrintable(file.errorString()));
@@ -81,10 +84,10 @@ CueFile::CueFile(const QString &path) : CueParser()
settings.endGroup();
//qDebug("CUEParser: using %s encoding", codec->name().constData());
loadData(data, codec);
- setUrl("cue", filePath);
+ setUrl("cue", m_filePath);
for(const QString &dataFileName : files())
{
- QString dataFilePath = getDirtyPath(filePath, QFileInfo(filePath).dir().filePath(dataFileName));
+ QString dataFilePath = getDirtyPath(m_filePath, QFileInfo(m_filePath).dir().filePath(dataFileName));
m_dataFiles.insert(dataFileName, dataFilePath);
QList<TrackInfo *> pl = MetaDataManager::instance()->createPlayList(dataFilePath, TrackInfo::Properties);
if(!pl.isEmpty())
@@ -110,6 +113,11 @@ CueFile::CueFile(const QString &path) : CueParser()
CueFile::~CueFile()
{}
+QString CueFile::cueFilePath() const
+{
+ return m_filePath;
+}
+
QString CueFile::dataFilePath(int track) const
{
return m_dataFiles.value(file(track));
diff --git a/src/plugins/Input/cue/cuefile.h b/src/plugins/Input/cue/cuefile.h
index 96c26144e..673927c2c 100644
--- a/src/plugins/Input/cue/cuefile.h
+++ b/src/plugins/Input/cue/cuefile.h
@@ -38,6 +38,7 @@ public:
explicit CueFile(const QString &path);
~CueFile();
+ QString cueFilePath() const;
QString dataFilePath(int track) const;
QStringList dataFilePaths() const;
@@ -46,6 +47,7 @@ private:
QString getDirtyPath(const QString &cue_path, const QString &path);
QMap<QString, QString> m_dataFiles; //name, full path
bool m_dirty;
+ QString m_filePath;
};
diff --git a/src/plugins/Input/cue/cuemetadatamodel.cpp b/src/plugins/Input/cue/cuemetadatamodel.cpp
index 676a8d936..8e58e47b6 100644
--- a/src/plugins/Input/cue/cuemetadatamodel.cpp
+++ b/src/plugins/Input/cue/cuemetadatamodel.cpp
@@ -18,31 +18,37 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
+#include <QFileInfo>
+#include <QtDebug>
#include <qmmp/metadatamanager.h>
#include "cuefile.h"
#include "cuemetadatamodel.h"
-CUEMetaDataModel::CUEMetaDataModel(const QString &url) : MetaDataModel(true)
+CUEMetaDataModel::CUEMetaDataModel(const QString &url) : MetaDataModel(false, IsCueEditable)
{
- m_cueFile = new CueFile(url);
- if (m_cueFile->count() == 0)
+ qDebug() << Q_FUNC_INFO << url;
+
+ CueFile file(url);
+ if (file.isEmpty())
{
qWarning("CUEMetaDataModel: invalid cue file");
return;
}
int track = url.section("#", -1).toInt();
- m_path = m_cueFile->dataFilePath(track);
+ m_dataFilePath = file.dataFilePath(track);
+ m_cueFilePath = file.cueFilePath();
+ qDebug() << m_cueFilePath << url;
+ if(!QFileInfo(m_cueFilePath).isWritable())
+ setReadOnly(true);
}
CUEMetaDataModel::~CUEMetaDataModel()
-{
- delete m_cueFile;
-}
+{}
QList<MetaDataItem> CUEMetaDataModel::extraProperties() const
{
QList<MetaDataItem> ep;
- MetaDataModel *model = MetaDataManager::instance()->createMetaDataModel(m_path, true);
+ MetaDataModel *model = MetaDataManager::instance()->createMetaDataModel(m_dataFilePath, true);
if(model)
{
ep = model->extraProperties();
@@ -53,5 +59,23 @@ QList<MetaDataItem> CUEMetaDataModel::extraProperties() const
QString CUEMetaDataModel::coverPath() const
{
- return MetaDataManager::instance()->findCoverFile(m_path);
+ return MetaDataManager::instance()->findCoverFile(m_dataFilePath);
+}
+
+QString CUEMetaDataModel::cue() const
+{
+ qDebug() << m_cueFilePath;
+ QFile file(m_cueFilePath);
+ file.open(QIODevice::ReadOnly);
+ return QString::fromUtf8(file.readAll());
+}
+
+void CUEMetaDataModel::setCue(const QString &content)
+{
+
+}
+
+void CUEMetaDataModel::removeCue()
+{
+
}
diff --git a/src/plugins/Input/cue/cuemetadatamodel.h b/src/plugins/Input/cue/cuemetadatamodel.h
index 1f149687f..79186e10f 100644
--- a/src/plugins/Input/cue/cuemetadatamodel.h
+++ b/src/plugins/Input/cue/cuemetadatamodel.h
@@ -32,10 +32,12 @@ public:
~CUEMetaDataModel();
QList<MetaDataItem> extraProperties() const override;
QString coverPath() const override;
+ QString cue() const override;
+ void setCue(const QString &content) override;
+ void removeCue() override;
private:
- CueFile *m_cueFile;
- QString m_path;
+ QString m_dataFilePath, m_cueFilePath;
};
#endif // CUEMETADATAMODEL_H