diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2016-10-24 19:30:24 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2016-11-01 17:34:55 +0000 |
commit | 424639ecac9d2e404d2bfaff7f46b45ed98664b8 (patch) | |
tree | 6ed64f844d8dca4e94e05ce2fa74e923d11220f1 /src/plugins/resourceeditor/qrceditor | |
parent | 1589ce3ce855833a50b4e12c86f2b9b5a83d7b02 (diff) |
make resource file handling able to deal with QMakeProject's VFS
resources.prf may create virtual qrc files when RESOURCES contains
non-qrc files.
Change-Id: If591de9b32b775059d67e94bc3cb06d23ee44b08
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/resourceeditor/qrceditor')
-rw-r--r-- | src/plugins/resourceeditor/qrceditor/resourcefile.cpp | 55 | ||||
-rw-r--r-- | src/plugins/resourceeditor/qrceditor/resourcefile_p.h | 3 |
2 files changed, 38 insertions, 20 deletions
diff --git a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp index d034a0556c..b139e7fda4 100644 --- a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp +++ b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp @@ -99,9 +99,10 @@ bool FileList::containsFile(File *file) ** ResourceFile */ -ResourceFile::ResourceFile(const QString &file_name) +ResourceFile::ResourceFile(const QString &file_name, const QString &contents) { setFileName(file_name); + m_contents = contents; } ResourceFile::~ResourceFile() @@ -118,28 +119,44 @@ Core::IDocument::OpenResult ResourceFile::load() return Core::IDocument::OpenResult::ReadError; } - QFile file(m_file_name); - if (!file.open(QIODevice::ReadOnly)) { - m_error_message = file.errorString(); - return Core::IDocument::OpenResult::ReadError; - } - QByteArray data = file.readAll(); - // Detect line ending style - m_textFileFormat = Utils::TextFileFormat::detect(data); - // we always write UTF-8 when saving - m_textFileFormat.codec = QTextCodec::codecForName("UTF-8"); - file.close(); - clearPrefixList(); QDomDocument doc; - QString error_msg; - int error_line, error_col; - if (!doc.setContent(data, &error_msg, &error_line, &error_col)) { - m_error_message = tr("XML error on line %1, col %2: %3") - .arg(error_line).arg(error_col).arg(error_msg); - return Core::IDocument::OpenResult::CannotHandle; + if (m_contents.isEmpty()) { + + // Regular file + QFile file(m_file_name); + if (!file.open(QIODevice::ReadOnly)) { + m_error_message = file.errorString(); + return Core::IDocument::OpenResult::ReadError; + } + QByteArray data = file.readAll(); + // Detect line ending style + m_textFileFormat = Utils::TextFileFormat::detect(data); + // we always write UTF-8 when saving + m_textFileFormat.codec = QTextCodec::codecForName("UTF-8"); + file.close(); + + QString error_msg; + int error_line, error_col; + if (!doc.setContent(data, &error_msg, &error_line, &error_col)) { + m_error_message = tr("XML error on line %1, col %2: %3") + .arg(error_line).arg(error_col).arg(error_msg); + return Core::IDocument::OpenResult::CannotHandle; + } + + } else { + + // Virtual file from qmake evaluator + QString error_msg; + int error_line, error_col; + if (!doc.setContent(m_contents, &error_msg, &error_line, &error_col)) { + m_error_message = tr("XML error on line %1, col %2: %3") + .arg(error_line).arg(error_col).arg(error_msg); + return Core::IDocument::OpenResult::CannotHandle; + } + } QDomElement root = doc.firstChildElement(QLatin1String("RCC")); diff --git a/src/plugins/resourceeditor/qrceditor/resourcefile_p.h b/src/plugins/resourceeditor/qrceditor/resourcefile_p.h index 3e58cb4133..f50ee9556a 100644 --- a/src/plugins/resourceeditor/qrceditor/resourcefile_p.h +++ b/src/plugins/resourceeditor/qrceditor/resourcefile_p.h @@ -127,7 +127,7 @@ class ResourceFile { Q_DECLARE_TR_FUNCTIONS(ResourceFile) public: - ResourceFile(const QString &file_name = QString()); + ResourceFile(const QString &file_name = QString(), const QString &contents = QString()); ~ResourceFile(); void setFileName(const QString &file_name) { m_file_name = file_name; } @@ -175,6 +175,7 @@ public: private: PrefixList m_prefix_list; QString m_file_name; + QString m_contents; QString m_error_message; Utils::TextFileFormat m_textFileFormat; |