CMake: Allow CMake configuration to be forced to string type

This allows editing values with misidentified types in Project Mode.

Change-Id: Ic74da2ca71cc9046cbbeb1202075976c9edd28b7
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2017-09-14 13:16:10 +02:00
parent 3d8ddb389d
commit dfec256dff
4 changed files with 55 additions and 0 deletions

View File

@@ -134,6 +134,26 @@ bool ConfigModel::hasCMakeChanges() const
return Utils::contains(m_configuration, [](const InternalDataItem &i) { return i.isCMakeChanged; });
}
bool ConfigModel::canForceToString(const QModelIndex &idx) const
{
if (idx.model() != const_cast<ConfigModel *>(this) || idx.column() != 1)
return false;
Utils::TreeItem *item = itemForIndex(idx);
auto cmti = dynamic_cast<Internal::ConfigModelTreeItem *>(item);
return cmti && (cmti->dataItem->type != DataItem::STRING);
}
void ConfigModel::forceToString(const QModelIndex &idx)
{
QTC_ASSERT(canForceToString(idx), return);
Utils::TreeItem *item = itemForIndex(idx);
auto cmti = dynamic_cast<Internal::ConfigModelTreeItem *>(item);
cmti->dataItem->type = DataItem::STRING;
const QModelIndex valueIdx = idx.sibling(1, idx.column());
emit dataChanged(valueIdx, valueIdx);
}
QList<ConfigModel::DataItem> ConfigModel::configurationChanges() const
{
const QList<InternalDataItem> tmp