Пример #1
0
bool StringOffsetProvider::setOffsetInListItem(int& offset, Visualization::VList* list,
		const QString& prefix, const QString& separator, const QString& /*postfix*/)
{
	if (offset == 0) return list->moveCursor( Visualization::Item::MoveOnPosition, QPoint(0,0));

	offset -= prefix.size();
	QStringList components = StringOffsetProvider::components(list->node());

	for (int i = 0; i<components.size(); ++i)
	{
		if (i>0) offset -= separator.size();

		if (offset <= components[i].size())
		{
			// If the offset is in a node before any visualized node go to the beginning of the list.
			if (i < list->rangeBegin() )
				return list->moveCursor( Visualization::Item::MoveOnPosition, QPoint(0,0));

			// If the offset is in a node after any visualized node go to the end of the list.
			if (i >= list->rangeEnd() )
				return list->moveCursor( Visualization::Item::MoveOnPosition, QPoint(list->width()-1, list->height()-1));

			if ( setOffsetInItem(offset, list->itemAt<Visualization::Item>(i - list->rangeBegin())) )
				return true;
		}
		else
			offset -= components[i].size();
	}

	if (offset == 0) // This most likely means that the components are empty
		return list->moveCursor( Visualization::Item::MoveOnPosition, QPoint(list->width()/2, list->height()/2));
	else // This means we've reached the end
		return list->moveCursor( Visualization::Item::MoveOnPosition, QPoint(list->width()-1, list->height()-1));
}
Пример #2
0
bool StringOffsetProvider::setOffsetInListItem(int& offset, Visualization::VList* list,
		const QString& prefix, const QString& separator, const QString& /*postfix*/)
{
	if (offset == 0) return list->moveCursor( Visualization::Item::MoveOnPosition, QPoint(0,0));

	offset -= prefix.size();
	QStringList components = StringOffsetProvider::components(list->node());

	for (int i = 0; i<list->length(); ++i)
	{
		if (i>0) offset -= separator.size();

		if (offset <= components[i].size())
		{
			if ( setOffsetInItem(offset, list->at<Visualization::Item>(i)) )
				return true;
		}
		else
			offset -= components[i].size();
	}

	if (offset == 0) // This most likely means that the components are empty
		return list->moveCursor( Visualization::Item::MoveOnPosition, QPoint(list->width()/2, list->height()/2));
	else // This means we've reached the end
		return list->moveCursor( Visualization::Item::MoveOnPosition, QPoint(list->width()-1, list->height()-1));
}
void CastStringOffsetProvider::setOffset(int offset)
{
	QStringList components = this->components();

	if (offset >0) offset -= components[0].size(); // Skip past the initial '('

	int childIndex = 1; // Corresponds to the second child - the type name
	if (offset > components[1].size())
	{
		offset -= components[1].size() + components[2].size();
		childIndex = 0;
		if (offset < 0) offset = 0;
	}

	setOffsetInItem(offset, vis_->layout()->at<Visualization::Item>(childIndex));
}
void StaticStringOffsetProvider::setOffset(int offset)
{
	setOffsetInItem(offset, vis_->item());
}