mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-06-16 02:03:13 +02:00
Merge pull request #497 from ispyisail/fix-readonly-after-saveas
Clear read-only state when a project is saved to a writable file
This commit is contained in:
+18
-4
@@ -1013,16 +1013,30 @@ QETResult QETProject::write()
|
|||||||
if (m_file_path.isEmpty())
|
if (m_file_path.isEmpty())
|
||||||
return(QString("unable to save project to file: no filepath was specified"));
|
return(QString("unable to save project to file: no filepath was specified"));
|
||||||
|
|
||||||
// if the project was opened read-only
|
// If the project was opened read-only, only refuse when the target
|
||||||
// and the file is still non-writable, do not save the project
|
// really can't be written: an existing file that is not writable, or a
|
||||||
if (isReadOnly() && !QFileInfo(m_file_path).isWritable())
|
// new file (e.g. "Save As" to another location) whose directory is not
|
||||||
return(QString("the file %1 was opened read-only and thus will not be written").arg(m_file_path));
|
// writable. A non-existent file reports isWritable() == false, so the
|
||||||
|
// old check wrongly blocked saving a read-only project elsewhere.
|
||||||
|
if (isReadOnly()) {
|
||||||
|
const QFileInfo file_info(m_file_path);
|
||||||
|
const bool can_write = file_info.exists()
|
||||||
|
? file_info.isWritable()
|
||||||
|
: QFileInfo(file_info.absolutePath()).isWritable();
|
||||||
|
if (!can_write)
|
||||||
|
return(QString("the file %1 was opened read-only and thus will not be written").arg(m_file_path));
|
||||||
|
}
|
||||||
|
|
||||||
QDomDocument xml_project(toXml());
|
QDomDocument xml_project(toXml());
|
||||||
QString error_message;
|
QString error_message;
|
||||||
if (!QET::writeXmlFile(xml_project, m_file_path, &error_message))
|
if (!QET::writeXmlFile(xml_project, m_file_path, &error_message))
|
||||||
return(error_message);
|
return(error_message);
|
||||||
|
|
||||||
|
// The project has just been written to a writable file (e.g. saved to
|
||||||
|
// a new location with "Save As"), so it is no longer read-only.
|
||||||
|
if (isReadOnly())
|
||||||
|
setReadOnly(false);
|
||||||
|
|
||||||
//title block variables should be updated after file save dialog is confirmed, before file is saved.
|
//title block variables should be updated after file save dialog is confirmed, before file is saved.
|
||||||
m_project_properties.addValue("saveddate", QLocale::system().toString(QDate::currentDate(), QLocale::ShortFormat));
|
m_project_properties.addValue("saveddate", QLocale::system().toString(QDate::currentDate(), QLocale::ShortFormat));
|
||||||
m_project_properties.addValue("saveddate-us", QDate::currentDate().toString("yyyy-MM-dd"));
|
m_project_properties.addValue("saveddate-us", QDate::currentDate().toString("yyyy-MM-dd"));
|
||||||
|
|||||||
Reference in New Issue
Block a user