+ // ItemViews
+ ////////////
+
+ UiStyleSettings uiFonts("Fonts");
+ if (uiFonts.value("UseCustomItemViewFont").toBool()) {
+ QString fontDesc = fontDescription(uiFonts.value("ItemView").value<QFont>());
+ out << "\n// ItemView Font\n"
+ << "ChatListItem { " << fontDesc << "; }\n"
+ << "NickListItem { " << fontDesc << "; }\n\n";
+ }
+
+ UiStyleSettings uiColors("Colors");
+ if (uiColors.value("UseBufferViewColors").toBool()) {
+ out << "\n// BufferView Colors\n"
+ << "ChatListItem { foreground: " << color("DefaultBuffer", uiColors) << "; }\n"
+ << chatListItemQss("inactive", "InactiveBuffer", uiColors)
+ << chatListItemQss("channel-event", "ActiveBuffer", uiColors)
+ << chatListItemQss("unread-message", "UnreadBuffer", uiColors)
+ << chatListItemQss("highlighted", "HighlightedBuffer", uiColors);
+ }
+
+ if (uiColors.value("UseNickViewColors").toBool()) {
+ out << "\n// NickView Colors\n"
+ << "NickListItem[type=\"category\"] { foreground: " << color("DefaultBuffer", uiColors) << "; }\n"
+ << "NickListItem[type=\"user\"] { foreground: " << color("OnlineNick", uiColors) << "; }\n"
+ << "NickListItem[type=\"user\", state=\"away\"] { foreground: " << color("AwayNick", uiColors) << "; }\n";
+ }
+
+ settingsQss.close();
+}
+
+
+QString QtUiStyle::color(const QString &key, UiSettings &settings, const QColor &defaultColor) const
+{
+ return settings.value(key, defaultColor).value<QColor>().name();
+}
+
+
+QString QtUiStyle::fontDescription(const QFont &font) const
+{
+ QString desc = "font: ";
+ if (font.italic())
+ desc += "italic ";
+ if (font.bold())
+ desc += "bold ";
+ if (!font.italic() && !font.bold())
+ desc += "normal ";
+ desc += QString("%1pt \"%2\"").arg(font.pointSize()).arg(font.family());
+ return desc;