summaryrefslogtreecommitdiff
path: root/noncore
authorsandman <sandman>2002-09-21 01:37:32 (UTC)
committer sandman <sandman>2002-09-21 01:37:32 (UTC)
commit4b0a34a494dbea653b79a945b8c59ee0be62ac75 (patch) (unidiff)
tree7b9e091423487ed7e4c590b340b84b9ad9d81f44 /noncore
parent1a8d7cd34db3b9f443bcb956f85c41336a60e948 (diff)
downloadopie-4b0a34a494dbea653b79a945b8c59ee0be62ac75.zip
opie-4b0a34a494dbea653b79a945b8c59ee0be62ac75.tar.gz
opie-4b0a34a494dbea653b79a945b8c59ee0be62ac75.tar.bz2
- Improved style and color preview
- color schemes can be editied now
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/appearance2/appearance.cpp105
-rw-r--r--noncore/settings/appearance2/colorlistitem.h95
-rw-r--r--noncore/settings/appearance2/editScheme.cpp10
-rw-r--r--noncore/settings/appearance2/editScheme.h8
-rw-r--r--noncore/settings/appearance2/sample.cpp11
5 files changed, 152 insertions, 77 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:
111}; 111};
112 112
113 113
114struct {
115 QColorGroup::ColorRole role;
116 const char *key;
117 const char *def;
118} colorLUT [] = {
119 { QColorGroup::Base, "Base", "#FFFFFF" },
120 { QColorGroup::Background, "Background", "#E5E1D5" },
121 { QColorGroup::Button, "Button", "#D6CDBB" },
122 { QColorGroup::ButtonText, "ButtonText", "#000000" },
123 { QColorGroup::Highlight, "Highlight", "#800000" },
124 { QColorGroup::HighlightedText, "HighlightedText", "#FFFFFF" },
125 { QColorGroup::Text, "Text", "#000000" },
126
127 { QColorGroup::NColorRoles, 0, 0 }
128};
129
130 114
131void Appearance::loadStyles ( QListBox *list ) 115void Appearance::loadStyles ( QListBox *list )
132{ 116{
@@ -186,28 +170,6 @@ void Appearance::loadDecos ( QListBox *list )
186 } 170 }
187} 171}
188 172
189static QPalette readColorPalette ( Config &config )
190{
191 QColor bgcolor( config. readEntry( "Background", "#E5E1D5" ) );
192 QColor btncolor( config. readEntry( "Button", "#D6CDBB" ) );
193 QPalette pal( btncolor, bgcolor );
194
195 QString color = config. readEntry( "Highlight", "#800000" );
196 pal.setColor( QColorGroup::Highlight, QColor(color) );
197 color = config. readEntry( "HighlightedText", "#FFFFFF" );
198 pal.setColor( QColorGroup::HighlightedText, QColor(color) );
199 color = config. readEntry( "Text", "#000000" );
200 pal.setColor( QColorGroup::Text, QColor(color) );
201 color = config. readEntry( "ButtonText", "#000000" );
202 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor(color) );
203 color = config. readEntry( "Base", "#FFFFFF" );
204 pal.setColor( QColorGroup::Base, QColor(color) );
205
206 pal.setColor( QPalette::Disabled, QColorGroup::Text, pal.color(QPalette::Active, QColorGroup::Background).dark() );
207
208 return pal;
209 }
210
211void Appearance::loadColors ( QListBox *list ) 173void Appearance::loadColors ( QListBox *list )
212{ 174{
213 list-> clear ( ); 175 list-> clear ( );
@@ -215,7 +177,7 @@ void Appearance::loadColors ( QListBox *list )
215 Config config ( "qpe" ); 177 Config config ( "qpe" );
216 config. setGroup ( "Appearance" ); 178 config. setGroup ( "Appearance" );
217 179
218 list-> insertItem ( new ColorListItem ( tr( "Current scheme" ), readColorPalette ( config ))); 180 list-> insertItem ( new ColorListItem ( tr( "Current scheme" ), config ));
219 } 181 }
220 182
221 QString path = QPEApplication::qpeDir ( ) + "/etc/colors/"; 183 QString path = QPEApplication::qpeDir ( ) + "/etc/colors/";
@@ -226,7 +188,7 @@ void Appearance::loadColors ( QListBox *list )
226 Config config ( path + *it, Config::File ); 188 Config config ( path + *it, Config::File );
227 config. setGroup ( "Colors" ); 189 config. setGroup ( "Colors" );
228 190
229 list-> insertItem ( new ColorListItem ( name, readColorPalette ( config ))); 191 list-> insertItem ( new ColorListItem ( name, config ));
230 } 192 }
231} 193}
232 194
@@ -484,16 +446,15 @@ void Appearance::accept ( )
484 config.writeEntry( "FontSize", m_font_size_list-> text ( newfontsize )); 446 config.writeEntry( "FontSize", m_font_size_list-> text ( newfontsize ));
485 } 447 }
486 448
487/* 449
488 if ( schemeChanged ) 450 if ( m_color_changed )
489 { 451 {
490 int i; 452 ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( ));
491 for ( i = 0; i < MAX_CONTROL; i++ ) 453
492 { 454 if ( item )
493 config.writeEntry( controlList[i], controlColor[i] ); 455 item-> save ( config );
494 }
495 } 456 }
496*/ 457
497 config. write ( ); // need to flush the config info first 458 config. write ( ); // need to flush the config info first
498 Global::applyStyle ( ); 459 Global::applyStyle ( );
499 460
@@ -652,21 +613,40 @@ void Appearance::editSchemeClicked ( )
652{ 613{
653 ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); 614 ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( ));
654 615
655/* 616 int cnt = 0;
656 EditScheme* editdlg = new EditScheme( this, "editScheme", TRUE, 0, 617 QString controlLabel [QColorGroup::NColorRoles];
657 9, controlLabel, controlColor ); 618 QString controlColor [QColorGroup::NColorRoles];
658 editdlg->showMaximized(); 619
659 if ( editdlg->exec() == QDialog::Accepted ) 620 for ( QColorGroup::ColorRole role = (QColorGroup::ColorRole) 0; role != QColorGroup::NColorRoles; ((int) role )++ ) {
660 { 621 QColor col = item-> color ( role );
661 int i; 622
662 for ( i = 0; i < MAX_CONTROL; i++ ) 623 if ( col. isValid ( )) {
663 { 624 controlLabel [cnt] = item-> label ( role );
664 controlColor[i] = editdlg->colorList[i]; 625 controlColor [cnt] = col. name ( );
626
627 cnt++;
628 }
629 }
630
631 EditScheme* editdlg = new EditScheme( this, "editScheme", true, 0, cnt, controlLabel, controlColor );
632 editdlg-> showMaximized ( );
633 if ( editdlg-> exec ( ) == QDialog::Accepted ) {
634 ColorListItem *citem = (ColorListItem *) m_color_list-> item ( 0 );
635 cnt = 0;
636
637 for ( QColorGroup::ColorRole role = (QColorGroup::ColorRole) 0; role != QColorGroup::NColorRoles; ((int) role )++ ) {
638 if ( item-> color ( role ). isValid ( )) {
639 citem-> setColor ( role, QColor ( controlColor [cnt] ));
640 cnt++;
641 }
665 } 642 }
643
644 m_color_list-> setCurrentItem ( 0 );
645 colorClicked ( 0 );
646
666 m_color_changed = true; 647 m_color_changed = true;
667 } 648 }
668 delete editdlg; 649 delete editdlg;
669 */
670} 650}
671 651
672 652
@@ -690,11 +670,10 @@ void Appearance::saveSchemeClicked()
690 QPalette p = item-> palette ( ); 670 QPalette p = item-> palette ( );
691 671
692 Config config ( file.name(), Config::File ); 672 Config config ( file.name(), Config::File );
693 config.setGroup( "Colors" ); 673 config. setGroup( "Colors" );
694 674
695 for ( int i = 0; colorLUT [i]. role != QColorGroup::NColorRoles; i++ ) 675 item-> save ( config );
696 config.writeEntry ( colorLUT [i]. key, p. color ( QPalette::Active, colorLUT [i]. role ). name ( )); 676
697
698 config. write ( ); // need to flush the config info first 677 config. write ( ); // need to flush the config info first
699 loadColors ( m_color_list ); 678 loadColors ( m_color_list );
700 } 679 }
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 @@
3 3
4#include <qlistbox.h> 4#include <qlistbox.h>
5#include <qpalette.h> 5#include <qpalette.h>
6#include <qapplication.h>
7
8#include <qpe/config.h>
9
10class Appearance;
6 11
7class ColorListItem : public QListBoxText { 12class ColorListItem : public QListBoxText {
8public: 13public:
9 ColorListItem ( const QString &t, const QPalette &pal ) : QListBoxText ( t ) 14 ColorListItem ( const QString &t, Config &cfg ) : QListBoxText ( t )
10 { 15 {
11 m_pal = pal; 16 m_colors = new QColor [s_colorcount];
17 load ( cfg );
12 } 18 }
13 19
14 virtual ~ColorListItem ( ) 20 virtual ~ColorListItem ( )
15 { 21 {
22 delete [] m_colors;
16 } 23 }
17 24
18 QPalette palette ( ) 25 QPalette palette ( )
19 { 26 {
20 return m_pal; 27 return m_palette;
28 }
29
30 bool load ( Config &cfg )
31 {
32 for ( int i = 0; i < s_colorcount; i++ )
33 m_colors [i] = QColor ( cfg. readEntry ( s_colorlut [i]. m_key, s_colorlut [i]. m_def ));
34
35 buildPalette ( );
36 return true;
37 }
38
39 void buildPalette ( )
40 {
41 m_palette = QPalette ( m_colors [r2i(QColorGroup::Button)], m_colors [r2i(QColorGroup::Background)] );
42 m_palette. setColor ( QColorGroup::Highlight, m_colors [r2i(QColorGroup::Highlight)] );
43 m_palette. setColor ( QColorGroup::HighlightedText, m_colors [r2i(QColorGroup::HighlightedText)] );
44 m_palette. setColor ( QColorGroup::Text, m_colors [r2i(QColorGroup::Text)] );
45 m_palette. setColor ( QPalette::Active, QColorGroup::ButtonText, m_colors [r2i(QColorGroup::ButtonText)] );
46 m_palette. setColor ( QColorGroup::Base, m_colors [r2i(QColorGroup::Base)] );
47 m_palette. setColor ( QPalette::Disabled, QColorGroup::Text, m_palette. color ( QPalette::Active, QColorGroup::Background ). dark ( ));
21 } 48 }
22 49
50 bool save ( Config &cfg )
51 {
52 for ( int i = 0; i < s_colorcount; i++ )
53 cfg. writeEntry ( s_colorlut [i]. m_key, m_colors [i]. name ( ));
54 return true;
55 }
56
57 QColor color ( QColorGroup::ColorRole role )
58 {
59 int i = r2i ( role );
60 return i >= 0 ? m_colors [i] : QColor ( );
61 }
62
63 void setColor ( QColorGroup::ColorRole role, QColor c )
64 {
65 int i = r2i ( role );
66 if ( i >= 0 ) {
67 m_colors [i] = c;
68 buildPalette ( );
69 }
70 }
71
72 QString label ( QColorGroup::ColorRole role )
73 {
74 int i = r2i ( role );
75 return i >= 0 ? qApp-> translate ( "Appearance", s_colorlut [i]. m_label ) : QString::null;
76 }
77
23private: 78private:
24 QPalette m_pal; 79 QPalette m_palette;
80 QColor *m_colors;
81
82 static struct colorlut {
83 QColorGroup::ColorRole m_role;
84 const char * m_key;
85 const char * m_def;
86 const char * m_label;
87 } const s_colorlut [];
88 static const int s_colorcount;
89
90 static int r2i ( QColorGroup::ColorRole role )
91 {
92 for ( int i = 0; i < s_colorcount; i++ ) {
93 if ( s_colorlut [i]. m_role == role )
94 return i;
95 }
96 return -1;
97 }
25}; 98};
26 99
100const ColorListItem::colorlut ColorListItem::s_colorlut [] = {
101 { QColorGroup::Base, "Base", "#FFFFFF", QT_TRANSLATE_NOOP( "Appearance", "Base" ) },
102 { QColorGroup::Background, "Background", "#E5E1D5", QT_TRANSLATE_NOOP( "Appearance", "Background" ) },
103 { QColorGroup::Button, "Button", "#D6CDBB", QT_TRANSLATE_NOOP( "Appearance", "Button" ) },
104 { QColorGroup::ButtonText, "ButtonText", "#000000", QT_TRANSLATE_NOOP( "Appearance", "Button Text" ) },
105 { QColorGroup::Highlight, "Highlight", "#800000", QT_TRANSLATE_NOOP( "Appearance", "Highlight" ) },
106 { QColorGroup::HighlightedText, "HighlightedText", "#FFFFFF", QT_TRANSLATE_NOOP( "Appearance", "Highlighted Text" ) },
107 { QColorGroup::Text, "Text", "#000000", QT_TRANSLATE_NOOP( "Appearance", "Text" ) }
108};
109
110const int ColorListItem::s_colorcount = sizeof( s_colorlut ) / sizeof ( s_colorlut [0] );
111
27 112
28#endif 113#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 @@
29#include <qtoolbutton.h> 29#include <qtoolbutton.h>
30 30
31EditScheme::EditScheme( QWidget* parent, const char* name, bool modal, WFlags fl, 31EditScheme::EditScheme( QWidget* parent, const char* name, bool modal, WFlags fl,
32 int max, QString list[], QString colors[] ) 32 int max, QString *list, QString *colors )
33 : QDialog( parent, name, modal, fl ) 33 : QDialog( parent, name, modal, fl )
34{ 34{
35 setCaption( tr( "Edit scheme" ) ); 35 setCaption( tr( "Edit scheme" ) );
@@ -39,13 +39,16 @@ EditScheme::EditScheme( QWidget* parent, const char* name, bool modal, WFlags f
39 39
40 40
41 maxCount = max; 41 maxCount = max;
42 colorList = colors;
43 surfaceList = list;
44 colorButtons = new QToolButton * [max];
42 int i; 45 int i;
43 QLabel* label; 46 QLabel* label;
44 ColorPopupMenu* colorPopupMenu; 47 ColorPopupMenu* colorPopupMenu;
45 for ( i = 0; i < max; i++ ) 48 for ( i = 0; i < max; i++ )
46 { 49 {
47 colorList[i] = colors[i]; 50// colorList[i] = colors[i];
48 surfaceList[i] = list[i]; 51// surfaceList[i] = list[i];
49 label = new QLabel( tr( surfaceList[i] ), this ); 52 label = new QLabel( tr( surfaceList[i] ), this );
50 layout->addWidget( label, i, 0 ); 53 layout->addWidget( label, i, 0 );
51 colorButtons[i] = new QToolButton( this, list[i] ); 54 colorButtons[i] = new QToolButton( this, list[i] );
@@ -61,6 +64,7 @@ EditScheme::EditScheme( QWidget* parent, const char* name, bool modal, WFlags f
61 64
62EditScheme::~EditScheme() 65EditScheme::~EditScheme()
63{ 66{
67 delete [] colorButtons;
64} 68}
65 69
66void EditScheme::changeColor( const QColor& color ) 70void 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
31 31
32public: 32public:
33 EditScheme( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0, 33 EditScheme( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0,
34 int = 0, QString[] = 0, QString[] = 0 ); 34 int = 0, QString * = 0, QString * = 0 );
35 ~EditScheme(); 35 ~EditScheme();
36 36
37 int maxCount; 37 int maxCount;
38 QString surfaceList[9]; 38 QString * surfaceList;
39 QString colorList[9]; 39 QString * colorList;
40 40
41 41
42 QToolButton* colorButtons[9]; 42 QToolButton** colorButtons;
43 43
44protected slots: 44protected slots:
45 void changeColor( const QColor& ); 45 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 @@
10#include <qpixmapcache.h> 10#include <qpixmapcache.h>
11#include <qtimer.h> 11#include <qtimer.h>
12#include <qobjectlist.h> 12#include <qobjectlist.h>
13#include <qcommonstyle.h>
13 14
14#include "sample.h" 15#include "sample.h"
15 16
@@ -67,6 +68,7 @@ void SampleWindow::setFont( const QFont &f )
67 68
68static void setStyleRecursive ( QWidget *w, QStyle *s ) 69static void setStyleRecursive ( QWidget *w, QStyle *s )
69{ 70{
71 w->setStyle( s );
70 QObjectList *childObjects=(QObjectList*)w->children(); 72 QObjectList *childObjects=(QObjectList*)w->children();
71 if ( childObjects ) { 73 if ( childObjects ) {
72 QObject * o; 74 QObject * o;
@@ -76,16 +78,21 @@ static void setStyleRecursive ( QWidget *w, QStyle *s )
76 } 78 }
77 } 79 }
78 } 80 }
79 w->setStyle( s );
80} 81}
81 82
82 83
83void SampleWindow::setStyle2 ( QStyle *sty ) 84void SampleWindow::setStyle2 ( QStyle *sty )
84{ 85{
86 typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, QColorGroup &, bool, bool);
87
88 extern QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl);
89
85 QPixmapCache::clear ( ); 90 QPixmapCache::clear ( );
86 QPalette p = palette ( ); 91 QPalette p = palette ( );
87 sty-> polish ( p ); 92 sty-> polish ( p );
93 qt_set_draw_menu_bar_impl ( 0 );
88 setStyleRecursive ( this, sty ); 94 setStyleRecursive ( this, sty );
95 setPalette ( p );
89 QTimer::singleShot ( 0, this, SLOT( fixGeometry ( ))); 96 QTimer::singleShot ( 0, this, SLOT( fixGeometry ( )));
90} 97}
91 98
@@ -206,12 +213,12 @@ void SampleWindow::paletteChange( const QPalette &old )
206 popup-> setPalette ( palette ( )); 213 popup-> setPalette ( palette ( ));
207} 214}
208 215
216
209void SampleWindow::setPalette ( const QPalette &pal ) 217void SampleWindow::setPalette ( const QPalette &pal )
210{ 218{
211 QPixmapCache::clear ( ); 219 QPixmapCache::clear ( );
212 QPalette p = pal; 220 QPalette p = pal;
213 style ( ). polish ( p ); 221 style ( ). polish ( p );
214
215 QWidget::setPalette ( p ); 222 QWidget::setPalette ( p );
216} 223}
217 224