aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/detailsdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmmpui/detailsdialog.cpp')
-rw-r--r--src/qmmpui/detailsdialog.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp
index caaed7a4d..b2bc6d72e 100644
--- a/src/qmmpui/detailsdialog.cpp
+++ b/src/qmmpui/detailsdialog.cpp
@@ -223,18 +223,24 @@ void DetailsDialog::updatePage()
QString coverPath;
QPixmap coverPixmap;
+ bool readOnly = false;
- if(m_info.path().contains("://")) //URL
+ if(m_info.path().contains("://") && m_info.path().contains("#")) //track of multi-track file
{
- m_metaDataModel = MetaDataManager::instance()->createMetaDataModel(m_info.path(), false);
+ QString filePath = m_info.path();
+ filePath.remove(QRegularExpression("#\\d+$"));
+ filePath.remove(QRegularExpression("^\\D+://"));
+ if(QFileInfo(filePath).isFile())
+ readOnly = !QFileInfo(filePath).isWritable() || !QFile::exists(filePath);
}
- else if(QFile::exists(m_info.path())) //local file
+ else if(!m_info.path().contains("://")) //local file
{
coverPath = MetaDataManager::instance()->findCoverFile(m_info.path());
- bool writable = QFileInfo(m_info.path()).isWritable();
- m_metaDataModel = MetaDataManager::instance()->createMetaDataModel(m_info.path(), !writable);
+ readOnly = !QFileInfo(m_info.path()).isWritable() || !QFile::exists(m_info.path());
}
+ m_metaDataModel = MetaDataManager::instance()->createMetaDataModel(m_info.path(), readOnly);
+
if(m_metaDataModel)
{
coverPath = coverPath.isEmpty() ? m_metaDataModel->coverPath() : coverPath;