forked from qt-creator/qt-creator
Meson: Flatten directory hierarchy
Keep tests/ and icons/ but put the rest into the toplevel. The previous setup was so different from the rest of the bunch that it regularly stuck out in maintenance tasks. Change-Id: I69821be6268f69682353a388f6bb1fa343215303 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
80
src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp
Normal file
80
src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp
Normal file
@@ -0,0 +1,80 @@
|
||||
// Copyright (C) 2020 Alexis Jeandet.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "toolssettingsaccessor.h"
|
||||
|
||||
#include "mesonpluginconstants.h"
|
||||
|
||||
#include <app/app_version.h>
|
||||
#include <coreplugin/icore.h>
|
||||
#include <utils/fileutils.h>
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QVariantMap>
|
||||
|
||||
#include <iterator>
|
||||
#include <vector>
|
||||
|
||||
namespace MesonProjectManager {
|
||||
namespace Internal {
|
||||
|
||||
namespace {
|
||||
inline QString entryName(int index)
|
||||
{
|
||||
using namespace Constants;
|
||||
return QString("%1%2").arg(ToolsSettings::ENTRY_KEY).arg(index);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
ToolsSettingsAccessor::ToolsSettingsAccessor()
|
||||
: UpgradingSettingsAccessor("QtCreatorMesonTools",
|
||||
QCoreApplication::translate("MesonProjectManager::MesonToolManager",
|
||||
"Meson"),
|
||||
Core::Constants::IDE_DISPLAY_NAME)
|
||||
{
|
||||
setBaseFilePath(Core::ICore::userResourcePath(Constants::ToolsSettings::FILENAME));
|
||||
}
|
||||
|
||||
void ToolsSettingsAccessor::saveMesonTools(const std::vector<MesonTools::Tool_t> &tools,
|
||||
QWidget *parent)
|
||||
{
|
||||
using namespace Constants;
|
||||
QVariantMap data;
|
||||
int entry_count = 0;
|
||||
for (const MesonTools::Tool_t &tool : tools) {
|
||||
auto asMeson = std::dynamic_pointer_cast<MesonWrapper>(tool);
|
||||
if (asMeson)
|
||||
data.insert(entryName(entry_count), toVariantMap<MesonWrapper>(*asMeson));
|
||||
else {
|
||||
auto asNinja = std::dynamic_pointer_cast<NinjaWrapper>(tool);
|
||||
if (asNinja)
|
||||
data.insert(entryName(entry_count), toVariantMap<NinjaWrapper>(*asNinja));
|
||||
}
|
||||
entry_count++;
|
||||
}
|
||||
data.insert(ToolsSettings::ENTRY_COUNT, entry_count);
|
||||
saveSettings(data, parent);
|
||||
}
|
||||
|
||||
std::vector<MesonTools::Tool_t> ToolsSettingsAccessor::loadMesonTools(QWidget *parent)
|
||||
{
|
||||
using namespace Constants;
|
||||
auto data = restoreSettings(parent);
|
||||
auto entry_count = data.value(ToolsSettings::ENTRY_COUNT, 0).toInt();
|
||||
std::vector<MesonTools::Tool_t> result;
|
||||
for (auto toolIndex = 0; toolIndex < entry_count; toolIndex++) {
|
||||
auto name = entryName(toolIndex);
|
||||
if (data.contains(name)) {
|
||||
const auto map = data[name].toMap();
|
||||
auto type = map.value(ToolsSettings::TOOL_TYPE_KEY, ToolsSettings::TOOL_TYPE_MESON);
|
||||
if (type == ToolsSettings::TOOL_TYPE_NINJA)
|
||||
result.emplace_back(fromVariantMap<NinjaWrapper *>(data[name].toMap()));
|
||||
else
|
||||
result.emplace_back(fromVariantMap<MesonWrapper *>(data[name].toMap()));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace MesonProjectManager
|
||||
Reference in New Issue
Block a user