mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-26 18:35:20 +00:00
allow specifying enums as text in filters
This commit is contained in:
parent
649ef6f120
commit
9cb121bd04
@ -28,13 +28,30 @@ bool CSMFilter::TextNode::test (const CSMWorld::IdTable& table, int row,
|
|||||||
|
|
||||||
QVariant data = table.data (index);
|
QVariant data = table.data (index);
|
||||||
|
|
||||||
if (data.type()!=QVariant::String)
|
QString string;
|
||||||
|
|
||||||
|
if (data.type()==QVariant::String)
|
||||||
|
{
|
||||||
|
string = data.toString();
|
||||||
|
}
|
||||||
|
else if (data.type()==QVariant::Int || data.type()==QVariant::UInt ||
|
||||||
|
CSMWorld::Columns::hasEnums (static_cast<CSMWorld::Columns::ColumnId> (mColumnId)))
|
||||||
|
{
|
||||||
|
int value = data.toInt();
|
||||||
|
|
||||||
|
std::vector<std::string> enums =
|
||||||
|
CSMWorld::Columns::getEnums (static_cast<CSMWorld::Columns::ColumnId> (mColumnId));
|
||||||
|
|
||||||
|
if (value>=0 && value<static_cast<int> (enums.size()))
|
||||||
|
string = QString::fromUtf8 (enums[value].c_str());
|
||||||
|
}
|
||||||
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/// \todo make pattern syntax configurable
|
/// \todo make pattern syntax configurable
|
||||||
QRegExp regExp (QString::fromUtf8 (mText.c_str()), Qt::CaseInsensitive);
|
QRegExp regExp (QString::fromUtf8 (mText.c_str()), Qt::CaseInsensitive);
|
||||||
|
|
||||||
return regExp.exactMatch (data.toString());
|
return regExp.exactMatch (string);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<int> CSMFilter::TextNode::getReferencedColumns() const
|
std::vector<int> CSMFilter::TextNode::getReferencedColumns() const
|
||||||
|
Loading…
x
Reference in New Issue
Block a user