////////////////////////////////////////////////////////////////////////////// // breezeexceptionlist.cpp // window decoration exceptions // ------------------- // // SPDX-FileCopyrightText: 2009 Hugo Pereira Da Costa // // SPDX-License-Identifier: MIT ////////////////////////////////////////////////////////////////////////////// #include "breezeexceptionlist.h" namespace Breeze { //______________________________________________________________ void ExceptionList::readConfig( KSharedConfig::Ptr config ) { _exceptions.clear(); QString groupName; for( int index = 0; config->hasGroup( groupName = exceptionGroupName( index ) ); ++index ) { // create exception InternalSettings exception; // reset group readConfig( &exception, config.data(), groupName ); // create new configuration InternalSettingsPtr configuration( new InternalSettings() ); configuration.data()->load(); // apply changes from exception configuration->setEnabled( exception.enabled() ); configuration->setExceptionType( exception.exceptionType() ); configuration->setExceptionPattern( exception.exceptionPattern() ); configuration->setMask( exception.mask() ); // propagate all features found in mask to the output configuration if( exception.mask() & BorderSize ) configuration->setBorderSize( exception.borderSize() ); configuration->setHideTitleBar( exception.hideTitleBar() ); // append to exceptions _exceptions.append( configuration ); } } //______________________________________________________________ void ExceptionList::writeConfig( KSharedConfig::Ptr config ) { // remove all existing exceptions QString groupName; for( int index = 0; config->hasGroup( groupName = exceptionGroupName( index ) ); ++index ) { config->deleteGroup( groupName ); } // rewrite current exceptions int index = 0; foreach( const InternalSettingsPtr& exception, _exceptions ) { writeConfig( exception.data(), config.data(), exceptionGroupName( index ) ); ++index; } } //_______________________________________________________________________ QString ExceptionList::exceptionGroupName( int index ) { return QString( "Windeco Exception %1" ).arg( index ); } //______________________________________________________________ void ExceptionList::writeConfig( KCoreConfigSkeleton* skeleton, KConfig* config, const QString& groupName ) { // list of items to be written QStringList keys = { "Enabled", "ExceptionPattern", "ExceptionType", "HideTitleBar", "Mask", "BorderSize"}; // write all items foreach( auto key, keys ) { KConfigSkeletonItem* item( skeleton->findItem( key ) ); if( !item ) continue; if( !groupName.isEmpty() ) item->setGroup( groupName ); KConfigGroup configGroup( config, item->group() ); configGroup.writeEntry( item->key(), item->property() ); } } //______________________________________________________________ void ExceptionList::readConfig( KCoreConfigSkeleton* skeleton, KConfig* config, const QString& groupName ) { foreach( KConfigSkeletonItem* item, skeleton->items() ) { if( !groupName.isEmpty() ) item->setGroup( groupName ); item->readConfig( config ); } } }