You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

100 lines
3.3 KiB

//////////////////////////////////////////////////////////////////////////////
// breezeexceptionlist.cpp
// window decoration exceptions
// -------------------
//
// SPDX-FileCopyrightText: 2009 Hugo Pereira Da Costa <hugo.pereira@free.fr>
//
// 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);
}
}
}