35 switch (QApplication::styleHints()->colorScheme()) {
36 case Qt::ColorScheme::Dark:
return true;
37 case Qt::ColorScheme::Light:
return false;
38 case Qt::ColorScheme::Unknown:
break;
41 auto const & palette = QApplication::palette();
42 return palette.color(QPalette::WindowText).lightness()
43 > palette.color(QPalette::Window).lightness();
50 QDir::Filters
const readableFileFilter(QDir::Files | QDir::Readable);
51 QStringList
const cssFilter(QStringLiteral(
"*.css"));
55 auto const loadColorMap =
57 QFileInfo
const cssInfo(filePath);
58 static auto const cMapPathTemplate(
59 QStringLiteral(
"%1/%2.cmap"));
60 auto cMapPath(cMapPathTemplate.arg(cssInfo.path())
61 .arg(cssInfo.completeBaseName()));
62 QFileInfo
const cMapInfo(cMapPath);
63 auto fileName(cssInfo.fileName());
66 std::map<QString, QString> colorMap;
67 auto const p(qApp->palette());
69 colorMap.emplace(QStringLiteral(
"FOREGROUND_COLOR"),
70 p.color(QPalette::WindowText).name());
71 colorMap.emplace(QStringLiteral(
"BACKGROUND_COLOR"),
72 p.color(QPalette::Base).name());
73 colorMap.emplace(QStringLiteral(
"HIGHLIGHT"),
74 QStringLiteral(
"#ffff00"));
75 colorMap.emplace(QStringLiteral(
"BACKGROUND_HIGHLIGHT"),
76 QStringLiteral(
"#444466"));
77 colorMap.emplace(QStringLiteral(
"CROSSREF_COLOR"),
78 QStringLiteral(
"#aac2ff"));
79 colorMap.emplace(QStringLiteral(
"JESUS_WORDS_COLOR"),
80 QStringLiteral(
"#ff0000"));
82 colorMap.emplace(QStringLiteral(
"FOREGROUND_COLOR"),
83 p.color(QPalette::WindowText).name());
84 colorMap.emplace(QStringLiteral(
"BACKGROUND_COLOR"),
85 p.color(QPalette::Base).name());
86 colorMap.emplace(QStringLiteral(
"HIGHLIGHT"),
87 QStringLiteral(
"#ffff00"));
88 colorMap.emplace(QStringLiteral(
"BACKGROUND_HIGHLIGHT"),
89 QStringLiteral(
"#ddddff"));
90 colorMap.emplace(QStringLiteral(
"CROSSREF_COLOR"),
91 QStringLiteral(
"#1414ff"));
92 colorMap.emplace(QStringLiteral(
"JESUS_WORDS_COLOR"),
93 QStringLiteral(
"#ff0000"));
96 if (cMapInfo.exists()) {
97 QSettings cMapSettings(cMapPath, QSettings::IniFormat);
98 static auto const dark = QStringLiteral(
"dark");
99 static auto const light = QStringLiteral(
"light");
100 cMapSettings.beginGroup(
darkMode() ? dark : light);
101 for (
auto const & colorKey : cMapSettings.childKeys())
102 colorMap[colorKey] = cMapSettings.value(colorKey).toString();
104 colorMaps[std::move(fileName)] = std::move(colorMap);
108 auto const & td = DU::getDisplayTemplatesDir();
109 for (
auto const & file : td.entryList(cssFilter, readableFileFilter))
110 loadColorMap(QStringLiteral(
"%1/%2").arg(td.canonicalPath(), file));
113 auto const & utd = DU::getUserDisplayTemplatesDir();
114 for (
auto const & file : utd.entryList(cssFilter, readableFileFilter))
115 loadColorMap(QStringLiteral(
"%1/%2").arg(utd.canonicalPath(), file));