diff options
author | Lorenz Haas <lykurg@gmail.com> | 2015-09-17 21:27:25 +0200 |
---|---|---|
committer | Lorenz Haas <lorenz.haas@histomatics.de> | 2016-05-15 16:16:03 +0000 |
commit | e195c87299241503a4813ae4cc181d331ee5cc73 (patch) | |
tree | 624e12b4d45833eb6878c8a54d2c995f36b04f87 /src/plugins/beautifier/generalsettings.cpp | |
parent | 41cf9d7b33fc61dcdd0ee3490d35ba944d0d7326 (diff) | |
download | qt-creator-e195c87299241503a4813ae4cc181d331ee5cc73.tar.gz |
Beautifier: Add option to automatically format files on save
Change-Id: I72fb3f4b728df7ef3e449c1202df9cbb0279dde4
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Diffstat (limited to 'src/plugins/beautifier/generalsettings.cpp')
-rw-r--r-- | src/plugins/beautifier/generalsettings.cpp | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/src/plugins/beautifier/generalsettings.cpp b/src/plugins/beautifier/generalsettings.cpp new file mode 100644 index 0000000000..7afcca56e0 --- /dev/null +++ b/src/plugins/beautifier/generalsettings.cpp @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Lorenz Haas +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "generalsettings.h" + +#include "beautifierconstants.h" + +#include <coreplugin/icore.h> +#include <utils/mimetypes/mimedatabase.h> + +namespace Beautifier { +namespace Internal { + +namespace { +const char GROUP[] = "General"; +const char AUTO_FORMAT_ON_SAVE[] = "autoFormatOnSave"; +const char AUTO_FORMAT_TOOL[] = "autoFormatTool"; +const char AUTO_FORMAT_MIME[] = "autoFormatMime"; +const char AUTO_FORMAT_ONLY_CURRENT_PROJECT[] = "autoFormatOnlyCurrentProject"; +} + +GeneralSettings::GeneralSettings() +{ + read(); +} + +void GeneralSettings::read() +{ + QSettings *s = Core::ICore::settings(); + s->beginGroup(Constants::SETTINGS_GROUP); + s->beginGroup(GROUP); + m_autoFormatOnSave = s->value(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(Constants::SETTINGS_GROUP); + s->beginGroup(GROUP); + s->setValue(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 +{ + QStringList types; + types.reserve(m_autoFormatMime.count()); + for (auto t : m_autoFormatMime) + types << t.name(); + return types.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()); + const Utils::MimeDatabase mdb; + for (QString t : stringTypes) { + t = t.trimmed(); + const Utils::MimeType mime = mdb.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 |