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() );