Ref T34, OS specific stylesheets

e.g. fonts.mac.qss / default is fonts.qss
This commit is contained in:
Klaus Basan
2017-04-21 19:47:44 +02:00
parent e13f7e3e68
commit ce8e5c1f10
2 changed files with 46 additions and 11 deletions

View File

@@ -206,7 +206,7 @@ namespace BlackGui
bool CStyleSheetUtility::updateFont(const QString &fontFamily, const QString &fontSize, const QString &fontStyle, const QString &fontWeight, const QString &fontColor) bool CStyleSheetUtility::updateFont(const QString &fontFamily, const QString &fontSize, const QString &fontStyle, const QString &fontWeight, const QString &fontColor)
{ {
const QString indent(" "); static const QString indent(" ");
QString fontStyleSheet; QString fontStyleSheet;
fontStyleSheet.append(indent).append("font-family: \"").append(fontFamily).append("\";\n"); fontStyleSheet.append(indent).append("font-family: \"").append(fontFamily).append("\";\n");
fontStyleSheet.append(indent).append("font-size: ").append(fontSize).append(";\n"); fontStyleSheet.append(indent).append("font-size: ").append(fontSize).append(";\n");
@@ -266,7 +266,7 @@ namespace BlackGui
const QString &CStyleSheetUtility::fileNameFonts() const QString &CStyleSheetUtility::fileNameFonts()
{ {
static const QString f("fonts.qss"); static const QString f(getBestFileName("fonts"));
return f; return f;
} }
@@ -289,31 +289,31 @@ namespace BlackGui
const QString &CStyleSheetUtility::fileNameSwiftStandardGui() const QString &CStyleSheetUtility::fileNameSwiftStandardGui()
{ {
static const QString f("swiftstdgui.qss"); static const QString f(getBestFileName("swiftstdgui"));
return f; return f;
} }
const QString &CStyleSheetUtility::fileNameInfoBar() const QString &CStyleSheetUtility::fileNameInfoBar()
{ {
static const QString f("infobar.qss"); static const QString f(getBestFileName("infobar"));
return f; return f;
} }
const QString &CStyleSheetUtility::fileNameNavigator() const QString &CStyleSheetUtility::fileNameNavigator()
{ {
static const QString f("navigator.qss"); static const QString f(getBestFileName("navigator"));
return f; return f;
} }
const QString &CStyleSheetUtility::fileNameDockWidgetTab() const QString &CStyleSheetUtility::fileNameDockWidgetTab()
{ {
static const QString f("dockwidgettab.qss"); static const QString f(getBestFileName("dockwidgettab"));
return f; return f;
} }
const QString &CStyleSheetUtility::fileNameStandardWidget() const QString &CStyleSheetUtility::fileNameStandardWidget()
{ {
static const QString f("stdwidget.qss"); static const QString f(getBestFileName("stdwidget"));
return f; return f;
} }
@@ -325,25 +325,25 @@ namespace BlackGui
const QString &CStyleSheetUtility::fileNameFilterDialog() const QString &CStyleSheetUtility::fileNameFilterDialog()
{ {
static const QString f("filterdialog.qss"); static const QString f(getBestFileName("filterdialog"));
return f; return f;
} }
const QString &CStyleSheetUtility::fileNameSwiftCore() const QString &CStyleSheetUtility::fileNameSwiftCore()
{ {
static const QString f("swiftcore.qss"); static const QString f(getBestFileName("swiftcore"));
return f; return f;
} }
const QString &CStyleSheetUtility::fileNameSwiftData() const QString &CStyleSheetUtility::fileNameSwiftData()
{ {
static const QString f("swiftdata.qss"); static const QString f(getBestFileName("swiftdata"));
return f; return f;
} }
const QString &CStyleSheetUtility::fileNameSwiftLauncher() const QString &CStyleSheetUtility::fileNameSwiftLauncher()
{ {
static const QString f("swiftlauncher.qss"); static const QString f(getBestFileName("swiftlauncher"));
return f; return f;
} }
@@ -436,4 +436,33 @@ namespace BlackGui
Q_UNUSED(file); Q_UNUSED(file);
this->read(); this->read();
} }
QString CStyleSheetUtility::getBestFileName(const QString &fileName)
{
static const QString qss(".qss");
QString fn(fileName);
if (fn.endsWith(qss)) fn = fn.left(fn.length() - qss.length());
QString specific;
if (CBuildConfig::isRunningOnWindowsNtPlatform())
{
specific = fn + ".win" + qss;
}
else if (CBuildConfig::isRunningOnMacOSXPlatform())
{
specific = fn + ".mac" + qss;
}
else if (CBuildConfig::isRunningOnLinuxPlatform())
{
specific = fn + ".linux" + qss;
}
return qssFileExists(specific) ? specific : fn + qss;
}
bool CStyleSheetUtility::qssFileExists(const QString &filename)
{
if (filename.isEmpty()) { return false; }
const QFileInfo f(CFileUtils::appendFilePaths(CBuildConfig::getStylesheetsDir(), filename));
return f.exists() && f.isReadable();
}
} }

View File

@@ -151,6 +151,12 @@ namespace BlackGui
void ps_qssDirectoryChanged(const QString &file); void ps_qssDirectoryChanged(const QString &file);
private: private:
//! Most suitable filename based on OS/existing file
static QString getBestFileName(const QString &fileName);
//! Check existance of qss file
static bool qssFileExists(const QString &filename);
QMap<QString, QString> m_styleSheets; //!< filename, stylesheet QMap<QString, QString> m_styleSheets; //!< filename, stylesheet
QFileSystemWatcher m_fileWatcher {this}; //!< Monitor my qss files QFileSystemWatcher m_fileWatcher {this}; //!< Monitor my qss files
}; };