1
/****************************************************************************
3
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
5
** This file is part of the qtconfig application of the Qt Toolkit.
7
** This file may be distributed under the terms of the Q Public License
8
** as defined by Trolltech AS of Norway and appearing in the file
9
** LICENSE.QPL included in the packaging of this file.
11
** This file may be distributed and/or modified under the terms of the
12
** GNU General Public License version 2 as published by the Free Software
13
** Foundation and appearing in the file LICENSE.GPL included in the
14
** packaging of this file.
16
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
17
** information about Qt Commercial License Agreements.
18
** See http://www.trolltech.com/qpl/ for QPL licensing information.
19
** See http://www.trolltech.com/gpl/ for GPL licensing information.
21
** Contact info@trolltech.com if any conditions of this licensing are
24
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
25
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27
****************************************************************************/
29
#include "paletteeditoradvanced.h"
30
#include "colorbutton.h"
32
#include <qcheckbox.h>
33
#include <qcombobox.h>
34
#include <qapplication.h>
35
#include <qpushbutton.h>
37
#include <qgroupbox.h>
39
PaletteEditorAdvanced::PaletteEditorAdvanced( QWidget * parent,
40
const char * name, bool modal, Qt::WFlags f )
41
: PaletteEditorAdvancedBase( parent, name, modal, f ), selectedPalette(0)
43
// work around buggy ui file
44
comboEffect->setEnabled(false);
45
buttonEffect->setEnabled(false);
46
onToggleBuildEffects(true);
48
editPalette = QApplication::palette();
49
setPreviewPalette( editPalette );
52
PaletteEditorAdvanced::~PaletteEditorAdvanced()
56
void PaletteEditorAdvanced::onToggleBuildInactive( bool v )
58
if (selectedPalette == 1) {
59
groupCentral->setDisabled(v);
60
groupEffect->setDisabled(v);
69
void PaletteEditorAdvanced::onToggleBuildDisabled( bool v )
71
if (selectedPalette == 2) {
72
groupCentral->setDisabled(v);
73
groupEffect->setDisabled(v);
82
void PaletteEditorAdvanced::paletteSelected(int p)
86
if(p == 1) { // inactive
87
groupCentral->setDisabled(checkBuildInactive->isChecked());
88
groupEffect->setDisabled(checkBuildInactive->isChecked());
90
else if (p == 2) { // disabled
91
groupCentral->setDisabled(checkBuildDisabled->isChecked());
92
groupEffect->setDisabled(checkBuildDisabled->isChecked());
95
groupCentral->setEnabled(true);
96
groupEffect->setEnabled(true);
101
void PaletteEditorAdvanced::onChooseCentralColor()
103
switch(selectedPalette) {
106
mapToActiveCentralRole( buttonCentral->color() );
109
mapToInactiveCentralRole( buttonCentral->color() );
112
mapToDisabledCentralRole( buttonCentral->color() );
115
updateColorButtons();
118
void PaletteEditorAdvanced::onChooseEffectColor()
120
switch(selectedPalette) {
123
mapToActiveEffectRole( buttonEffect->color() );
126
mapToInactiveEffectRole( buttonEffect->color() );
129
mapToDisabledEffectRole( buttonEffect->color() );
132
updateColorButtons();
135
void PaletteEditorAdvanced::onToggleBuildEffects( bool on )
139
buildInactiveEffect();
140
buildDisabledEffect();
143
QColorGroup::ColorRole PaletteEditorAdvanced::centralFromItem( int item )
147
return QColorGroup::Background;
149
return QColorGroup::Foreground;
151
return QColorGroup::Button;
153
return QColorGroup::Base;
155
return QColorGroup::Text;
157
return QColorGroup::BrightText;
159
return QColorGroup::ButtonText;
161
return QColorGroup::Highlight;
163
return QColorGroup::HighlightedText;
165
return QColorGroup::Link;
167
return QColorGroup::LinkVisited;
169
return QColorGroup::NColorRoles;
173
QColorGroup::ColorRole PaletteEditorAdvanced::effectFromItem( int item )
177
return QColorGroup::Light;
179
return QColorGroup::Midlight;
181
return QColorGroup::Mid;
183
return QColorGroup::Dark;
185
return QColorGroup::Shadow;
187
return QColorGroup::NColorRoles;
191
void PaletteEditorAdvanced::onCentral( int item )
195
switch(selectedPalette) {
198
c = editPalette.active().color( centralFromItem(item) );
201
c = editPalette.inactive().color( centralFromItem(item) );
204
c = editPalette.disabled().color( centralFromItem(item) );
208
buttonCentral->setColor(c);
211
void PaletteEditorAdvanced::onEffect( int item )
214
switch(selectedPalette) {
217
c = editPalette.active().color( effectFromItem(item) );
220
editPalette.inactive().color( effectFromItem(item) );
223
editPalette.disabled().color( effectFromItem(item) );
226
buttonEffect->setColor(c);
229
void PaletteEditorAdvanced::mapToActiveCentralRole( const QColor& c )
231
QColorGroup cg = editPalette.active();
232
cg.setColor( centralFromItem(comboCentral->currentItem()), c );
233
editPalette.setActive( cg );
236
if(checkBuildInactive->isChecked())
238
if(checkBuildDisabled->isChecked())
241
setPreviewPalette( editPalette );
244
void PaletteEditorAdvanced::mapToActiveEffectRole( const QColor& c )
246
QColorGroup cg = editPalette.active();
247
cg.setColor( effectFromItem(comboEffect->currentItem()), c );
248
editPalette.setActive( cg );
250
if(checkBuildInactive->isChecked())
252
if(checkBuildDisabled->isChecked())
255
setPreviewPalette( editPalette );
258
void PaletteEditorAdvanced::mapToActivePixmapRole( const QPixmap& pm )
260
QColorGroup::ColorRole role = centralFromItem(comboCentral->currentItem());
261
QColorGroup cg = editPalette.active();
263
cg.setBrush( role, QBrush( cg.color( role ), pm ) );
265
cg.setBrush( role, QBrush( cg.color( role ) ) );
266
editPalette.setActive( cg );
270
if(checkBuildInactive->isChecked())
272
if(checkBuildDisabled->isChecked())
275
setPreviewPalette( editPalette );
278
void PaletteEditorAdvanced::mapToInactiveCentralRole( const QColor& c )
280
QColorGroup cg = editPalette.inactive();
281
cg.setColor( centralFromItem(comboCentral->currentItem()), c );
282
editPalette.setInactive( cg );
284
buildInactiveEffect();
286
setPreviewPalette( editPalette );
289
void PaletteEditorAdvanced::mapToInactiveEffectRole( const QColor& c )
291
QColorGroup cg = editPalette.inactive();
292
cg.setColor( effectFromItem(comboEffect->currentItem()), c );
293
editPalette.setInactive( cg );
295
setPreviewPalette( editPalette );
298
void PaletteEditorAdvanced::mapToInactivePixmapRole( const QPixmap& pm )
300
QColorGroup::ColorRole role = centralFromItem(comboCentral->currentItem());
301
QColorGroup cg = editPalette.inactive();
303
cg.setBrush( role, QBrush( cg.color( role ), pm ) );
305
cg.setBrush( role, QBrush( cg.color( role ) ) );
306
editPalette.setInactive( cg );
308
setPreviewPalette( editPalette );
311
void PaletteEditorAdvanced::mapToDisabledCentralRole( const QColor& c )
313
QColorGroup cg = editPalette.disabled();
314
cg.setColor( centralFromItem(comboCentral->currentItem()), c );
315
editPalette.setDisabled( cg );
317
buildDisabledEffect();
319
setPreviewPalette( editPalette );
322
void PaletteEditorAdvanced::mapToDisabledEffectRole( const QColor& c )
324
QColorGroup cg = editPalette.disabled();
325
cg.setColor( effectFromItem(comboEffect->currentItem()), c );
326
editPalette.setDisabled( cg );
328
setPreviewPalette( editPalette );
331
void PaletteEditorAdvanced::mapToDisabledPixmapRole( const QPixmap& pm )
333
QColorGroup::ColorRole role = centralFromItem(comboCentral->currentItem());
334
QColorGroup cg = editPalette.disabled();
336
cg.setBrush( role, QBrush( cg.color( role ), pm ) );
338
cg.setBrush( role, QBrush( cg.color( role ) ) );
340
editPalette.setDisabled( cg );
342
setPreviewPalette( editPalette );
345
void PaletteEditorAdvanced::buildActiveEffect()
347
QColorGroup cg = editPalette.active();
348
QColor btn = cg.color( QColorGroup::Button );
350
QPalette temp( btn, btn );
352
for (int i = 0; i<5; i++)
353
cg.setColor( effectFromItem(i), temp.active().color( effectFromItem(i) ) );
355
editPalette.setActive( cg );
356
setPreviewPalette( editPalette );
358
updateColorButtons();
361
void PaletteEditorAdvanced::buildInactive()
363
editPalette.setInactive( editPalette.active() );
364
if ( checkBuildEffect->isChecked() )
365
buildInactiveEffect();
367
setPreviewPalette( editPalette );
368
updateColorButtons();
373
void PaletteEditorAdvanced::buildInactiveEffect()
375
QColorGroup cg = editPalette.inactive();
377
QColor light, midlight, mid, dark, shadow;
378
QColor btn = cg.color( QColorGroup::Button );
380
light = btn.light(150);
381
midlight = btn.light(115);
386
cg.setColor( QColorGroup::Light, light );
387
cg.setColor( QColorGroup::Midlight, midlight );
388
cg.setColor( QColorGroup::Mid, mid );
389
cg.setColor( QColorGroup::Dark, dark );
390
cg.setColor( QColorGroup::Shadow, shadow );
392
editPalette.setInactive( cg );
393
setPreviewPalette( editPalette );
394
updateColorButtons();
397
void PaletteEditorAdvanced::buildDisabled()
399
QColorGroup cg = editPalette.active();
400
cg.setColor( QColorGroup::ButtonText, Qt::darkGray );
401
cg.setColor( QColorGroup::Foreground, Qt::darkGray );
402
cg.setColor( QColorGroup::Text, Qt::darkGray );
403
cg.setColor( QColorGroup::HighlightedText, Qt::darkGray );
404
editPalette.setDisabled( cg );
406
if ( checkBuildEffect->isChecked() )
407
buildDisabledEffect();
409
setPreviewPalette( editPalette );
410
updateColorButtons();
414
void PaletteEditorAdvanced::buildDisabledEffect()
416
QColorGroup cg = editPalette.disabled();
418
QColor light, midlight, mid, dark, shadow;
419
QColor btn = cg.color( QColorGroup::Button );
421
light = btn.light(150);
422
midlight = btn.light(115);
427
cg.setColor( QColorGroup::Light, light );
428
cg.setColor( QColorGroup::Midlight, midlight );
429
cg.setColor( QColorGroup::Mid, mid );
430
cg.setColor( QColorGroup::Dark, dark );
431
cg.setColor( QColorGroup::Shadow, shadow );
433
editPalette.setDisabled( cg );
434
setPreviewPalette( editPalette );
435
updateColorButtons();
438
void PaletteEditorAdvanced::setPreviewPalette( const QPalette& pal )
442
switch (selectedPalette) {
454
previewPalette.setActive( cg );
455
previewPalette.setInactive( cg );
456
previewPalette.setDisabled( cg );
459
void PaletteEditorAdvanced::updateColorButtons()
461
QColor central, effect;
462
switch (selectedPalette) {
465
central = editPalette.active().color( centralFromItem( comboCentral->currentItem() ) );
466
effect = editPalette.active().color( effectFromItem( comboEffect->currentItem() ) );
469
central = editPalette.inactive().color( centralFromItem( comboCentral->currentItem() ) );
470
effect = editPalette.inactive().color( effectFromItem( comboEffect->currentItem() ) );
473
central = editPalette.disabled().color( centralFromItem( comboCentral->currentItem() ) );
474
effect = editPalette.disabled().color( effectFromItem( comboEffect->currentItem() ) );
478
buttonCentral->setColor(central);
479
buttonEffect->setColor(effect);
482
void PaletteEditorAdvanced::setPal( const QPalette& pal )
485
setPreviewPalette( pal );
486
updateColorButtons();
489
QPalette PaletteEditorAdvanced::pal() const
494
void PaletteEditorAdvanced::setupBackgroundMode( Qt::BackgroundMode mode )
499
case Qt::PaletteBackground:
502
case Qt::PaletteForeground:
505
case Qt::PaletteButton:
508
case Qt::PaletteBase:
511
case Qt::PaletteText:
514
case Qt::PaletteBrightText:
517
case Qt::PaletteButtonText:
520
case Qt::PaletteHighlight:
523
case Qt::PaletteHighlightedText:
526
case Qt::PaletteLight:
529
case Qt::PaletteMidlight:
532
case Qt::PaletteDark:
538
case Qt::PaletteShadow:
546
if ( initRole <= -1 ) return;
549
comboEffect->setCurrentItem( initRole - 9 );
552
comboCentral->setCurrentItem( initRole );
556
QPalette PaletteEditorAdvanced::getPalette( bool *ok, const QPalette &init,
557
Qt::BackgroundMode mode, QWidget* parent,
560
PaletteEditorAdvanced* dlg = new PaletteEditorAdvanced( parent, name, true );
561
dlg->setupBackgroundMode( mode );
563
if ( init != QPalette() )
565
int resultCode = dlg->exec();
567
QPalette result = init;
568
if ( resultCode == QDialog::Accepted ) {