aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-02-09 20:05:00 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-02-09 20:05:00 +0000
commit2163134c1829a8126afb6921510c89c321e2809c (patch)
treeaaf6ce0cd679891df31ca51d8d4e6ba96a5d7f0d /src/qmmpui
parent263fd1ab79ca6e2ccb01b5a6e9c49676ac5e1aeb (diff)
downloadqmmp-2163134c1829a8126afb6921510c89c321e2809c.tar.gz
qmmp-2163134c1829a8126afb6921510c89c321e2809c.tar.bz2
qmmp-2163134c1829a8126afb6921510c89c321e2809c.zip
added extra file access checking
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9716 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui')
-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;