EntryProvider: readqsrunfile(): impl. inherit w/o using EntityConfig.update()

This commit is contained in:
Albert S. 2020-10-04 18:32:22 +02:00
parent 2acfe6126a
commit 95e855f325

View File

@ -134,6 +134,19 @@ EntryConfig EntryProvider::readqsrunFile(const QString &path)
} }
map[key] = value; map[key] = value;
} }
if(map.contains("inherit"))
{
auto entry = readEntryFromPath(map["inherit"]);
if(entry)
{
result = entry.value();
result.inherit = map["inherit"];
}
else
{
throw new ConfigFormatException("Error attempting to read inherited entry");
}
}
if(map.contains("arguments")) if(map.contains("arguments"))
{ {
auto args = map["arguments"].split(' '); auto args = map["arguments"].split(' ');
@ -165,23 +178,19 @@ EntryConfig EntryProvider::readqsrunFile(const QString &path)
throw ConfigFormatException("non-closed \" in config file " + path.toStdString()); throw ConfigFormatException("non-closed \" in config file " + path.toStdString());
} }
} }
if(map.contains("inherit")) auto assignIfSourceNotEmpty = [](QString source, QString &val) {
{ if(!source.isEmpty())
result.inherit = map["inherit"];
auto entry = readEntryFromPath(resolveEntryPath(result.inherit));
if(entry)
{ {
inheritedConfig = *entry; val = source;
} }
} };
result.key = map["key"].toLower(); assignIfSourceNotEmpty(map["key"].toLower(), result.key);
result.command = map["command"]; assignIfSourceNotEmpty(map["command"], result.command);
assignIfSourceNotEmpty(map["icon"], result.iconPath);
assignIfSourceNotEmpty(map["name"], result.name);
result.col = map["col"].toInt(); result.col = map["col"].toInt();
result.row = map["row"].toInt(); result.row = map["row"].toInt();
result.iconPath = map["icon"]; return result;
result.name = map["name"];
return result.update(inheritedConfig);
} }
QString EntryProvider::resolveEntryPath(QString path) QString EntryProvider::resolveEntryPath(QString path)