Merge pull request #3438 from Jojo-Schmitz/metaTags-for-parts

Fix #269132: Score properties wiped when saving a generated part
This commit is contained in:
Nicolas Froment 2018-02-09 11:13:34 +01:00 committed by GitHub
commit 06cc782a11
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1822,6 +1822,25 @@ bool MuseScore::saveAs(Score* cs, bool saveCopy, const QString& path, const QStr
// to have it accessible to resources
QString originalScoreFName(cs->masterScore()->fileInfo()->canonicalFilePath());
cs->masterScore()->fileInfo()->setFile(fn);
if (!cs->isMaster()) { // clone metaTags from masterScore
QMapIterator<QString, QString> j(cs->masterScore()->metaTags());
while (j.hasNext()) {
j.next();
if (j.key() != "partName") // don't copy "partName" should that exist in masterScore
cs->metaTags().insert(j.key(), j.value());
#if defined(Q_OS_WIN) // Update "platform", may not be worth the effort
cs->metaTags().insert("platform", "Microsoft Windows");
#elif defined(Q_OS_MAC)
cs->metaTags().insert("platform", "Apple Macintosh");
#elif defined(Q_OS_LINUX)
cs->metaTags().insert("platform", "Linux");
#else
cs->metaTags().insert("platform", "Unknown");
#endif
cs->metaTags().insert("source", ""); // Empty "source" to avoid clashes with masterrScore when doing "Save online"
cs->metaTags().insert("creationDate", QDate::currentDate().toString(Qt::ISODate)); // update "creationDate"
}
}
try {
if (ext == "mscz")
cs->saveCompressedFile(fi, false);
@ -1832,6 +1851,15 @@ bool MuseScore::saveAs(Score* cs, bool saveCopy, const QString& path, const QStr
rv = false;
QMessageBox::critical(this, tr("Save As"), s);
}
if (!cs->isMaster()) { // remove metaTags added above
QMapIterator<QString, QString> j(cs->masterScore()->metaTags());
while (j.hasNext()) {
j.next();
// remove all but "partName", should that exist in masterScore
if (j.key() != "partName")
cs->metaTags().remove(j.key());
}
}
cs->masterScore()->fileInfo()->setFile(originalScoreFName); // restore original file name
if (rv && !saveCopy) {