From 881a43a191e6423d8bebe0e35e5bd070ac4a29a3 Mon Sep 17 00:00:00 2001 From: Hugo Pereira Da Costa Date: Sun, 3 Oct 2010 02:22:56 +0000 Subject: [PATCH] Changed 'drawSeparator' boolean value into a combobox, for which 3 choices are available: - never draw separator - draw separator when window is active - always draw separator. This is usefull for e.g. firefox, when a flat background is used, in which case one might want the separator to always be enabled. svn path=/trunk/KDE/kdebase/workspace/; revision=1182027 --- clients/oxygen/config/oxygenconfig.cpp | 393 +++++++++--------- .../oxygen/config/oxygenconfigurationui.cpp | 4 +- .../oxygen/config/oxygenexceptiondialog.cpp | 12 +- .../oxygen/config/ui/oxygenconfigurationui.ui | 41 +- .../oxygen/config/ui/oxygenexceptiondialog.ui | 20 +- clients/oxygen/oxygenclient.h | 19 +- clients/oxygen/oxygenconfiguration.cpp | 23 +- clients/oxygen/oxygenconfiguration.h | 32 +- clients/oxygen/oxygenfactory.cpp | 2 +- 9 files changed, 321 insertions(+), 225 deletions(-) diff --git a/clients/oxygen/config/oxygenconfig.cpp b/clients/oxygen/config/oxygenconfig.cpp index 1ad6e6cc26..b593ae6e98 100644 --- a/clients/oxygen/config/oxygenconfig.cpp +++ b/clients/oxygen/config/oxygenconfig.cpp @@ -42,252 +42,269 @@ //_______________________________________________________________________ extern "C" { - KDE_EXPORT QObject* allocate_config( KConfig* conf, QWidget* parent ) - { return ( new Oxygen::Config( conf, parent ) ); } + KDE_EXPORT QObject* allocate_config( KConfig* conf, QWidget* parent ) + { return ( new Oxygen::Config( conf, parent ) ); } } namespace Oxygen { + + //_______________________________________________________________________ + Config::Config( KConfig*, QWidget* parent ): + QObject( parent ) + { - //_______________________________________________________________________ - Config::Config( KConfig*, QWidget* parent ): - QObject( parent ) - { + KGlobal::locale()->insertCatalog("kwin_clients"); - KGlobal::locale()->insertCatalog("kwin_clients"); + configuration_ = new KConfig( "oxygenrc" ); + KConfigGroup configurationGroup( configuration_, "Windeco"); - configuration_ = new KConfig( "oxygenrc" ); - KConfigGroup configurationGroup( configuration_, "Windeco"); + userInterface_ = new ConfigurationUi( parent ); - userInterface_ = new ConfigurationUi( parent ); + load( configurationGroup ); + connect( userInterface_, SIGNAL(changed()), SLOT( updateChanged() ) ); + userInterface_->show(); - load( configurationGroup ); - connect( userInterface_, SIGNAL(changed()), SLOT( updateChanged() ) ); - userInterface_->show(); - - } + } - //_______________________________________________________________________ - Config::~Config() - { - delete userInterface_; - delete configuration_; - } + //_______________________________________________________________________ + Config::~Config() + { + delete userInterface_; + delete configuration_; + } - //_______________________________________________________________________ - void Config::toggleExpertMode( bool value ) - { userInterface_->toggleExpertMode( value ); } + //_______________________________________________________________________ + void Config::toggleExpertMode( bool value ) + { userInterface_->toggleExpertMode( value ); } - //_______________________________________________________________________ - void Config::load( const KConfigGroup& ) - { + //_______________________________________________________________________ + void Config::load( const KConfigGroup& ) + { - // load standard configuration - loadConfiguration( Configuration( KConfigGroup( configuration_, "Windeco") ) ); - loadShadowConfiguration( QPalette::Active, ShadowConfiguration( QPalette::Active, KConfigGroup( configuration_, "ActiveShadow") ) ); - loadShadowConfiguration( QPalette::Inactive, ShadowConfiguration( QPalette::Inactive, KConfigGroup( configuration_, "InactiveShadow") ) ); + // load standard configuration + loadConfiguration( Configuration( KConfigGroup( configuration_, "Windeco") ) ); + loadShadowConfiguration( QPalette::Active, ShadowConfiguration( QPalette::Active, KConfigGroup( configuration_, "ActiveShadow") ) ); + loadShadowConfiguration( QPalette::Inactive, ShadowConfiguration( QPalette::Inactive, KConfigGroup( configuration_, "InactiveShadow") ) ); - // load exceptions - ExceptionList exceptions; - exceptions.read( *configuration_ ); - if( exceptions.empty() ) - { exceptions = ExceptionList::defaultList(); } + // load exceptions + ExceptionList exceptions; + exceptions.read( *configuration_ ); + if( exceptions.empty() ) + { exceptions = ExceptionList::defaultList(); } - // install in ui - userInterface_->ui.exceptions->setExceptions( exceptions ); - updateChanged(); + // install in ui + userInterface_->ui.exceptions->setExceptions( exceptions ); + updateChanged(); - } + } - //_______________________________________________________________________ - void Config::updateChanged( void ) - { + //_______________________________________________________________________ + void Config::updateChanged( void ) + { - Configuration configuration( KConfigGroup( configuration_, "Windeco") ); - bool modified( false ); + Configuration configuration( KConfigGroup( configuration_, "Windeco") ); + bool modified( false ); - if( userInterface_->ui.titleAlignment->currentIndex() != userInterface_->ui.titleAlignment->findText( configuration.titleAlignmentName( true ) ) ) modified = true; - else if( userInterface_->ui.buttonSize->currentIndex() != userInterface_->ui.buttonSize->findText( configuration.buttonSizeName( true ) ) ) modified = true; - else if( userInterface_->ui.blendColor->currentIndex() != userInterface_->ui.blendColor->findText( configuration.blendColorName( true ) ) ) modified = true; - else if( userInterface_->ui.frameBorder->currentIndex() != userInterface_->ui.frameBorder->findText( configuration.frameBorderName( true ) ) ) modified = true; - else if( userInterface_->ui.sizeGripMode->currentIndex() != userInterface_->ui.sizeGripMode->findText( configuration.sizeGripModeName( true ) ) ) modified = true; - else if( userInterface_->ui.shadowMode->currentIndex() != userInterface_->ui.shadowMode->findText( configuration.shadowModeName( true ) ) ) modified = true; - else if( userInterface_->ui.shadowCacheMode->currentIndex() != userInterface_->ui.shadowCacheMode->findText( configuration.shadowCacheModeName( true ) ) ) modified = true; + if( userInterface_->ui.titleAlignment->currentIndex() != userInterface_->ui.titleAlignment->findText( configuration.titleAlignmentName( true ) ) ) modified = true; + else if( userInterface_->ui.buttonSize->currentIndex() != userInterface_->ui.buttonSize->findText( configuration.buttonSizeName( true ) ) ) modified = true; + else if( userInterface_->ui.blendColor->currentIndex() != userInterface_->ui.blendColor->findText( configuration.blendColorName( true ) ) ) modified = true; + else if( userInterface_->ui.frameBorder->currentIndex() != userInterface_->ui.frameBorder->findText( configuration.frameBorderName( true ) ) ) modified = true; + else if( userInterface_->ui.sizeGripMode->currentIndex() != userInterface_->ui.sizeGripMode->findText( configuration.sizeGripModeName( true ) ) ) modified = true; + else if( userInterface_->ui.shadowMode->currentIndex() != userInterface_->ui.shadowMode->findText( configuration.shadowModeName( true ) ) ) modified = true; + else if( userInterface_->ui.shadowCacheMode->currentIndex() != userInterface_->ui.shadowCacheMode->findText( configuration.shadowCacheModeName( true ) ) ) modified = true; - else if( userInterface_->ui.drawSeparator->isChecked() != configuration.drawSeparator() ) modified = true; - else if( userInterface_->ui.titleOutline->isChecked() != configuration.drawTitleOutline() ) modified = true; - else if( userInterface_->shadowConfigurations[0]->isChecked() != configuration.useOxygenShadows() ) modified = true; - else if( userInterface_->shadowConfigurations[1]->isChecked() != configuration.useDropShadows() ) modified = true; - else if( userInterface_->ui.tabsEnabled->isChecked() != configuration.tabsEnabled() ) modified = true; - else if( userInterface_->ui.useAnimations->isChecked() != configuration.useAnimations() ) modified = true; - else if( userInterface_->ui.animateTitleChange->isChecked() != configuration.animateTitleChange() ) modified = true; - else if( userInterface_->ui.narrowButtonSpacing->isChecked() != configuration.useNarrowButtonSpacing() ) modified = true; + else if( userInterface_->ui.separatorMode->currentIndex() != configuration.separatorMode() ) modified = true; + else if( userInterface_->ui.titleOutline->isChecked() != configuration.drawTitleOutline() ) modified = true; + else if( userInterface_->shadowConfigurations[0]->isChecked() != configuration.useOxygenShadows() ) modified = true; + else if( userInterface_->shadowConfigurations[1]->isChecked() != configuration.useDropShadows() ) modified = true; + else if( userInterface_->ui.tabsEnabled->isChecked() != configuration.tabsEnabled() ) modified = true; + else if( userInterface_->ui.useAnimations->isChecked() != configuration.useAnimations() ) modified = true; + else if( userInterface_->ui.animateTitleChange->isChecked() != configuration.animateTitleChange() ) modified = true; + else if( userInterface_->ui.narrowButtonSpacing->isChecked() != configuration.useNarrowButtonSpacing() ) modified = true; - // shadow configurations - else if( shadowConfigurationChanged( ShadowConfiguration( QPalette::Active, KConfigGroup( configuration_, "ActiveShadow") ), *userInterface_->shadowConfigurations[0] ) ) modified = true; - else if( shadowConfigurationChanged( ShadowConfiguration( QPalette::Inactive, KConfigGroup( configuration_, "InactiveShadow") ), *userInterface_->shadowConfigurations[1] ) ) modified = true; + // shadow configurations + else if( shadowConfigurationChanged( ShadowConfiguration( QPalette::Active, KConfigGroup( configuration_, "ActiveShadow") ), *userInterface_->shadowConfigurations[0] ) ) modified = true; + else if( shadowConfigurationChanged( ShadowConfiguration( QPalette::Inactive, KConfigGroup( configuration_, "InactiveShadow") ), *userInterface_->shadowConfigurations[1] ) ) modified = true; - // exceptions - else if( exceptionListChanged() ) modified = true; + // exceptions + else if( exceptionListChanged() ) modified = true; - // emit relevant signals - if( modified ) emit changed(); - emit changed( modified ); + // emit relevant signals + if( modified ) emit changed(); + emit changed( modified ); - } + } - //_______________________________________________________________________ - void Config::save( KConfigGroup& ) - { + //_______________________________________________________________________ + void Config::save( KConfigGroup& ) + { - // save standard configuration - KConfigGroup configurationGroup( configuration_, "Windeco"); + // save standard configuration + KConfigGroup configurationGroup( configuration_, "Windeco"); - // when writing text entries, on needs to make sure that strings written - // to the configuration file are *not* translated using current locale - configurationGroup.writeEntry( - OxygenConfig::TITLE_ALIGNMENT, - Configuration::titleAlignmentName( Configuration::titleAlignment( userInterface_->ui.titleAlignment->currentText(), true ), false ) ); + // when writing text entries, on needs to make sure that strings written + // to the configuration file are *not* translated using current locale + configurationGroup.writeEntry( + OxygenConfig::TITLE_ALIGNMENT, + Configuration::titleAlignmentName( Configuration::titleAlignment( userInterface_->ui.titleAlignment->currentText(), true ), false ) ); - configurationGroup.writeEntry( - OxygenConfig::BUTTON_SIZE, - Configuration::buttonSizeName( Configuration::buttonSize( userInterface_->ui.buttonSize->currentText(), true ), false ) ); + configurationGroup.writeEntry( + OxygenConfig::BUTTON_SIZE, + Configuration::buttonSizeName( Configuration::buttonSize( userInterface_->ui.buttonSize->currentText(), true ), false ) ); - configurationGroup.writeEntry( - OxygenConfig::BLEND_COLOR, - Configuration::blendColorName( Configuration::blendColor( userInterface_->ui.blendColor->currentText(), true ), false ) ); + configurationGroup.writeEntry( + OxygenConfig::BLEND_COLOR, + Configuration::blendColorName( Configuration::blendColor( userInterface_->ui.blendColor->currentText(), true ), false ) ); - configurationGroup.writeEntry( - OxygenConfig::FRAME_BORDER, - Configuration::frameBorderName( Configuration::frameBorder( userInterface_->ui.frameBorder->currentText(), true ), false ) ); + configurationGroup.writeEntry( + OxygenConfig::FRAME_BORDER, + Configuration::frameBorderName( Configuration::frameBorder( userInterface_->ui.frameBorder->currentText(), true ), false ) ); - configurationGroup.writeEntry( - OxygenConfig::SIZE_GRIP_MODE, - Configuration::sizeGripModeName( Configuration::sizeGripMode( userInterface_->ui.sizeGripMode->currentText(), true ), false ) ); + configurationGroup.writeEntry( + OxygenConfig::SIZE_GRIP_MODE, + Configuration::sizeGripModeName( Configuration::sizeGripMode( userInterface_->ui.sizeGripMode->currentText(), true ), false ) ); - configurationGroup.writeEntry( - OxygenConfig::SHADOW_CACHE_MODE, - Configuration::shadowCacheModeName( Configuration::shadowCacheMode( userInterface_->ui.shadowCacheMode->currentText(), true ), false ) ); + configurationGroup.writeEntry( + OxygenConfig::SHADOW_CACHE_MODE, + Configuration::shadowCacheModeName( Configuration::shadowCacheMode( userInterface_->ui.shadowCacheMode->currentText(), true ), false ) ); - configurationGroup.writeEntry( OxygenConfig::DRAW_SEPARATOR, userInterface_->ui.drawSeparator->isChecked() ); - configurationGroup.writeEntry( OxygenConfig::DRAW_TITLE_OUTLINE, userInterface_->ui.titleOutline->isChecked() ); - configurationGroup.writeEntry( OxygenConfig::USE_DROP_SHADOWS, userInterface_->shadowConfigurations[1]->isChecked() ); - configurationGroup.writeEntry( OxygenConfig::USE_OXYGEN_SHADOWS, userInterface_->shadowConfigurations[0]->isChecked() ); - configurationGroup.writeEntry( OxygenConfig::TABS_ENABLED, userInterface_->ui.tabsEnabled->isChecked() ); - configurationGroup.writeEntry( OxygenConfig::USE_ANIMATIONS, userInterface_->ui.useAnimations->isChecked() ); - configurationGroup.writeEntry( OxygenConfig::ANIMATE_TITLE_CHANGE, userInterface_->ui.animateTitleChange->isChecked() ); - configurationGroup.writeEntry( OxygenConfig::NARROW_BUTTON_SPACING, userInterface_->ui.narrowButtonSpacing->isChecked() ); + switch( userInterface_->ui.separatorMode->currentIndex() ) + { + default: + case 0: + configurationGroup.writeEntry( OxygenConfig::DRAW_SEPARATOR, false ); + break; - // write exceptions - userInterface_->ui.exceptions->exceptions().write( *configuration_ ); + case 1: + configurationGroup.writeEntry( OxygenConfig::DRAW_SEPARATOR, true ); + configurationGroup.writeEntry( OxygenConfig::SEPARATOR_ACTIVE_ONLY, true ); + break; - // write shadow configuration - configurationGroup.writeEntry( OxygenConfig::SHADOW_MODE, - Configuration::shadowModeName( Configuration::shadowMode( userInterface_->ui.shadowMode->currentText(), true ), false ) ); - saveShadowConfiguration( QPalette::Active, *userInterface_->shadowConfigurations[0] ); - saveShadowConfiguration( QPalette::Inactive, *userInterface_->shadowConfigurations[1] ); + case 2: + configurationGroup.writeEntry( OxygenConfig::DRAW_SEPARATOR, true ); + configurationGroup.writeEntry( OxygenConfig::SEPARATOR_ACTIVE_ONLY, false ); + break; + } - // sync configuration - configuration_->sync(); + configurationGroup.writeEntry( OxygenConfig::DRAW_TITLE_OUTLINE, userInterface_->ui.titleOutline->isChecked() ); + configurationGroup.writeEntry( OxygenConfig::USE_DROP_SHADOWS, userInterface_->shadowConfigurations[1]->isChecked() ); + configurationGroup.writeEntry( OxygenConfig::USE_OXYGEN_SHADOWS, userInterface_->shadowConfigurations[0]->isChecked() ); + configurationGroup.writeEntry( OxygenConfig::TABS_ENABLED, userInterface_->ui.tabsEnabled->isChecked() ); + configurationGroup.writeEntry( OxygenConfig::USE_ANIMATIONS, userInterface_->ui.useAnimations->isChecked() ); + configurationGroup.writeEntry( OxygenConfig::ANIMATE_TITLE_CHANGE, userInterface_->ui.animateTitleChange->isChecked() ); + configurationGroup.writeEntry( OxygenConfig::NARROW_BUTTON_SPACING, userInterface_->ui.narrowButtonSpacing->isChecked() ); - } + // write exceptions + userInterface_->ui.exceptions->exceptions().write( *configuration_ ); + + // write shadow configuration + configurationGroup.writeEntry( OxygenConfig::SHADOW_MODE, + Configuration::shadowModeName( Configuration::shadowMode( userInterface_->ui.shadowMode->currentText(), true ), false ) ); + saveShadowConfiguration( QPalette::Active, *userInterface_->shadowConfigurations[0] ); + saveShadowConfiguration( QPalette::Inactive, *userInterface_->shadowConfigurations[1] ); + + // sync configuration + configuration_->sync(); + + } - //_______________________________________________________________________ - void Config::saveShadowConfiguration( QPalette::ColorGroup colorGroup, const ShadowConfigurationUi& ui ) const - { + //_______________________________________________________________________ + void Config::saveShadowConfiguration( QPalette::ColorGroup colorGroup, const ShadowConfigurationUi& ui ) const + { - assert( colorGroup == QPalette::Active || colorGroup == QPalette::Inactive ); + assert( colorGroup == QPalette::Active || colorGroup == QPalette::Inactive ); - // save shadow configuration - KConfigGroup configurationGroup( configuration_, ( (colorGroup == QPalette::Active) ? "ActiveShadow":"InactiveShadow" ) ); - configurationGroup.writeEntry( OxygenConfig::SHADOW_SIZE, ui.ui.shadowSize->value() ); - configurationGroup.writeEntry( OxygenConfig::SHADOW_VOFFSET, 0.1*ui.ui.verticalOffset->value() ); - configurationGroup.writeEntry( OxygenConfig::SHADOW_INNER_COLOR, ui.ui.innerColor->color() ); - configurationGroup.writeEntry( OxygenConfig::SHADOW_OUTER_COLOR, ui.ui.outerColor->color() ); - configurationGroup.writeEntry( OxygenConfig::SHADOW_USE_OUTER_COLOR, ui.ui.useOuterColor->isChecked() ); + // save shadow configuration + KConfigGroup configurationGroup( configuration_, ( (colorGroup == QPalette::Active) ? "ActiveShadow":"InactiveShadow" ) ); + configurationGroup.writeEntry( OxygenConfig::SHADOW_SIZE, ui.ui.shadowSize->value() ); + configurationGroup.writeEntry( OxygenConfig::SHADOW_VOFFSET, 0.1*ui.ui.verticalOffset->value() ); + configurationGroup.writeEntry( OxygenConfig::SHADOW_INNER_COLOR, ui.ui.innerColor->color() ); + configurationGroup.writeEntry( OxygenConfig::SHADOW_OUTER_COLOR, ui.ui.outerColor->color() ); + configurationGroup.writeEntry( OxygenConfig::SHADOW_USE_OUTER_COLOR, ui.ui.useOuterColor->isChecked() ); - } + } - //_______________________________________________________________________ - void Config::defaults() - { + //_______________________________________________________________________ + void Config::defaults() + { - // install default configuration - loadConfiguration( Configuration() ); + // install default configuration + loadConfiguration( Configuration() ); - // load shadows - loadShadowConfiguration( QPalette::Active, ShadowConfiguration( QPalette::Active ) ); - loadShadowConfiguration( QPalette::Inactive, ShadowConfiguration( QPalette::Inactive ) ); + // load shadows + loadShadowConfiguration( QPalette::Active, ShadowConfiguration( QPalette::Active ) ); + loadShadowConfiguration( QPalette::Inactive, ShadowConfiguration( QPalette::Inactive ) ); - // install default exceptions - userInterface_->ui.exceptions->setExceptions( ExceptionList::defaultList() ); + // install default exceptions + userInterface_->ui.exceptions->setExceptions( ExceptionList::defaultList() ); - updateChanged(); + updateChanged(); - } + } - //_______________________________________________________________________ - void Config::loadConfiguration( const Configuration& configuration ) - { + //_______________________________________________________________________ + void Config::loadConfiguration( const Configuration& configuration ) + { - userInterface_->ui.titleAlignment->setCurrentIndex( userInterface_->ui.titleAlignment->findText( configuration.titleAlignmentName( true ) ) ); - userInterface_->ui.buttonSize->setCurrentIndex( userInterface_->ui.buttonSize->findText( configuration.buttonSizeName( true ) ) ); - userInterface_->ui.blendColor->setCurrentIndex( userInterface_->ui.blendColor->findText( configuration.blendColorName( true ) ) ); - userInterface_->ui.frameBorder->setCurrentIndex( userInterface_->ui.frameBorder->findText( configuration.frameBorderName( true ) ) ); - userInterface_->ui.sizeGripMode->setCurrentIndex( userInterface_->ui.sizeGripMode->findText( configuration.sizeGripModeName( true ) ) ); + userInterface_->ui.titleAlignment->setCurrentIndex( userInterface_->ui.titleAlignment->findText( configuration.titleAlignmentName( true ) ) ); + userInterface_->ui.buttonSize->setCurrentIndex( userInterface_->ui.buttonSize->findText( configuration.buttonSizeName( true ) ) ); + userInterface_->ui.blendColor->setCurrentIndex( userInterface_->ui.blendColor->findText( configuration.blendColorName( true ) ) ); + userInterface_->ui.frameBorder->setCurrentIndex( userInterface_->ui.frameBorder->findText( configuration.frameBorderName( true ) ) ); + userInterface_->ui.sizeGripMode->setCurrentIndex( userInterface_->ui.sizeGripMode->findText( configuration.sizeGripModeName( true ) ) ); - userInterface_->ui.drawSeparator->setChecked( configuration.drawSeparator() ); - userInterface_->ui.titleOutline->setChecked( configuration.drawTitleOutline() ); - userInterface_->shadowConfigurations[0]->setChecked( configuration.useOxygenShadows() ); - userInterface_->shadowConfigurations[1]->setChecked( configuration.useDropShadows() ); - userInterface_->ui.tabsEnabled->setChecked( configuration.tabsEnabled() ); - userInterface_->ui.useAnimations->setChecked( configuration.useAnimations() ); - userInterface_->ui.animateTitleChange->setChecked( configuration.animateTitleChange() ); - userInterface_->ui.narrowButtonSpacing->setChecked( configuration.useNarrowButtonSpacing() ); - userInterface_->ui.shadowMode->setCurrentIndex( userInterface_->ui.shadowMode->findText( configuration.shadowModeName( true ) ) ); - userInterface_->ui.shadowCacheMode->setCurrentIndex( userInterface_->ui.shadowCacheMode->findText( configuration.shadowCacheModeName( true ) ) ); - } + userInterface_->ui.separatorMode->setCurrentIndex( configuration.separatorMode() ); + userInterface_->ui.titleOutline->setChecked( configuration.drawTitleOutline() ); + userInterface_->shadowConfigurations[0]->setChecked( configuration.useOxygenShadows() ); + userInterface_->shadowConfigurations[1]->setChecked( configuration.useDropShadows() ); + userInterface_->ui.tabsEnabled->setChecked( configuration.tabsEnabled() ); + userInterface_->ui.useAnimations->setChecked( configuration.useAnimations() ); + userInterface_->ui.animateTitleChange->setChecked( configuration.animateTitleChange() ); + userInterface_->ui.narrowButtonSpacing->setChecked( configuration.useNarrowButtonSpacing() ); + userInterface_->ui.shadowMode->setCurrentIndex( userInterface_->ui.shadowMode->findText( configuration.shadowModeName( true ) ) ); + userInterface_->ui.shadowCacheMode->setCurrentIndex( userInterface_->ui.shadowCacheMode->findText( configuration.shadowCacheModeName( true ) ) ); + } - //_______________________________________________________________________ - void Config::loadShadowConfiguration( QPalette::ColorGroup colorGroup, const ShadowConfiguration& configuration ) - { - assert( colorGroup == QPalette::Active || colorGroup == QPalette::Inactive ); - ShadowConfigurationUi* ui = userInterface_->shadowConfigurations[ (colorGroup == QPalette::Active) ? 0:1 ]; - ui->ui.shadowSize->setValue( configuration.shadowSize() ); - ui->ui.verticalOffset->setValue( 10*configuration.verticalOffset() ); - ui->ui.innerColor->setColor( configuration.innerColor() ); - ui->ui.outerColor->setColor( configuration.outerColor() ); - ui->ui.useOuterColor->setChecked( configuration.useOuterColor() ); - } + //_______________________________________________________________________ + void Config::loadShadowConfiguration( QPalette::ColorGroup colorGroup, const ShadowConfiguration& configuration ) + { + assert( colorGroup == QPalette::Active || colorGroup == QPalette::Inactive ); + ShadowConfigurationUi* ui = userInterface_->shadowConfigurations[ (colorGroup == QPalette::Active) ? 0:1 ]; + ui->ui.shadowSize->setValue( configuration.shadowSize() ); + ui->ui.verticalOffset->setValue( 10*configuration.verticalOffset() ); + ui->ui.innerColor->setColor( configuration.innerColor() ); + ui->ui.outerColor->setColor( configuration.outerColor() ); + ui->ui.useOuterColor->setChecked( configuration.useOuterColor() ); + } - //_______________________________________________________________________ - bool Config::shadowConfigurationChanged( const ShadowConfiguration& configuration, const ShadowConfigurationUi& ui ) const - { - bool modified( false ); + //_______________________________________________________________________ + bool Config::shadowConfigurationChanged( const ShadowConfiguration& configuration, const ShadowConfigurationUi& ui ) const + { + bool modified( false ); - if( ui.ui.shadowSize->value() != configuration.shadowSize() ) modified = true; - else if( 0.1*ui.ui.verticalOffset->value() != configuration.verticalOffset() ) modified = true; - else if( ui.ui.innerColor->color() != configuration.innerColor() ) modified = true; - else if( ui.ui.useOuterColor->isChecked() != configuration.useOuterColor() ) modified = true; - else if( ui.ui.useOuterColor->isChecked() && ui.ui.outerColor->color() != configuration.outerColor() ) modified = true; - return modified; - } + if( ui.ui.shadowSize->value() != configuration.shadowSize() ) modified = true; + else if( 0.1*ui.ui.verticalOffset->value() != configuration.verticalOffset() ) modified = true; + else if( ui.ui.innerColor->color() != configuration.innerColor() ) modified = true; + else if( ui.ui.useOuterColor->isChecked() != configuration.useOuterColor() ) modified = true; + else if( ui.ui.useOuterColor->isChecked() && ui.ui.outerColor->color() != configuration.outerColor() ) modified = true; + return modified; + } - //_______________________________________________________________________ - bool Config::exceptionListChanged( void ) const - { + //_______________________________________________________________________ + bool Config::exceptionListChanged( void ) const + { - // get saved list - ExceptionList exceptions; - exceptions.read( *configuration_ ); - if( exceptions.empty() ) - { exceptions = ExceptionList::defaultList(); } + // get saved list + ExceptionList exceptions; + exceptions.read( *configuration_ ); + if( exceptions.empty() ) + { exceptions = ExceptionList::defaultList(); } - // compare to current - return exceptions != userInterface_->ui.exceptions->exceptions(); + // compare to current + return exceptions != userInterface_->ui.exceptions->exceptions(); - } + } } diff --git a/clients/oxygen/config/oxygenconfigurationui.cpp b/clients/oxygen/config/oxygenconfigurationui.cpp index 6aa6a3661a..09e2c4f5e3 100644 --- a/clients/oxygen/config/oxygenconfigurationui.cpp +++ b/clients/oxygen/config/oxygenconfigurationui.cpp @@ -102,7 +102,7 @@ namespace Oxygen connect( ui.shadowMode, SIGNAL( currentIndexChanged(int)), SLOT(shadowModeChanged(int)) ); connect( ui.shadowMode, SIGNAL( currentIndexChanged(int)), SIGNAL(changed()) ); connect( ui.shadowCacheMode, SIGNAL( currentIndexChanged(int)), SIGNAL(changed()) ); - connect( ui.titleOutline, SIGNAL(toggled( bool )), ui.drawSeparator, SLOT( setDisabled( bool ) ) ); + connect( ui.titleOutline, SIGNAL(toggled( bool )), ui.separatorMode, SLOT( setDisabled( bool ) ) ); connect( shadowConfigurations[0], SIGNAL( changed() ), SIGNAL( changed() ) ); connect( shadowConfigurations[0], SIGNAL( toggled( bool ) ), SIGNAL( changed() ) ); @@ -120,7 +120,7 @@ namespace Oxygen connect( ui.useAnimations, SIGNAL(clicked()), SIGNAL(changed()) ); connect( ui.animateTitleChange, SIGNAL(clicked()), SIGNAL(changed()) ); connect( ui.narrowButtonSpacing, SIGNAL(clicked()), SIGNAL(changed()) ); - connect( ui.drawSeparator, SIGNAL(clicked()), SIGNAL(changed()) ); + connect( ui.separatorMode, SIGNAL(currentIndexChanged(int)), SIGNAL(changed()) ); connect( ui.titleOutline, SIGNAL(clicked()), SIGNAL(changed()) ); connect( ui.exceptions, SIGNAL(changed()), SIGNAL(changed()) ); diff --git a/clients/oxygen/config/oxygenexceptiondialog.cpp b/clients/oxygen/config/oxygenexceptiondialog.cpp index 81e80c05cc..28c6f4c2b2 100644 --- a/clients/oxygen/config/oxygenexceptiondialog.cpp +++ b/clients/oxygen/config/oxygenexceptiondialog.cpp @@ -93,7 +93,6 @@ namespace Oxygen connect( ui.titleOutlineCheckBox, SIGNAL( toggled( bool ) ), ui.titleOutlineComboBox, SLOT( setEnabled( bool ) ) ); // separator - ui.separatorComboBox->insertItems(0, QStringList() << i18nc( "draw separator", "Enabled" ) << i18nc( "draw separator", "Disabled" ) ); ui.separatorComboBox->setEnabled( false ); checkboxes_.insert( std::make_pair( Exception::DrawSeparator, ui.separatorCheckBox ) ); connect( ui.separatorCheckBox, SIGNAL( toggled( bool ) ), ui.separatorComboBox, SLOT( setEnabled( bool ) ) ); @@ -113,7 +112,7 @@ namespace Oxygen ui.frameBorderComboBox->setCurrentIndex( ui.frameBorderComboBox->findText( exception.frameBorderName( true ) ) ); ui.blendColorComboBox->setCurrentIndex( ui.blendColorComboBox->findText( exception.blendColorName( true ) ) ); ui.sizeGripComboBox->setCurrentIndex( ui.sizeGripComboBox->findText( exception.sizeGripModeName( true ) ) ); - ui.separatorComboBox->setCurrentIndex( ui.separatorComboBox->findText( exception.drawSeparator() ? i18nc( "draw separator", "Enabled" ) : i18nc( "draw separator", "Disabled" ) ) ); + ui.separatorComboBox->setCurrentIndex( exception.separatorMode() ); ui.titleOutlineComboBox->setCurrentIndex( ui.titleOutlineComboBox->findText( exception.drawTitleOutline() ? i18nc( "outline window title", "Enabled" ) : i18nc( "outline window title", "Disabled" ) ) ); ui.hideTitleBar->setChecked( exception.hideTitleBar() ); @@ -134,7 +133,14 @@ namespace Oxygen exception.setSizeGripMode( Exception::sizeGripMode( ui.sizeGripComboBox->currentText(), true ) ); // flags - exception.setDrawSeparator( ui.separatorComboBox->currentText() == i18nc( "draw separator", "Enabled" ) ); + switch( ui.separatorComboBox->currentIndex() ) + { + default: + case 0: exception.setSeparatorMode( Configuration::SeparatorNever ); break; + case 1: exception.setSeparatorMode( Configuration::SeparatorActive ); break; + case 2: exception.setSeparatorMode( Configuration::SeparatorAlways ); break; + } + exception.setDrawTitleOutline( ui.titleOutlineComboBox->currentText() == i18nc( "outline window title", "Enabled" ) ); exception.setHideTitleBar( ui.hideTitleBar->isChecked() ); diff --git a/clients/oxygen/config/ui/oxygenconfigurationui.ui b/clients/oxygen/config/ui/oxygenconfigurationui.ui index 42d246a8db..0f3aa56a42 100644 --- a/clients/oxygen/config/ui/oxygenconfigurationui.ui +++ b/clients/oxygen/config/ui/oxygenconfigurationui.ui @@ -178,20 +178,13 @@ - - - Draw Separator between title bar and active window contents - - - - Use narrow space between decoration buttons - + Qt::Vertical @@ -220,6 +213,38 @@ + + + + + Never Draw Separator + + + + + Draw Separator When Window is Active + + + + + Always Draw Separator + + + + + + + + Separator display: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + separatorMode + + + diff --git a/clients/oxygen/config/ui/oxygenexceptiondialog.ui b/clients/oxygen/config/ui/oxygenexceptiondialog.ui index 6038b6319d..98b9e494bb 100644 --- a/clients/oxygen/config/ui/oxygenexceptiondialog.ui +++ b/clients/oxygen/config/ui/oxygenexceptiondialog.ui @@ -93,7 +93,7 @@ - Draw separator between title bar and window contents: + Separator display: @@ -134,7 +134,23 @@ - + + + + Never Draw Separator + + + + + Draw Separator When Window is Active + + + + + Always Draw Separator + + + diff --git a/clients/oxygen/oxygenclient.h b/clients/oxygen/oxygenclient.h index fe8ff15870..2eb61b1d65 100644 --- a/clients/oxygen/oxygenclient.h +++ b/clients/oxygen/oxygenclient.h @@ -93,11 +93,20 @@ namespace Oxygen //! true when separator is to be drawn bool drawSeparator( void ) const { - return - ( glowIsAnimated() || isActive() ) && - configuration().drawSeparator() && - !configuration().hideTitleBar() && - !configuration().drawTitleOutline(); + if( configuration().drawTitleOutline() ) return false; + switch( configuration().separatorMode() ) + { + case Configuration::SeparatorAlways: + return true; + + case Configuration::SeparatorActive: + return ( glowIsAnimated() || isActive() ); + + default: + case Configuration::SeparatorNever: + return false; + } + } //@} diff --git a/clients/oxygen/oxygenconfiguration.cpp b/clients/oxygen/oxygenconfiguration.cpp index 4fcb747a4b..865f9a764f 100644 --- a/clients/oxygen/oxygenconfiguration.cpp +++ b/clients/oxygen/oxygenconfiguration.cpp @@ -38,7 +38,7 @@ namespace Oxygen frameBorder_( BorderTiny ), blendColor_( RadialBlending ), sizeGripMode_( SizeGripWhenNeeded ), - drawSeparator_( false ), + separatorMode_( SeparatorNever ), drawTitleOutline_( false ), hideTitleBar_( false ), useDropShadows_( true ), @@ -84,10 +84,17 @@ namespace Oxygen group.readEntry( OxygenConfig::SIZE_GRIP_MODE, defaultConfiguration.sizeGripModeName( false ) ), false ) ); - // draw separator - setDrawSeparator( group.readEntry( - OxygenConfig::DRAW_SEPARATOR, - defaultConfiguration.drawSeparator() ) ); + // separator mode + if( !group.readEntry( OxygenConfig::DRAW_SEPARATOR, defaultConfiguration.separatorMode() == SeparatorNever ) ) + { + + setSeparatorMode( SeparatorNever ); + + } else if( group.readEntry( OxygenConfig::SEPARATOR_ACTIVE_ONLY, defaultConfiguration.separatorMode() == SeparatorActive ) ) { + + setSeparatorMode( SeparatorActive ); + + } else setSeparatorMode( SeparatorAlways ); // title outline setDrawTitleOutline( group.readEntry( @@ -154,7 +161,9 @@ namespace Oxygen group.writeEntry( OxygenConfig::FRAME_BORDER, frameBorderName( false ) ); group.writeEntry( OxygenConfig::SIZE_GRIP_MODE, sizeGripModeName( false ) ); - group.writeEntry( OxygenConfig::DRAW_SEPARATOR, drawSeparator() ); + group.writeEntry( OxygenConfig::DRAW_SEPARATOR, separatorMode() != SeparatorNever ); + group.writeEntry( OxygenConfig::SEPARATOR_ACTIVE_ONLY, separatorMode() == SeparatorActive ); + group.writeEntry( OxygenConfig::DRAW_TITLE_OUTLINE, drawTitleOutline() ); group.writeEntry( OxygenConfig::HIDE_TITLEBAR, hideTitleBar() ); group.writeEntry( OxygenConfig::USE_DROP_SHADOWS, useDropShadows() ); @@ -331,7 +340,7 @@ namespace Oxygen frameBorder() == other.frameBorder() && blendColor() == other.blendColor() && sizeGripMode() == other.sizeGripMode() && - drawSeparator() == other.drawSeparator() && + separatorMode() == other.separatorMode() && drawTitleOutline() == other.drawTitleOutline() && hideTitleBar() == other.hideTitleBar() && useDropShadows() == other.useDropShadows() && diff --git a/clients/oxygen/oxygenconfiguration.h b/clients/oxygen/oxygenconfiguration.h index 3b1e1ecef6..e5edd5a3a7 100644 --- a/clients/oxygen/oxygenconfiguration.h +++ b/clients/oxygen/oxygenconfiguration.h @@ -35,6 +35,7 @@ namespace OxygenConfig static const QString TITLE_ALIGNMENT = "TitleAlignment"; static const QString BUTTON_SIZE = "ButtonSize"; static const QString DRAW_SEPARATOR = "DrawSeparator"; + static const QString SEPARATOR_ACTIVE_ONLY = "SeparatorActiveOnly"; static const QString DRAW_TITLE_OUTLINE = "DrawTitleOutline"; static const QString FRAME_BORDER = "FrameBorder"; static const QString BLEND_COLOR = "BlendColor"; @@ -102,17 +103,30 @@ namespace Oxygen //! shadow cache mode enum ShadowCacheMode { - // no shadow cache + //! no shadow cache CacheDisabled, - // shadow cache depends - // on animation duration + //! shadow cache depends on animation duration CacheVariable, - // shadow cache has maximum size + //! shadow cache has maximum size CacheMaximum }; + //! decide when separator is to be drawn + enum SeparatorMode { + + //! never + SeparatorNever, + + //! active window only + SeparatorActive, + + //! always + SeparatorAlways + + }; + //! default constructor Configuration( void ); @@ -275,12 +289,12 @@ namespace Oxygen //@} //! separator - virtual bool drawSeparator( void ) const - { return drawSeparator_; } + virtual SeparatorMode separatorMode( void ) const + { return separatorMode_; } //! separator - virtual void setDrawSeparator( bool value ) - { drawSeparator_ = value; } + virtual void setSeparatorMode( SeparatorMode value ) + { separatorMode_ = value; } //! title outline virtual bool drawTitleOutline( void ) const @@ -364,7 +378,7 @@ namespace Oxygen SizeGripMode sizeGripMode_; //! separator - bool drawSeparator_; + SeparatorMode separatorMode_; //! active window title outline bool drawTitleOutline_; diff --git a/clients/oxygen/oxygenfactory.cpp b/clients/oxygen/oxygenfactory.cpp index b58637c98c..3e467f04b1 100644 --- a/clients/oxygen/oxygenfactory.cpp +++ b/clients/oxygen/oxygenfactory.cpp @@ -278,7 +278,7 @@ namespace Oxygen // propagate all features found in mask to the output configuration if( iter->mask() & Exception::FrameBorder ) configuration.setFrameBorder( iter->frameBorder() ); if( iter->mask() & Exception::BlendColor ) configuration.setBlendColor( iter->blendColor() ); - if( iter->mask() & Exception::DrawSeparator ) configuration.setDrawSeparator( iter->drawSeparator() ); + if( iter->mask() & Exception::DrawSeparator ) configuration.setSeparatorMode( iter->separatorMode() ); if( iter->mask() & Exception::TitleOutline ) configuration.setDrawTitleOutline( iter->drawTitleOutline() ); if( iter->mask() & Exception::SizeGripMode ) configuration.setSizeGripMode( iter->sizeGripMode() ); configuration.setHideTitleBar( iter->hideTitleBar() );