forked from qt-creator/qt-creator
DockManager: Introduce read/writeAttribute() helpers
They are going to be reused in reading / writing display name and mcus enabled. Change-Id: I679de8858c37fb8629774d0166a7dbc56e5dab76 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -1627,6 +1627,48 @@ bool DockManager::writeMcusEnabled(const FilePath &filePath, const QString &mcus
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString DockManager::readAttribute(const FilePath &filePath, QStringView key)
|
||||||
|
{
|
||||||
|
auto data = loadFile(filePath);
|
||||||
|
if (data.isEmpty())
|
||||||
|
return {};
|
||||||
|
|
||||||
|
auto tmp = data.startsWith("<?xml") ? data : qUncompress(data);
|
||||||
|
DockingStateReader reader(tmp);
|
||||||
|
if (!reader.readNextStartElement())
|
||||||
|
return {};
|
||||||
|
|
||||||
|
if (reader.name() != QLatin1String("QtAdvancedDockingSystem"))
|
||||||
|
return {};
|
||||||
|
|
||||||
|
return reader.attributes().value(key.toString()).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DockManager::writeAttribute(const FilePath &filePath, QStringView key, const QString &value)
|
||||||
|
{
|
||||||
|
const expected_str<QByteArray> content = filePath.fileContents();
|
||||||
|
QTC_ASSERT_EXPECTED(content, return false);
|
||||||
|
|
||||||
|
QDomDocument doc;
|
||||||
|
QString error_msg;
|
||||||
|
int error_line, error_col;
|
||||||
|
if (!doc.setContent(*content, &error_msg, &error_line, &error_col)) {
|
||||||
|
qWarning() << QString("XML error on line %1, col %2: %3")
|
||||||
|
.arg(error_line).arg(error_col).arg(error_msg);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDomElement docElem = doc.documentElement();
|
||||||
|
docElem.setAttribute(key.toString(), value);
|
||||||
|
|
||||||
|
const expected_str<void> result = write(filePath, doc.toByteArray(workspaceXmlFormattingIndent));
|
||||||
|
if (result)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
qWarning() << "Could not write" << key << value << "to" << filePath << ":" << result.error();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
expected_str<void> DockManager::write(const FilePath &filePath, const QByteArray &data)
|
expected_str<void> DockManager::write(const FilePath &filePath, const QByteArray &data)
|
||||||
{
|
{
|
||||||
qCInfo(adsLog) << "Write" << filePath;
|
qCInfo(adsLog) << "Write" << filePath;
|
||||||
|
@@ -458,7 +458,7 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* This function sets the tool button style for the given dock widget state. It is possible to
|
* This function sets the tool button style for the given dock widget state. It is possible to
|
||||||
* switch the tool button style depending on the state. If a dock widget is floating, then here
|
* switch the tool button style depending on the state. If a dock widget is floating, then here
|
||||||
* are more space and it is possible to select a style that requires more space like
|
* are more space and it is possible to select a style that requires more space like
|
||||||
* Qt::ToolButtonTextUnderIcon. For the docked state Qt::ToolButtonIconOnly might be better.
|
* Qt::ToolButtonTextUnderIcon. For the docked state Qt::ToolButtonIconOnly might be better.
|
||||||
*/
|
*/
|
||||||
@@ -783,6 +783,9 @@ signals:
|
|||||||
void lockWorkspaceChanged();
|
void lockWorkspaceChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
static QString readAttribute(const Utils::FilePath &filePath, QStringView key);
|
||||||
|
static bool writeAttribute(const Utils::FilePath &filePath, QStringView key,
|
||||||
|
const QString &value);
|
||||||
static Utils::expected_str<void> write(const Utils::FilePath &filePath, const QByteArray &data);
|
static Utils::expected_str<void> write(const Utils::FilePath &filePath, const QByteArray &data);
|
||||||
|
|
||||||
Utils::expected_str<QByteArray> loadWorkspace(const Workspace &workspace) const;
|
Utils::expected_str<QByteArray> loadWorkspace(const Workspace &workspace) const;
|
||||||
|
Reference in New Issue
Block a user