void UIConsoleEventHandler::cleanup() { /* Get console: */ const CConsole console = m_pSession->session().GetConsole(); if (console.isNull() || !console.isOk()) return; /* Get event-source: */ CEventSource eventSource = console.GetEventSource(); AssertReturnVoid(!eventSource.isNull() || eventSource.isOk()); /* Unregister listener: */ eventSource.UnregisterListener(m_mainEventListener); }
void UIConsoleEventHandler::prepare() { /* Make sure session is passed: */ AssertPtrReturnVoid(m_pSession); /* Create Main-event listener instance: */ ComObjPtr<UIMainEventListenerImpl> pListener; pListener.createObject(); pListener->init(new UIMainEventListener, this); m_mainEventListener = CEventListener(pListener); /* Get console: */ const CConsole console = m_pSession->session().GetConsole(); AssertReturnVoid(!console.isNull() && console.isOk()); /* Get event-source: */ CEventSource eventSource = console.GetEventSource(); AssertReturnVoid(!eventSource.isNull() && eventSource.isOk()); /* Register listener for expected event-types: */ QVector<KVBoxEventType> events; events << KVBoxEventType_OnMousePointerShapeChanged << KVBoxEventType_OnMouseCapabilityChanged << KVBoxEventType_OnKeyboardLedsChanged << KVBoxEventType_OnStateChanged << KVBoxEventType_OnAdditionsStateChanged << KVBoxEventType_OnNetworkAdapterChanged << KVBoxEventType_OnMediumChanged << KVBoxEventType_OnVRDEServerChanged << KVBoxEventType_OnVRDEServerInfoChanged << KVBoxEventType_OnVideoCaptureChanged << KVBoxEventType_OnUSBControllerChanged << KVBoxEventType_OnUSBDeviceStateChanged << KVBoxEventType_OnSharedFolderChanged << KVBoxEventType_OnCPUExecutionCapChanged << KVBoxEventType_OnGuestMonitorChanged << KVBoxEventType_OnRuntimeError << KVBoxEventType_OnCanShowWindow << KVBoxEventType_OnShowWindow; eventSource.RegisterListener(m_mainEventListener, events, TRUE); /* Prepare connections: */ connect(pListener->getWrapped(), SIGNAL(sigMousePointerShapeChange(bool, bool, QPoint, QSize, QVector<uint8_t>)), this, SIGNAL(sigMousePointerShapeChange(bool, bool, QPoint, QSize, QVector<uint8_t>)), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigMouseCapabilityChange(bool, bool, bool, bool)), this, SIGNAL(sigMouseCapabilityChange(bool, bool, bool, bool)), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigKeyboardLedsChangeEvent(bool, bool, bool)), this, SIGNAL(sigKeyboardLedsChangeEvent(bool, bool, bool)), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigStateChange(KMachineState)), this, SIGNAL(sigStateChange(KMachineState)), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigAdditionsChange()), this, SIGNAL(sigAdditionsChange()), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigNetworkAdapterChange(CNetworkAdapter)), this, SIGNAL(sigNetworkAdapterChange(CNetworkAdapter)), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigMediumChange(CMediumAttachment)), this, SIGNAL(sigMediumChange(CMediumAttachment)), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigVRDEChange()), this, SIGNAL(sigVRDEChange()), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigVideoCaptureChange()), this, SIGNAL(sigVideoCaptureChange()), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigUSBControllerChange()), this, SIGNAL(sigUSBControllerChange()), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigUSBDeviceStateChange(CUSBDevice, bool, CVirtualBoxErrorInfo)), this, SIGNAL(sigUSBDeviceStateChange(CUSBDevice, bool, CVirtualBoxErrorInfo)), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigSharedFolderChange()), this, SIGNAL(sigSharedFolderChange()), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigCPUExecutionCapChange()), this, SIGNAL(sigCPUExecutionCapChange()), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigGuestMonitorChange(KGuestMonitorChangedEventType, ulong, QRect)), this, SIGNAL(sigGuestMonitorChange(KGuestMonitorChangedEventType, ulong, QRect)), Qt::QueuedConnection); connect(pListener->getWrapped(), SIGNAL(sigRuntimeError(bool, QString, QString)), this, SIGNAL(sigRuntimeError(bool, QString, QString)), Qt::QueuedConnection); /* This is a vetoable event, so we have to respond to the event and have to * use a direct connection therefor. */ connect(pListener->getWrapped(), SIGNAL(sigCanShowWindow(bool&, QString&)), this, SLOT(sltCanShowWindow(bool&, QString&)), Qt::DirectConnection); /* This returns a winId, so we have to respond to the event and have to use * a direct connection therefor. */ connect(pListener->getWrapped(), SIGNAL(sigShowWindow(LONG64&)), this, SLOT(sltShowWindow(LONG64&)), Qt::DirectConnection); }