File: qcgconfig.cpp

package info (click to toggle)
kcachegrind 4%3A22.12.3-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 9,156 kB
  • sloc: cpp: 28,878; xml: 338; perl: 325; python: 235; sh: 9; makefile: 6
file content (88 lines) | stat: -rw-r--r-- 2,054 bytes parent folder | download | duplicates (2)
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);
}