void TiUIScrollViewProxy::setContentOffset(Ti::TiValue arg)
{
	if(!arg.isList()) return;
	QList<Ti::TiValue> args = arg.toList();

	// Thanks for this ssaracut
	// https://github.com/appcelerator/titanium_mobile_blackberry/pull/217

	Ti::TiValue position = args.at(0);
	if(!position.isMap()) return;

	QMap<QString, Ti::TiValue> positionMap = position.toMap();
	Ti::TiValue xPos = positionMap.value(QString("x"));
	Ti::TiValue yPos = positionMap.value(QString("y"));
	float x = xPos.toNumber();
	float y = yPos.toNumber();
	bool isAnimated = true;

	if(args.size() > 1)
	{
		Ti::TiValue animated = args.at(1);
		if(animated.isMap())
		{
			QMap<QString, Ti::TiValue> animatedMap = animated.toMap();
			Ti::TiValue animatedValue = animatedMap.value(QString("animated"));
			isAnimated = animatedValue.toBool();
		}
	}



	_nativeScrollView->scrollToPoint((float)x, (float)y, isAnimated ? bb::cascades::ScrollAnimation::Default : bb::cascades::ScrollAnimation::None);
}
void Ti::TiViewProxy::setAnchorPoint(Ti::TiValue value)
{
	if(!value.isMap()) return;
	QMap<QString, Ti::TiValue> map = value.toMap();
	Ti::TiValue xValue = map.value("x");
	Ti::TiValue yValue = map.value("y");
	view->setPivot(xValue.toNumber(), yValue.toNumber());
}
Ti::TiValue TiUIScrollViewProxy::scrollTo(Ti::TiValue arg)
{
	if(!arg.isList()) return Ti::TiValue();
	QList<Ti::TiValue> array = arg.toList();
	if(array.size() < 2)  return Ti::TiValue();
	Ti::TiValue x = array.at(0);
	Ti::TiValue y = array.at(1);
	_nativeScrollView->scrollToPoint((float)x.toNumber(), (float)y.toNumber());
	return Ti::TiValue();
}
Ti::TiValue TiUITabGroupProxy::setActiveTab(Ti::TiValue value)
{
	if(value.isNumber())
	{
		setActiveTab(_allTabs.at((int)value.toNumber()));
	} else
	if(value.isProxy())
	{
		setActiveTab(static_cast<TiUITabProxy*>(value.toProxy()));
	}
	return Ti::TiValue();
}
// TODO: Finish this
Ti::TiValue Ti::TiProxy::fireEvent(Ti::TiValue value)
{
	QString eventName;
	Ti::TiEventParameters eventParams;
	if(value.isList()) {

		Ti::TiValue eName = value.toList().at(0);
		Ti::TiValue eParams = value.toList().at(1);
		eventName = eName.toString();

		if(eParams.isMap())
		{
			QMap<QString, Ti::TiValue> map = eParams.toMap();
			QList<QString> keys = map.keys();
			int len = keys.size();
			while(len--)
			{
				QString 	name 	= keys.at(len);
				Ti::TiValue val 	= map[name];

				if(val.isNumber())
				{
					eventParams.addParam(name, val.toNumber());
				}
				else if (val.isProxy())
				{
					eventParams.addParam(name, val.toProxy());
				}
				else // if(val.isString())
				{
					eventParams.addParam(name, val.toString());
				}
			}
		}
	}
	else
	{
		eventName = value.toString();
	}

	fireEvent(eventName, eventParams);

	return Ti::TiValue(Undefined());
}
void TiUIScrollViewProxy::setOverScrollMode(Ti::TiValue val)
{
	_nativeScrollView->scrollViewProperties()->setOverScrollEffectMode((bb::cascades::OverScrollEffectMode::Type)val.toNumber());
}
void TiUISliderProxy::setMinRange(Ti::TiValue val)
{
	_fromRange = val.toNumber();
	_native->setRange(_fromRange, _toRange);
}
void TiUISliderProxy::setMin(Ti::TiValue val)
{
	_native->setFromValue(val.toNumber());
}
void TiUISliderProxy::setMax(Ti::TiValue val)
{
	_native->setToValue(val.toNumber());
}
void Ti::TiViewProxy::setZIndex(Ti::TiValue value)
{
	getView()->setZIndex((int)value.toNumber());
}
void Ti::TiViewProxy::setOpacity(Ti::TiValue value)
{
	getChildControl()->setOpacity(value.toNumber());
}
void ToastNotificationProxy::setModality(Ti::TiValue value)
{
	if(value.isNumber()) {
		_toast->setModality(static_cast<bb::system::SystemUiModality::Type>(value.toNumber()));
	}
}