aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/beautifier/generalsettings.cpp
blob: 6b670305fe5ad44686709cee56ca1adcca32db2e (plain)
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// Copyright (C) 2016 Lorenz Haas
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0

#include "generalsettings.h"

#include "beautifierconstants.h"

#include <coreplugin/icore.h>
#include <utils/algorithm.h>
#include <utils/genericconstants.h>
#include <utils/mimeutils.h>

namespace Beautifier {
namespace Internal {

namespace {
const char AUTO_FORMAT_TOOL[]                 = "autoFormatTool";
const char AUTO_FORMAT_MIME[]                 = "autoFormatMime";
const char AUTO_FORMAT_ONLY_CURRENT_PROJECT[] = "autoFormatOnlyCurrentProject";
}

static GeneralSettings *m_instance;

GeneralSettings::GeneralSettings()
{
    m_instance = this;
    read();
}

GeneralSettings *GeneralSettings::instance()
{
    return m_instance;
}

void GeneralSettings::read()
{
    QSettings *s = Core::ICore::settings();
    s->beginGroup(Utils::Constants::BEAUTIFIER_SETTINGS_GROUP);
    s->beginGroup(Utils::Constants::BEAUTIFIER_GENERAL_GROUP);
    m_autoFormatOnSave = s->value(Utils::Constants::BEAUTIFIER_AUTO_FORMAT_ON_SAVE, false).toBool();
    m_autoFormatTool = s->value(AUTO_FORMAT_TOOL, QString()).toString();
    setAutoFormatMime(s->value(AUTO_FORMAT_MIME, "text/x-c++src;text/x-c++hdr").toString());
    m_autoFormatOnlyCurrentProject = s->value(AUTO_FORMAT_ONLY_CURRENT_PROJECT, true).toBool();
    s->endGroup();
    s->endGroup();
}

void GeneralSettings::save()
{
    QSettings *s = Core::ICore::settings();
    s->beginGroup(Utils::Constants::BEAUTIFIER_SETTINGS_GROUP);
    s->beginGroup(Utils::Constants::BEAUTIFIER_GENERAL_GROUP);
    s->setValue(Utils::Constants::BEAUTIFIER_AUTO_FORMAT_ON_SAVE, m_autoFormatOnSave);
    s->setValue(AUTO_FORMAT_TOOL, m_autoFormatTool);
    s->setValue(AUTO_FORMAT_MIME, autoFormatMimeAsString());
    s->setValue(AUTO_FORMAT_ONLY_CURRENT_PROJECT, m_autoFormatOnlyCurrentProject);
    s->endGroup();
    s->endGroup();
}

bool GeneralSettings::autoFormatOnSave() const
{
    return m_autoFormatOnSave;
}

void GeneralSettings::setAutoFormatOnSave(bool autoFormatOnSave)
{
    m_autoFormatOnSave = autoFormatOnSave;
}

QString GeneralSettings::autoFormatTool() const
{
    return m_autoFormatTool;
}

void GeneralSettings::setAutoFormatTool(const QString &autoFormatTool)
{
    m_autoFormatTool = autoFormatTool;
}

QList<Utils::MimeType> GeneralSettings::autoFormatMime() const
{
    return m_autoFormatMime;
}

QString GeneralSettings::autoFormatMimeAsString() const
{
    return Utils::transform(m_autoFormatMime, &Utils::MimeType::name).join("; ");
}

void GeneralSettings::setAutoFormatMime(const QList<Utils::MimeType> &autoFormatMime)
{
    m_autoFormatMime = autoFormatMime;
}

void GeneralSettings::setAutoFormatMime(const QString &mimeList)
{
    const QStringList stringTypes = mimeList.split(';');
    QList<Utils::MimeType> types;
    types.reserve(stringTypes.count());
    for (QString t : stringTypes) {
        t = t.trimmed();
        const Utils::MimeType mime = Utils::mimeTypeForName(t);
        if (mime.isValid())
            types << mime;
    }
    setAutoFormatMime(types);
}

bool GeneralSettings::autoFormatOnlyCurrentProject() const
{
    return m_autoFormatOnlyCurrentProject;
}

void GeneralSettings::setAutoFormatOnlyCurrentProject(bool autoFormatOnlyCurrentProject)
{
    m_autoFormatOnlyCurrentProject = autoFormatOnlyCurrentProject;
}

} // namespace Internal
} // namespace Beautifier