MCPcopy Create free account
hub / github.com/RGAA-Software/GoDesk / parseStyleJsonFile

Method parseStyleJsonFile

src/theme/QtAdvancedStylesheet.cpp:580–640  ·  view source on GitHub ↗

============================================================================

Source from the content-addressed store, hash-verified

578
579//============================================================================
580bool QtAdvancedStylesheetPrivate::parseStyleJsonFile()
581{
582 QDir Dir(_this->currentStylePath());
583 auto JsonFiles = Dir.entryInfoList({"*.json"}, QDir::Files);
584 if (JsonFiles.count() < 1)
585 {
586 setError(QtAdvancedStylesheet::StyleJsonError, "Stylesheet folder does "
587 "not contain a style json file");
588 return false;
589 }
590
591 if (JsonFiles.count() > 1)
592 {
593 setError(QtAdvancedStylesheet::StyleJsonError, "Stylesheet folder "
594 "contains multiple theme json files");
595 return false;
596 }
597
598 QFile StyleJsonFile(JsonFiles[0].absoluteFilePath());
599 StyleJsonFile.open(QIODevice::ReadOnly);
600
601 auto JsonData = StyleJsonFile.readAll();
602 QJsonParseError ParseError;
603 auto JsonDocument = QJsonDocument::fromJson(JsonData, &ParseError);
604 if (JsonDocument.isNull())
605 {
606 setError(QtAdvancedStylesheet::StyleJsonError, "Loading style json file "
607 "caused error: " + ParseError.errorString());
608 return false;
609 }
610
611 auto json = JsonStyleParam = JsonDocument.object();
612 StyleName = json.value("name").toString();
613 if (StyleName.isEmpty())
614 {
615 setError(QtAdvancedStylesheet::StyleJsonError, "No key \"name\" found "
616 "in style json file");
617 return false;
618 }
619
620 QMap<QString, QString> Variables;
621 auto jvariables = json.value("variables").toObject();
622 for (const auto& key : jvariables.keys())
623 {
624 Variables.insert(key, jvariables.value(key).toString());
625 }
626
627 StyleVariables = Variables;
628 IconFile = json.value("icon").toString();
629 parsePaletteFromJson();
630
631 DefaultTheme = json.value("default_theme").toString();
632 if (DefaultTheme.isEmpty())
633 {
634 setError(QtAdvancedStylesheet::StyleJsonError, "No key \"default_theme\" found "
635 "in style json file");
636 return false;
637 }

Callers 1

setCurrentStyleMethod · 0.80

Calls 2

currentStylePathMethod · 0.80
errorStringMethod · 0.80

Tested by

no test coverage detected