1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
/*
This file is part of KCachegrind.
SPDX-FileCopyrightText: 2002-2016 Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
SPDX-License-Identifier: GPL-2.0-only
*/
/*
* Configuration for QCachegrind
*/
#include "qcgconfig.h"
#include <QSettings>
#include "tracedata.h"
#include "traceitemview.h"
//
// QCGConfigGroup
//
QCGConfigGroup::QCGConfigGroup(QSettings* settings, QString prefix,
bool readOnly)
{
_settings = settings;
_prefix = prefix;
_readOnly = readOnly;
}
QCGConfigGroup::~QCGConfigGroup()
{}
void QCGConfigGroup::setValue(const QString& key, const QVariant& value,
const QVariant& defaultValue)
{
if ((_settings == nullptr) || _readOnly) return;
QString fullKey = QStringLiteral("%1/%2").arg(_prefix).arg(key);
if (value == defaultValue)
_settings->remove(fullKey);
else
_settings->setValue(fullKey, value);
}
QVariant QCGConfigGroup::value(const QString& key,
const QVariant& defaultValue) const
{
if (_settings == nullptr) return defaultValue;
QString fullKey = QStringLiteral("%1/%2").arg(_prefix).arg(key);
return _settings->value(fullKey, defaultValue);
}
//
// QCGConfigStorage
//
QCGConfigStorage::QCGConfigStorage()
{
_settings = new QSettings;
}
QCGConfigStorage::~QCGConfigStorage()
{
delete _settings;
}
ConfigGroup* QCGConfigStorage::getGroup(const QString& group,
const QString& optSuffix)
{
// for writing
if (optSuffix.isEmpty())
return new QCGConfigGroup(_settings, group, false);
// for reading
QStringList gList = _settings->childGroups();
if (gList.contains(group+optSuffix))
return new QCGConfigGroup(_settings, group + optSuffix, true);
else if (gList.contains(group))
return new QCGConfigGroup(_settings, group, true);
// requested group does not exist, return only default values
return new QCGConfigGroup(nullptr, QString(), true);
}
|