diff --git a/data/themes/default/style.css b/data/themes/default/style.css index 572139dfc..6f7e07d7d 100644 --- a/data/themes/default/style.css +++ b/data/themes/default/style.css @@ -677,17 +677,17 @@ MonstroView knob { qproperty-lineWidth: 2.5; } -/* palette information - each colour definition must be on a single line, and the line must begin with "palette:", with no leading whitespace - * colour codes MUST be of the form #RRGGBB */ - -palette:background {color: #5b6571} -palette:windowtext {color: #f0f0f0} -palette:base {color: #808080} -palette:text {color: #e0e0e0} -palette:button {color: #c9c9c9} -palette:shadow {color: #000000} -palette:buttontext {color: #000000} -palette:brighttext {color: #4afd85} -palette:highlight {color: #202020} -palette:highlightedtext {color: #ffffff} +/* palette information */ +LmmsPalette { + qproperty-background: #5b6571; + qproperty-windowText: #f0f0f0; + qproperty-base: #808080; + qproperty-text: #e0e0e0; + qproperty-button: #c9c9c9; + qproperty-shadow: #000; + qproperty-buttonText: #000; + qproperty-brightText: #4afd85; + qproperty-highlight: #202020; + qproperty-highlightedText: #ffffff; +} diff --git a/include/LmmsStyle.h b/include/LmmsStyle.h index 7b74a06f7..75c1b8612 100644 --- a/include/LmmsStyle.h +++ b/include/LmmsStyle.h @@ -3,7 +3,7 @@ * interface * * Copyright (c) 2007-2014 Tobias Doerffel - * + * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * * This program is free software; you can redistribute it and/or @@ -24,11 +24,58 @@ */ -#ifndef _LMMS_STYLE_H -#define _LMMS_STYLE_H +#ifndef LMMS_STYLE_H +#define LMMS_STYLE_H #include +#define ACCESSMET( read, write ) \ + QColor read () \ + { return m_##read ; } \ + void write ( const QColor & _c ) \ + { m_##read = QColor( _c ); } + +class LmmsPalette: public QWidget +{ + Q_OBJECT + Q_PROPERTY( QColor background READ background WRITE setBackground ) + Q_PROPERTY( QColor windowText READ windowText WRITE setWindowText ) + Q_PROPERTY( QColor base READ base WRITE setBase ) + Q_PROPERTY( QColor text READ text WRITE setText ) + Q_PROPERTY( QColor button READ button WRITE setButton ) + Q_PROPERTY( QColor shadow READ shadow WRITE setShadow ) + Q_PROPERTY( QColor buttonText READ buttonText WRITE setButtonText ) + Q_PROPERTY( QColor brightText READ brightText WRITE setBrightText ) + Q_PROPERTY( QColor highlight READ highlight WRITE setHighlight ) + Q_PROPERTY( QColor highlightedText READ highlightedText WRITE setHighlightedText ) + +public: + LmmsPalette( QWidget * _parent ); + virtual ~LmmsPalette() {}; + + ACCESSMET( background, setBackground ) + ACCESSMET( windowText, setWindowText ) + ACCESSMET( base, setBase ) + ACCESSMET( text, setText ) + ACCESSMET( button, setButton ) + ACCESSMET( shadow, setShadow ) + ACCESSMET( buttonText, setButtonText ) + ACCESSMET( brightText, setBrightText ) + ACCESSMET( highlight, setHighlight ) + ACCESSMET( highlightedText, setHighlightedText ) + +private: + QColor m_background; + QColor m_windowText; + QColor m_base; + QColor m_text; + QColor m_button; + QColor m_shadow; + QColor m_buttonText; + QColor m_brightText; + QColor m_highlight; + QColor m_highlightedText; +}; class LmmsStyle : public QPlastiqueStyle { @@ -81,7 +128,7 @@ public: const QWidget *widget = 0 ) const; virtual int pixelMetric( PixelMetric metric, - const QStyleOption * option = 0, + const QStyleOption * option = 0, const QWidget * widget = 0 ) const; // QSize sizeFromContents( ContentsType type, const QStyleOption* option, const QSize& size, const QWidget* widget ) const; diff --git a/src/gui/LmmsStyle.cpp b/src/gui/LmmsStyle.cpp index cc57470d6..58c5aafee 100644 --- a/src/gui/LmmsStyle.cpp +++ b/src/gui/LmmsStyle.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include "LmmsStyle.h" @@ -195,6 +196,14 @@ void drawPath( QPainter *p, const QPainterPath &path, } + +LmmsPalette::LmmsPalette( QWidget * _parent ) : QWidget( _parent ) +{ + setStyle( QApplication::style() ); +} + + + LmmsStyle::LmmsStyle() : QPlastiqueStyle() { @@ -210,11 +219,11 @@ LmmsStyle::LmmsStyle() : QPalette LmmsStyle::standardPalette( void ) const { - + LmmsPalette * lmmspal = new LmmsPalette( NULL ); QPalette pal = QPlastiqueStyle::standardPalette(); /* sane defaults in case fetching from stylesheet fails*/ - +/* pal.setColor( QPalette::Background, QColor( 91, 101, 113 ) ); pal.setColor( QPalette::WindowText, QColor( 240, 240, 240 ) ); pal.setColor( QPalette::Base, QColor( 128, 128, 128 ) ); @@ -225,23 +234,19 @@ QPalette LmmsStyle::standardPalette( void ) const pal.setColor( QPalette::BrightText, QColor( 74, 253, 133 ) ); pal.setColor( QPalette::Highlight, QColor( 100, 100, 100 ) ); pal.setColor( QPalette::HighlightedText, QColor( 255, 255, 255 ) ); +*/ +/* fetch from stylesheet using LmmsPalette */ -/* fetch from stylesheet using regexp */ - - QStringList paletteData = qApp->styleSheet().split( '\n' ).filter( QRegExp( "^palette:*" ) ); - foreach( QString s, paletteData ) - { - if (s.contains(":background")) { pal.setColor( QPalette::Background, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":windowtext")) { pal.setColor( QPalette::WindowText, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":base")) { pal.setColor( QPalette::Base, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":buttontext")) { pal.setColor( QPalette::ButtonText, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":brighttext")) { pal.setColor( QPalette::BrightText, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":text")) { pal.setColor( QPalette::Text, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":button")) { pal.setColor( QPalette::Button, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":shadow")) { pal.setColor( QPalette::Shadow, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":highlightedtext")) { pal.setColor( QPalette::HighlightedText, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":highlight")) { pal.setColor( QPalette::Highlight, QColor( s.mid( s.indexOf("#"), 7 ) ) ); }; - } + pal.setColor( QPalette::Background, lmmspal->background() ); + pal.setColor( QPalette::WindowText, lmmspal->windowText() ); + pal.setColor( QPalette::Base, lmmspal->base() ); + pal.setColor( QPalette::ButtonText, lmmspal->buttonText() ); + pal.setColor( QPalette::BrightText, lmmspal->brightText() ); + pal.setColor( QPalette::Text, lmmspal->text() ); + pal.setColor( QPalette::Button, lmmspal->button() ); + pal.setColor( QPalette::Shadow, lmmspal->shadow() ); + pal.setColor( QPalette::Highlight, lmmspal->highlight() ); + pal.setColor( QPalette::HighlightedText, lmmspal->highlightedText() ); return( pal ); }