void NativeDateTimePickerObject::setupEvents(TiEventContainerFactory* containerFactory)
{
    NativeControlObject::setupEvents(containerFactory);
    TiEventContainer* eventChange = containerFactory->createEventContainer();
    eventChange->setDataProperty("type", tetCHANGE);
    events_.insert(tetCHANGE, EventPairSmartPtr(eventChange, new DateTimePickerEventHandler(eventChange)));
    QObject::connect(dateTimePicker_, SIGNAL(valueChanged(QDateTime)), events_[tetCHANGE]->handler(), SLOT(setValue(QDateTime)));
}
void NativeImageButtonObject::setupEvents(TiEventContainerFactory* containerFactory)
{
    NativeControlObject::setupEvents(containerFactory);
    TiEventContainer* eventClick = containerFactory->createEventContainer();
    eventClick->setDataProperty("type", tetCLICK);
    events_.insert(tetCLICK, EventPairSmartPtr(eventClick, new ImageButtonEventHandler(eventClick)));
    QObject::connect(button_, SIGNAL(clicked()), events_[tetCLICK]->handler(), SLOT(clicked(void)));
}
void NativeImageViewObject::setupEvents(TiEventContainerFactory* containerFactory)
{
    NativeControlObject::setupEvents(containerFactory);
    TiEventContainer* eventImageChanged = containerFactory->createEventContainer();
    eventImageChanged->setDataProperty("type", tetCHANGE);
    events_.insert(tetCHANGE, EventPairSmartPtr(eventImageChanged, new ImageViewEventHandler(eventImageChanged)));
    QObject::connect(imageView_, SIGNAL(imageChanged(const bb::cascades::Image)), events_[tetCHANGE]->handler(), SLOT(imageChanged(const bb::cascades::Image)));
}
void NativeOptionDialogObject::setupEvents(TiEventContainerFactory* containerFactory)
{
	NativeProxyObject::setupEvents(containerFactory);
    TiEventContainer* eventClick = containerFactory->createEventContainer();
    eventClick->setDataProperty("type", tetCLICK);
    events_.insert(tetCLICK, EventPairSmartPtr(eventClick, new NativeOptionDialogEventHandler(eventClick)));
    QObject::connect(dialog_, SIGNAL(finished(bb::system::SystemUiResult::Type)), events_[tetCLICK]->handler(), SLOT(clicked(bb::system::SystemUiResult::Type)));

}
int NativeProxyObject::setEventHandler(const char* eventName, TiEvent* event)
{
    TiEventContainer* container;
    if (events_.contains(eventName)) {
        container = events_[eventName]->container();
    } else {
        TiEventContainerFactory* factory = TitaniumRuntime::instance()->objectFactory()->getEventContainerFactory();
        container = factory->createEventContainer();
        events_.insert(eventName, EventPairSmartPtr(container, NULL));
    }

    event->setId(getNextEventId());
    container->addListener(event);
    return NATIVE_ERROR_OK;
}
void NativeOptionDialogEventHandler::clicked(bb::system::SystemUiResult::Type)
{
	bb::system::SystemListDialog* dialog = static_cast<bb::system::SystemListDialog*>(sender());
	bb::system::SystemUiButton* selectedButton = dialog->buttonSelection();
	if (selectedButton == NULL)
	{
		return;
	}
	int index = -1;
	if(dialog->selectedIndices().length() > 0)
	{
		index = dialog->selectedIndices().at(0);
	}
	TiEventContainer* container = getEventContainer();
	container->setDataProperty("index", index);
	container->setDataProperty("cancel", selectedButton == dialog->cancelButton());
	container->fireEvent();
}
void NativeVideoPlayerObject::setupEvents(TiEventContainerFactory* containerFactory)
{
	NativeControlObject::setupEvents(containerFactory);

	TiEventContainer* change = containerFactory->createEventContainer();
	change->setDataProperty("type", tetCHANGE);
	events_.insert(tetCHANGE, EventPairSmartPtr(change, new VideoPlayerObjectEventHandler(change, this)));

	TiEventContainer* completed = containerFactory->createEventContainer();
	change->setDataProperty("type", tetCOMPLETED);
	events_.insert(tetCOMPLETED, EventPairSmartPtr(completed,  new VideoPlayerObjectEventHandler(completed, this)));

	QObject::connect(player_, SIGNAL(bufferStatusChanged(bb::multimedia::BufferStatus::Type)),
							events_[tetCHANGE]->handler(), SLOT(changed(bb::multimedia::BufferStatus::Type)));
	QObject::connect(player_, SIGNAL(playbackCompleted()), events_[tetCOMPLETED]->handler(),
							SLOT(completed()));
	QObject::connect(player_, SIGNAL(repeatModeChanged(bb::multimedia::RepeatMode::Type)),
							events_[tetCHANGE]->handler(), SLOT(repeatModeChanged(bb::multimedia::RepeatMode::Type)));
	QObject::connect(foreignWindow_, SIGNAL(windowAttached(screen_window_t, QString, QString)),
							events_[tetCHANGE]->handler(),
							SLOT(windowAttached(screen_window_t, QString, QString)));
}