============================================================================
| 578 | |
| 579 | //============================================================================ |
| 580 | bool 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 | } |
no test coverage detected