X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fuistyle.cpp;h=6478f8cc8804124d002838dcab8035d37988fcf1;hp=ed5156ce2e7e9ed81f3cee454787216c98e6921e;hb=04c923c596fbde976b23979b92b0636635f97951;hpb=c870a4980ba79f784781e75b89ec537f1ec343ac diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index ed5156ce..6478f8cc 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -56,6 +56,50 @@ UiStyle::~ UiStyle() { qDeleteAll(_metricsCache); } +void UiStyle::loadStyleSheet() { + qDeleteAll(_metricsCache); + _metricsCache.clear(); + _formatCache.clear(); + + QString styleSheet; + + styleSheet += loadStyleSheet("file:///" + Quassel::findDataFilePath("default.qss")); + styleSheet += loadStyleSheet("file:///" + Quassel::configDirPath() + "custom.qss"); + // styleSheet += loadStyleSheet("file:///" + some custom file name); FIXME + styleSheet += loadStyleSheet("file:///" + Quassel::optionValue("qss"), true); + + if(styleSheet.isEmpty()) + return; + + QssParser parser; + parser.processStyleSheet(styleSheet); + QApplication::setPalette(parser.palette()); + _formatCache = parser.formats(); + + qApp->setStyleSheet(styleSheet); // pass the remaining sections to the application +} + +QString UiStyle::loadStyleSheet(const QString &styleSheet, bool shouldExist) { + QString ss = styleSheet; + if(ss.startsWith("file:///")) { + ss.remove(0, 8); + if(ss.isEmpty()) + return QString(); + + QFile file(ss); + if(file.open(QFile::ReadOnly)) { + QTextStream stream(&file); + ss = stream.readAll(); + file.close(); + } else { + if(shouldExist) + qWarning() << "Could not open stylesheet file:" << file.fileName(); + return QString(); + } + } + return ss; +} + QTextCharFormat UiStyle::cachedFormat(quint64 key) const { return _formatCache.value(key, QTextCharFormat()); } @@ -543,19 +587,3 @@ QDataStream &operator>>(QDataStream &in, UiStyle::FormatList &formatList) { } return in; } - -/***********************************************************************************/ -// Stylesheet handling -/***********************************************************************************/ - -void UiStyle::loadStyleSheet() { - QssParser parser; - parser.loadStyleSheet(qApp->styleSheet()); - - // TODO handle results - QApplication::setPalette(parser.palette()); - - qDeleteAll(_metricsCache); - _metricsCache.clear(); - _formatCache = parser.formats(); -}