-rw-r--r-- | noncore/settings/appearance2/appearance.cpp | 99 | ||||
-rw-r--r-- | noncore/settings/appearance2/colorlistitem.h | 93 | ||||
-rw-r--r-- | noncore/settings/appearance2/editScheme.cpp | 10 | ||||
-rw-r--r-- | noncore/settings/appearance2/editScheme.h | 8 | ||||
-rw-r--r-- | noncore/settings/appearance2/sample.cpp | 11 |
5 files changed, 148 insertions, 73 deletions
diff --git a/noncore/settings/appearance2/appearance.cpp b/noncore/settings/appearance2/appearance.cpp index 52c7125..cf3069e 100644 --- a/noncore/settings/appearance2/appearance.cpp +++ b/noncore/settings/appearance2/appearance.cpp @@ -111,22 +111,6 @@ private: }; -struct { - QColorGroup::ColorRole role; - const char *key; - const char *def; -} colorLUT [] = { - { QColorGroup::Base, "Base", "#FFFFFF" }, - { QColorGroup::Background, "Background", "#E5E1D5" }, - { QColorGroup::Button, "Button", "#D6CDBB" }, - { QColorGroup::ButtonText, "ButtonText", "#000000" }, - { QColorGroup::Highlight, "Highlight", "#800000" }, - { QColorGroup::HighlightedText, "HighlightedText", "#FFFFFF" }, - { QColorGroup::Text, "Text", "#000000" }, - - { QColorGroup::NColorRoles, 0, 0 } -}; - void Appearance::loadStyles ( QListBox *list ) { @@ -186,28 +170,6 @@ void Appearance::loadDecos ( QListBox *list ) } } -static QPalette readColorPalette ( Config &config ) -{ - QColor bgcolor( config. readEntry( "Background", "#E5E1D5" ) ); - QColor btncolor( config. readEntry( "Button", "#D6CDBB" ) ); - QPalette pal( btncolor, bgcolor ); - - QString color = config. readEntry( "Highlight", "#800000" ); - pal.setColor( QColorGroup::Highlight, QColor(color) ); - color = config. readEntry( "HighlightedText", "#FFFFFF" ); - pal.setColor( QColorGroup::HighlightedText, QColor(color) ); - color = config. readEntry( "Text", "#000000" ); - pal.setColor( QColorGroup::Text, QColor(color) ); - color = config. readEntry( "ButtonText", "#000000" ); - pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor(color) ); - color = config. readEntry( "Base", "#FFFFFF" ); - pal.setColor( QColorGroup::Base, QColor(color) ); - - pal.setColor( QPalette::Disabled, QColorGroup::Text, pal.color(QPalette::Active, QColorGroup::Background).dark() ); - - return pal; -} - void Appearance::loadColors ( QListBox *list ) { list-> clear ( ); @@ -215,7 +177,7 @@ void Appearance::loadColors ( QListBox *list ) Config config ( "qpe" ); config. setGroup ( "Appearance" ); - list-> insertItem ( new ColorListItem ( tr( "Current scheme" ), readColorPalette ( config ))); + list-> insertItem ( new ColorListItem ( tr( "Current scheme" ), config )); } QString path = QPEApplication::qpeDir ( ) + "/etc/colors/"; @@ -226,7 +188,7 @@ void Appearance::loadColors ( QListBox *list ) Config config ( path + *it, Config::File ); config. setGroup ( "Colors" ); - list-> insertItem ( new ColorListItem ( name, readColorPalette ( config ))); + list-> insertItem ( new ColorListItem ( name, config )); } } @@ -484,16 +446,15 @@ void Appearance::accept ( ) config.writeEntry( "FontSize", m_font_size_list-> text ( newfontsize )); } -/* - if ( schemeChanged ) - { - int i; - for ( i = 0; i < MAX_CONTROL; i++ ) + + if ( m_color_changed ) { - config.writeEntry( controlList[i], controlColor[i] ); - } + ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); + + if ( item ) + item-> save ( config ); } -*/ + config. write ( ); // need to flush the config info first Global::applyStyle ( ); @@ -652,21 +613,40 @@ void Appearance::editSchemeClicked ( ) { ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); -/* - EditScheme* editdlg = new EditScheme( this, "editScheme", TRUE, 0, - 9, controlLabel, controlColor ); + int cnt = 0; + QString controlLabel [QColorGroup::NColorRoles]; + QString controlColor [QColorGroup::NColorRoles]; + + for ( QColorGroup::ColorRole role = (QColorGroup::ColorRole) 0; role != QColorGroup::NColorRoles; ((int) role )++ ) { + QColor col = item-> color ( role ); + + if ( col. isValid ( )) { + controlLabel [cnt] = item-> label ( role ); + controlColor [cnt] = col. name ( ); + + cnt++; + } + } + + EditScheme* editdlg = new EditScheme( this, "editScheme", true, 0, cnt, controlLabel, controlColor ); editdlg->showMaximized(); - if ( editdlg->exec() == QDialog::Accepted ) - { - int i; - for ( i = 0; i < MAX_CONTROL; i++ ) - { - controlColor[i] = editdlg->colorList[i]; + if ( editdlg-> exec ( ) == QDialog::Accepted ) { + ColorListItem *citem = (ColorListItem *) m_color_list-> item ( 0 ); + cnt = 0; + + for ( QColorGroup::ColorRole role = (QColorGroup::ColorRole) 0; role != QColorGroup::NColorRoles; ((int) role )++ ) { + if ( item-> color ( role ). isValid ( )) { + citem-> setColor ( role, QColor ( controlColor [cnt] )); + cnt++; + } } + + m_color_list-> setCurrentItem ( 0 ); + colorClicked ( 0 ); + m_color_changed = true; } delete editdlg; - */ } @@ -692,8 +672,7 @@ void Appearance::saveSchemeClicked() Config config ( file.name(), Config::File ); config.setGroup( "Colors" ); - for ( int i = 0; colorLUT [i]. role != QColorGroup::NColorRoles; i++ ) - config.writeEntry ( colorLUT [i]. key, p. color ( QPalette::Active, colorLUT [i]. role ). name ( )); + item-> save ( config ); config. write ( ); // need to flush the config info first loadColors ( m_color_list ); diff --git a/noncore/settings/appearance2/colorlistitem.h b/noncore/settings/appearance2/colorlistitem.h index c7318a6..1ff6ecc 100644 --- a/noncore/settings/appearance2/colorlistitem.h +++ b/noncore/settings/appearance2/colorlistitem.h @@ -3,26 +3,111 @@ #include <qlistbox.h> #include <qpalette.h> +#include <qapplication.h> + +#include <qpe/config.h> + +class Appearance; class ColorListItem : public QListBoxText { public: - ColorListItem ( const QString &t, const QPalette &pal ) : QListBoxText ( t ) + ColorListItem ( const QString &t, Config &cfg ) : QListBoxText ( t ) { - m_pal = pal; + m_colors = new QColor [s_colorcount]; + load ( cfg ); } virtual ~ColorListItem ( ) { + delete [] m_colors; } QPalette palette ( ) { - return m_pal; + return m_palette; + } + + bool load ( Config &cfg ) + { + for ( int i = 0; i < s_colorcount; i++ ) + m_colors [i] = QColor ( cfg. readEntry ( s_colorlut [i]. m_key, s_colorlut [i]. m_def )); + + buildPalette ( ); + return true; + } + + void buildPalette ( ) + { + m_palette = QPalette ( m_colors [r2i(QColorGroup::Button)], m_colors [r2i(QColorGroup::Background)] ); + m_palette. setColor ( QColorGroup::Highlight, m_colors [r2i(QColorGroup::Highlight)] ); + m_palette. setColor ( QColorGroup::HighlightedText, m_colors [r2i(QColorGroup::HighlightedText)] ); + m_palette. setColor ( QColorGroup::Text, m_colors [r2i(QColorGroup::Text)] ); + m_palette. setColor ( QPalette::Active, QColorGroup::ButtonText, m_colors [r2i(QColorGroup::ButtonText)] ); + m_palette. setColor ( QColorGroup::Base, m_colors [r2i(QColorGroup::Base)] ); + m_palette. setColor ( QPalette::Disabled, QColorGroup::Text, m_palette. color ( QPalette::Active, QColorGroup::Background ). dark ( )); + } + + bool save ( Config &cfg ) + { + for ( int i = 0; i < s_colorcount; i++ ) + cfg. writeEntry ( s_colorlut [i]. m_key, m_colors [i]. name ( )); + return true; + } + + QColor color ( QColorGroup::ColorRole role ) + { + int i = r2i ( role ); + return i >= 0 ? m_colors [i] : QColor ( ); + } + + void setColor ( QColorGroup::ColorRole role, QColor c ) + { + int i = r2i ( role ); + if ( i >= 0 ) { + m_colors [i] = c; + buildPalette ( ); + } + } + + QString label ( QColorGroup::ColorRole role ) + { + int i = r2i ( role ); + return i >= 0 ? qApp-> translate ( "Appearance", s_colorlut [i]. m_label ) : QString::null; } private: - QPalette m_pal; + QPalette m_palette; + QColor *m_colors; + + static struct colorlut { + QColorGroup::ColorRole m_role; + const char * m_key; + const char * m_def; + const char * m_label; + } const s_colorlut []; + static const int s_colorcount; + + static int r2i ( QColorGroup::ColorRole role ) + { + for ( int i = 0; i < s_colorcount; i++ ) { + if ( s_colorlut [i]. m_role == role ) + return i; + } + return -1; + } }; +const ColorListItem::colorlut ColorListItem::s_colorlut [] = { + { QColorGroup::Base, "Base", "#FFFFFF", QT_TRANSLATE_NOOP( "Appearance", "Base" ) }, + { QColorGroup::Background, "Background", "#E5E1D5", QT_TRANSLATE_NOOP( "Appearance", "Background" ) }, + { QColorGroup::Button, "Button", "#D6CDBB", QT_TRANSLATE_NOOP( "Appearance", "Button" ) }, + { QColorGroup::ButtonText, "ButtonText", "#000000", QT_TRANSLATE_NOOP( "Appearance", "Button Text" ) }, + { QColorGroup::Highlight, "Highlight", "#800000", QT_TRANSLATE_NOOP( "Appearance", "Highlight" ) }, + { QColorGroup::HighlightedText, "HighlightedText", "#FFFFFF", QT_TRANSLATE_NOOP( "Appearance", "Highlighted Text" ) }, + { QColorGroup::Text, "Text", "#000000", QT_TRANSLATE_NOOP( "Appearance", "Text" ) } +}; + +const int ColorListItem::s_colorcount = sizeof( s_colorlut ) / sizeof ( s_colorlut [0] ); + #endif diff --git a/noncore/settings/appearance2/editScheme.cpp b/noncore/settings/appearance2/editScheme.cpp index 2453c7b..4f2ac2c 100644 --- a/noncore/settings/appearance2/editScheme.cpp +++ b/noncore/settings/appearance2/editScheme.cpp @@ -29,7 +29,7 @@ #include <qtoolbutton.h> EditScheme::EditScheme( QWidget* parent, const char* name, bool modal, WFlags fl, - int max, QString list[], QString colors[] ) + int max, QString *list, QString *colors ) : QDialog( parent, name, modal, fl ) { setCaption( tr( "Edit scheme" ) ); @@ -39,13 +39,16 @@ EditScheme::EditScheme( QWidget* parent, const char* name, bool modal, WFlags f maxCount = max; + colorList = colors; + surfaceList = list; + colorButtons = new QToolButton * [max]; int i; QLabel* label; ColorPopupMenu* colorPopupMenu; for ( i = 0; i < max; i++ ) { - colorList[i] = colors[i]; - surfaceList[i] = list[i]; +// colorList[i] = colors[i]; +// surfaceList[i] = list[i]; label = new QLabel( tr( surfaceList[i] ), this ); layout->addWidget( label, i, 0 ); colorButtons[i] = new QToolButton( this, list[i] ); @@ -61,6 +64,7 @@ EditScheme::EditScheme( QWidget* parent, const char* name, bool modal, WFlags f EditScheme::~EditScheme() { + delete [] colorButtons; } void EditScheme::changeColor( const QColor& color ) diff --git a/noncore/settings/appearance2/editScheme.h b/noncore/settings/appearance2/editScheme.h index cf238c6..583050f 100644 --- a/noncore/settings/appearance2/editScheme.h +++ b/noncore/settings/appearance2/editScheme.h @@ -31,15 +31,15 @@ class EditScheme : public QDialog public: EditScheme( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0, - int = 0, QString[] = 0, QString[] = 0 ); + int = 0, QString * = 0, QString * = 0 ); ~EditScheme(); int maxCount; - QString surfaceList[9]; - QString colorList[9]; + QString * surfaceList; + QString * colorList; - QToolButton* colorButtons[9]; + QToolButton** colorButtons; protected slots: void changeColor( const QColor& ); diff --git a/noncore/settings/appearance2/sample.cpp b/noncore/settings/appearance2/sample.cpp index ee27d60..e447002 100644 --- a/noncore/settings/appearance2/sample.cpp +++ b/noncore/settings/appearance2/sample.cpp @@ -10,6 +10,7 @@ #include <qpixmapcache.h> #include <qtimer.h> #include <qobjectlist.h> +#include <qcommonstyle.h> #include "sample.h" @@ -67,6 +68,7 @@ void SampleWindow::setFont( const QFont &f ) static void setStyleRecursive ( QWidget *w, QStyle *s ) { + w->setStyle( s ); QObjectList *childObjects=(QObjectList*)w->children(); if ( childObjects ) { QObject * o; @@ -76,16 +78,21 @@ static void setStyleRecursive ( QWidget *w, QStyle *s ) } } } - w->setStyle( s ); } void SampleWindow::setStyle2 ( QStyle *sty ) { + typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, QColorGroup &, bool, bool); + + extern QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl); + QPixmapCache::clear ( ); QPalette p = palette ( ); sty-> polish ( p ); + qt_set_draw_menu_bar_impl ( 0 ); setStyleRecursive ( this, sty ); + setPalette ( p ); QTimer::singleShot ( 0, this, SLOT( fixGeometry ( ))); } @@ -206,12 +213,12 @@ void SampleWindow::paletteChange( const QPalette &old ) popup-> setPalette ( palette ( )); } + void SampleWindow::setPalette ( const QPalette &pal ) { QPixmapCache::clear ( ); QPalette p = pal; style ( ). polish ( p ); - QWidget::setPalette ( p ); } |