forked from qt-creator/qt-creator
Move Project::makeUnique to Utils
This is more generic than projects Change-Id: Ifdbc57ff48f9fd4a40e6149ba636e0a55cbac502 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -27,9 +27,11 @@
|
|||||||
|
|
||||||
#include "utils_global.h"
|
#include "utils_global.h"
|
||||||
|
|
||||||
|
#include <QList>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QJsonValue;
|
class QJsonValue;
|
||||||
class QStringList;
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace Utils {
|
namespace Utils {
|
||||||
@@ -86,4 +88,18 @@ QTCREATOR_UTILS_EXPORT QString expandMacros(const QString &str, AbstractMacroExp
|
|||||||
|
|
||||||
QTCREATOR_UTILS_EXPORT int parseUsedPortFromNetstatOutput(const QByteArray &line);
|
QTCREATOR_UTILS_EXPORT int parseUsedPortFromNetstatOutput(const QByteArray &line);
|
||||||
|
|
||||||
|
template<typename T, typename Container>
|
||||||
|
T makeUniquelyNumbered(const T &preferred, const Container &reserved)
|
||||||
|
{
|
||||||
|
if (!reserved.contains(preferred))
|
||||||
|
return preferred;
|
||||||
|
int i = 2;
|
||||||
|
T tryName = preferred + QString::number(i);
|
||||||
|
while (reserved.contains(tryName))
|
||||||
|
tryName = preferred + QString::number(++i);
|
||||||
|
return tryName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace Utils
|
} // namespace Utils
|
||||||
|
|||||||
@@ -29,12 +29,12 @@
|
|||||||
|
|
||||||
#include <projectexplorer/projectexplorerconstants.h>
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
#include <projectexplorer/projectexplorericons.h>
|
#include <projectexplorer/projectexplorericons.h>
|
||||||
#include <projectexplorer/project.h>
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <utils/environment.h>
|
#include <utils/environment.h>
|
||||||
#include <utils/detailswidget.h>
|
#include <utils/detailswidget.h>
|
||||||
#include <utils/pathchooser.h>
|
#include <utils/pathchooser.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/stringutils.h>
|
||||||
#include <utils/treemodel.h>
|
#include <utils/treemodel.h>
|
||||||
|
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
@@ -317,7 +317,7 @@ QString CMakeToolItemModel::uniqueDisplayName(const QString &base) const
|
|||||||
{
|
{
|
||||||
QStringList names;
|
QStringList names;
|
||||||
forItemsAtLevel<2>([&names](CMakeToolTreeItem *item) { names << item->m_name; });
|
forItemsAtLevel<2>([&names](CMakeToolTreeItem *item) { names << item->m_name; });
|
||||||
return ProjectExplorer::Project::makeUnique(base, names);
|
return Utils::makeUniquelyNumbered(base, names);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
#include "buildsettingspropertiespage.h"
|
#include "buildsettingspropertiespage.h"
|
||||||
#include "buildinfo.h"
|
#include "buildinfo.h"
|
||||||
#include "buildstepspage.h"
|
#include "buildstepspage.h"
|
||||||
#include "project.h"
|
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "buildconfiguration.h"
|
#include "buildconfiguration.h"
|
||||||
#include "projectconfigurationmodel.h"
|
#include "projectconfigurationmodel.h"
|
||||||
@@ -36,6 +35,7 @@
|
|||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <projectexplorer/projectexplorer.h>
|
#include <projectexplorer/projectexplorer.h>
|
||||||
#include <projectexplorer/buildmanager.h>
|
#include <projectexplorer/buildmanager.h>
|
||||||
|
#include <utils/stringutils.h>
|
||||||
|
|
||||||
#include <QMargins>
|
#include <QMargins>
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
@@ -269,7 +269,7 @@ QString BuildSettingsWidget::uniqueName(const QString & name)
|
|||||||
continue;
|
continue;
|
||||||
bcNames.append(bc->displayName());
|
bcNames.append(bc->displayName());
|
||||||
}
|
}
|
||||||
result = Project::makeUnique(result, bcNames);
|
result = Utils::makeUniquelyNumbered(result, bcNames);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,14 +30,14 @@
|
|||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <coreplugin/messagemanager.h>
|
#include <coreplugin/messagemanager.h>
|
||||||
|
|
||||||
#include <projectexplorer/project.h>
|
|
||||||
#include <projectexplorer/projectexplorerconstants.h>
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
#include <ssh/sshhostkeydatabase.h>
|
#include <ssh/sshhostkeydatabase.h>
|
||||||
|
#include <utils/algorithm.h>
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/persistentsettings.h>
|
#include <utils/persistentsettings.h>
|
||||||
#include <utils/qtcassert.h>
|
|
||||||
#include <utils/portlist.h>
|
#include <utils/portlist.h>
|
||||||
#include <utils/algorithm.h>
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/stringutils.h>
|
||||||
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
@@ -244,7 +244,7 @@ void DeviceManager::addDevice(const IDevice::ConstPtr &_device)
|
|||||||
names << tmp->displayName();
|
names << tmp->displayName();
|
||||||
}
|
}
|
||||||
|
|
||||||
device->setDisplayName(Project::makeUnique(device->displayName(), names));
|
device->setDisplayName(Utils::makeUniquelyNumbered(device->displayName(), names));
|
||||||
|
|
||||||
const int pos = d->indexForId(device->id());
|
const int pos = d->indexForId(device->id());
|
||||||
|
|
||||||
|
|||||||
@@ -239,17 +239,6 @@ bool Project::hasActiveBuildSettings() const
|
|||||||
return activeTarget() && IBuildConfigurationFactory::find(activeTarget());
|
return activeTarget() && IBuildConfigurationFactory::find(activeTarget());
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Project::makeUnique(const QString &preferredName, const QStringList &usedNames)
|
|
||||||
{
|
|
||||||
if (!usedNames.contains(preferredName))
|
|
||||||
return preferredName;
|
|
||||||
int i = 2;
|
|
||||||
QString tryName = preferredName + QString::number(i);
|
|
||||||
while (usedNames.contains(tryName))
|
|
||||||
tryName = preferredName + QString::number(++i);
|
|
||||||
return tryName;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Project::addTarget(Target *t)
|
void Project::addTarget(Target *t)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(t && !d->m_targets.contains(t), return);
|
QTC_ASSERT(t && !d->m_targets.contains(t), return);
|
||||||
|
|||||||
@@ -141,8 +141,6 @@ public:
|
|||||||
virtual QStringList filesGeneratedFrom(const QString &sourceFile) const;
|
virtual QStringList filesGeneratedFrom(const QString &sourceFile) const;
|
||||||
bool isKnownFile(const Utils::FileName &filename) const;
|
bool isKnownFile(const Utils::FileName &filename) const;
|
||||||
|
|
||||||
static QString makeUnique(const QString &preferredName, const QStringList &usedNames);
|
|
||||||
|
|
||||||
virtual QVariantMap toMap() const;
|
virtual QVariantMap toMap() const;
|
||||||
|
|
||||||
Core::Context projectContext() const;
|
Core::Context projectContext() const;
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
#include "deployconfiguration.h"
|
#include "deployconfiguration.h"
|
||||||
#include "runconfiguration.h"
|
#include "runconfiguration.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "project.h"
|
|
||||||
#include "projectconfigurationmodel.h"
|
#include "projectconfigurationmodel.h"
|
||||||
#include "session.h"
|
#include "session.h"
|
||||||
|
|
||||||
@@ -38,6 +37,7 @@
|
|||||||
#include <projectexplorer/buildmanager.h>
|
#include <projectexplorer/buildmanager.h>
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/stringutils.h>
|
||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
@@ -506,7 +506,7 @@ QString RunSettingsWidget::uniqueDCName(const QString &name)
|
|||||||
continue;
|
continue;
|
||||||
dcNames.append(dc->displayName());
|
dcNames.append(dc->displayName());
|
||||||
}
|
}
|
||||||
result = Project::makeUnique(result, dcNames);
|
result = Utils::makeUniquelyNumbered(result, dcNames);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -521,7 +521,7 @@ QString RunSettingsWidget::uniqueRCName(const QString &name)
|
|||||||
continue;
|
continue;
|
||||||
rcNames.append(rc->displayName());
|
rcNames.append(rc->displayName());
|
||||||
}
|
}
|
||||||
result = Project::makeUnique(result, rcNames);
|
result = Utils::makeUniquelyNumbered(result, rcNames);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,8 +44,9 @@
|
|||||||
#include <projectexplorer/projectexplorericons.h>
|
#include <projectexplorer/projectexplorericons.h>
|
||||||
#include <extensionsystem/pluginmanager.h>
|
#include <extensionsystem/pluginmanager.h>
|
||||||
#include <projectexplorer/projectexplorer.h>
|
#include <projectexplorer/projectexplorer.h>
|
||||||
#include <utils/qtcassert.h>
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/stringutils.h>
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
@@ -190,7 +191,7 @@ void Target::addBuildConfiguration(BuildConfiguration *bc)
|
|||||||
// Check that we don't have a configuration with the same displayName
|
// Check that we don't have a configuration with the same displayName
|
||||||
QString configurationDisplayName = bc->displayName();
|
QString configurationDisplayName = bc->displayName();
|
||||||
QStringList displayNames = Utils::transform(d->m_buildConfigurations, &BuildConfiguration::displayName);
|
QStringList displayNames = Utils::transform(d->m_buildConfigurations, &BuildConfiguration::displayName);
|
||||||
configurationDisplayName = Project::makeUnique(configurationDisplayName, displayNames);
|
configurationDisplayName = Utils::makeUniquelyNumbered(configurationDisplayName, displayNames);
|
||||||
if (configurationDisplayName != bc->displayName()) {
|
if (configurationDisplayName != bc->displayName()) {
|
||||||
if (bc->usesDefaultDisplayName())
|
if (bc->usesDefaultDisplayName())
|
||||||
bc->setDefaultDisplayName(configurationDisplayName);
|
bc->setDefaultDisplayName(configurationDisplayName);
|
||||||
@@ -265,7 +266,7 @@ void Target::addDeployConfiguration(DeployConfiguration *dc)
|
|||||||
// Check that we don't have a configuration with the same displayName
|
// Check that we don't have a configuration with the same displayName
|
||||||
QString configurationDisplayName = dc->displayName();
|
QString configurationDisplayName = dc->displayName();
|
||||||
QStringList displayNames = Utils::transform(d->m_deployConfigurations, &DeployConfiguration::displayName);
|
QStringList displayNames = Utils::transform(d->m_deployConfigurations, &DeployConfiguration::displayName);
|
||||||
configurationDisplayName = Project::makeUnique(configurationDisplayName, displayNames);
|
configurationDisplayName = Utils::makeUniquelyNumbered(configurationDisplayName, displayNames);
|
||||||
dc->setDisplayName(configurationDisplayName);
|
dc->setDisplayName(configurationDisplayName);
|
||||||
|
|
||||||
// add it
|
// add it
|
||||||
@@ -376,7 +377,7 @@ void Target::addRunConfiguration(RunConfiguration *rc)
|
|||||||
// Check that we don't have a configuration with the same displayName
|
// Check that we don't have a configuration with the same displayName
|
||||||
QString configurationDisplayName = rc->displayName();
|
QString configurationDisplayName = rc->displayName();
|
||||||
QStringList displayNames = Utils::transform(d->m_runConfigurations, &RunConfiguration::displayName);
|
QStringList displayNames = Utils::transform(d->m_runConfigurations, &RunConfiguration::displayName);
|
||||||
configurationDisplayName = Project::makeUnique(configurationDisplayName, displayNames);
|
configurationDisplayName = Utils::makeUniquelyNumbered(configurationDisplayName, displayNames);
|
||||||
rc->setDisplayName(configurationDisplayName);
|
rc->setDisplayName(configurationDisplayName);
|
||||||
|
|
||||||
d->m_runConfigurations.push_back(rc);
|
d->m_runConfigurations.push_back(rc);
|
||||||
|
|||||||
Reference in New Issue
Block a user