STDMETHODIMP UIMainEventListener::HandleEvent(VBoxEventType_T, IEvent *pEvent) { /* Try to acquire COM cleanup protection token first: */ if (!vboxGlobal().comTokenTryLockForRead()) return S_OK; CEvent comEvent(pEvent); //printf("Event received: %d\n", comEvent.GetType()); switch (comEvent.GetType()) { case KVBoxEventType_OnVBoxSVCAvailabilityChanged: { CVBoxSVCAvailabilityChangedEvent comEventSpecific(pEvent); emit sigVBoxSVCAvailabilityChange(comEventSpecific.GetAvailable()); break; } case KVBoxEventType_OnMachineStateChanged: { CMachineStateChangedEvent comEventSpecific(pEvent); emit sigMachineStateChange(comEventSpecific.GetMachineId(), comEventSpecific.GetState()); break; } case KVBoxEventType_OnMachineDataChanged: { CMachineDataChangedEvent comEventSpecific(pEvent); emit sigMachineDataChange(comEventSpecific.GetMachineId()); break; } case KVBoxEventType_OnMachineRegistered: { CMachineRegisteredEvent comEventSpecific(pEvent); emit sigMachineRegistered(comEventSpecific.GetMachineId(), comEventSpecific.GetRegistered()); break; } case KVBoxEventType_OnSessionStateChanged: { CSessionStateChangedEvent comEventSpecific(pEvent); emit sigSessionStateChange(comEventSpecific.GetMachineId(), comEventSpecific.GetState()); break; } case KVBoxEventType_OnSnapshotTaken: { CSnapshotTakenEvent comEventSpecific(pEvent); emit sigSnapshotTake(comEventSpecific.GetMachineId(), comEventSpecific.GetSnapshotId()); break; } case KVBoxEventType_OnSnapshotDeleted: { CSnapshotDeletedEvent comEventSpecific(pEvent); emit sigSnapshotDelete(comEventSpecific.GetMachineId(), comEventSpecific.GetSnapshotId()); break; } case KVBoxEventType_OnSnapshotChanged: { CSnapshotChangedEvent comEventSpecific(pEvent); emit sigSnapshotChange(comEventSpecific.GetMachineId(), comEventSpecific.GetSnapshotId()); break; } case KVBoxEventType_OnSnapshotRestored: { CSnapshotRestoredEvent comEventSpecific(pEvent); emit sigSnapshotRestore(comEventSpecific.GetMachineId(), comEventSpecific.GetSnapshotId()); break; } case KVBoxEventType_OnExtraDataCanChange: { CExtraDataCanChangeEvent comEventSpecific(pEvent); /* Has to be done in place to give an answer: */ bool fVeto = false; QString strReason; emit sigExtraDataCanChange(comEventSpecific.GetMachineId(), comEventSpecific.GetKey(), comEventSpecific.GetValue(), fVeto, strReason); if (fVeto) comEventSpecific.AddVeto(strReason); break; } case KVBoxEventType_OnExtraDataChanged: { CExtraDataChangedEvent comEventSpecific(pEvent); emit sigExtraDataChange(comEventSpecific.GetMachineId(), comEventSpecific.GetKey(), comEventSpecific.GetValue()); break; } case KVBoxEventType_OnStorageControllerChanged: { CStorageControllerChangedEvent comEventSpecific(pEvent); emit sigStorageControllerChange(comEventSpecific.GetMachinId(), comEventSpecific.GetControllerName()); break; } case KVBoxEventType_OnStorageDeviceChanged: { CStorageDeviceChangedEvent comEventSpecific(pEvent); emit sigStorageDeviceChange(comEventSpecific.GetStorageDevice(), comEventSpecific.GetRemoved(), comEventSpecific.GetSilent()); break; } case KVBoxEventType_OnMediumChanged: { CMediumChangedEvent comEventSpecific(pEvent); emit sigMediumChange(comEventSpecific.GetMediumAttachment()); break; } case KVBoxEventType_OnMediumConfigChanged: { CMediumConfigChangedEvent comEventSpecific(pEvent); emit sigMediumConfigChange(comEventSpecific.GetMedium()); break; } case KVBoxEventType_OnMediumRegistered: { CMediumRegisteredEvent comEventSpecific(pEvent); emit sigMediumRegistered(comEventSpecific.GetMediumId(), comEventSpecific.GetMediumType(), comEventSpecific.GetRegistered()); break; } case KVBoxEventType_OnMousePointerShapeChanged: { CMousePointerShapeChangedEvent comEventSpecific(pEvent); emit sigMousePointerShapeChange(comEventSpecific.GetVisible(), comEventSpecific.GetAlpha(), QPoint(comEventSpecific.GetXhot(), comEventSpecific.GetYhot()), QSize(comEventSpecific.GetWidth(), comEventSpecific.GetHeight()), comEventSpecific.GetShape()); break; } case KVBoxEventType_OnMouseCapabilityChanged: { CMouseCapabilityChangedEvent comEventSpecific(pEvent); emit sigMouseCapabilityChange(comEventSpecific.GetSupportsAbsolute(), comEventSpecific.GetSupportsRelative(), comEventSpecific.GetSupportsMultiTouch(), comEventSpecific.GetNeedsHostCursor()); break; } case KVBoxEventType_OnCursorPositionChanged: { CCursorPositionChangedEvent comEventSpecific(pEvent); emit sigCursorPositionChange(comEventSpecific.GetHasData(), (unsigned long)comEventSpecific.GetX(), (unsigned long)comEventSpecific.GetY()); break; } case KVBoxEventType_OnKeyboardLedsChanged: { CKeyboardLedsChangedEvent comEventSpecific(pEvent); emit sigKeyboardLedsChangeEvent(comEventSpecific.GetNumLock(), comEventSpecific.GetCapsLock(), comEventSpecific.GetScrollLock()); break; } case KVBoxEventType_OnStateChanged: { CStateChangedEvent comEventSpecific(pEvent); emit sigStateChange(comEventSpecific.GetState()); break; } case KVBoxEventType_OnAdditionsStateChanged: { emit sigAdditionsChange(); break; } case KVBoxEventType_OnNetworkAdapterChanged: { CNetworkAdapterChangedEvent comEventSpecific(pEvent); emit sigNetworkAdapterChange(comEventSpecific.GetNetworkAdapter()); break; } case KVBoxEventType_OnVRDEServerChanged: case KVBoxEventType_OnVRDEServerInfoChanged: { emit sigVRDEChange(); break; } case KVBoxEventType_OnRecordingChanged: { emit sigRecordingChange(); break; } case KVBoxEventType_OnUSBControllerChanged: { emit sigUSBControllerChange(); break; } case KVBoxEventType_OnUSBDeviceStateChanged: { CUSBDeviceStateChangedEvent comEventSpecific(pEvent); emit sigUSBDeviceStateChange(comEventSpecific.GetDevice(), comEventSpecific.GetAttached(), comEventSpecific.GetError()); break; } case KVBoxEventType_OnSharedFolderChanged: { emit sigSharedFolderChange(); break; } case KVBoxEventType_OnCPUExecutionCapChanged: { emit sigCPUExecutionCapChange(); break; } case KVBoxEventType_OnGuestMonitorChanged: { CGuestMonitorChangedEvent comEventSpecific(pEvent); emit sigGuestMonitorChange(comEventSpecific.GetChangeType(), comEventSpecific.GetScreenId(), QRect(comEventSpecific.GetOriginX(), comEventSpecific.GetOriginY(), comEventSpecific.GetWidth(), comEventSpecific.GetHeight())); break; } case KVBoxEventType_OnRuntimeError: { CRuntimeErrorEvent comEventSpecific(pEvent); emit sigRuntimeError(comEventSpecific.GetFatal(), comEventSpecific.GetId(), comEventSpecific.GetMessage()); break; } case KVBoxEventType_OnCanShowWindow: { CCanShowWindowEvent comEventSpecific(pEvent); /* Has to be done in place to give an answer: */ bool fVeto = false; QString strReason; emit sigCanShowWindow(fVeto, strReason); if (fVeto) comEventSpecific.AddVeto(strReason); else comEventSpecific.AddApproval(strReason); break; } case KVBoxEventType_OnShowWindow: { CShowWindowEvent comEventSpecific(pEvent); /* Has to be done in place to give an answer: */ qint64 winId = comEventSpecific.GetWinId(); if (winId != 0) break; /* Already set by some listener. */ emit sigShowWindow(winId); comEventSpecific.SetWinId(winId); break; } case KVBoxEventType_OnAudioAdapterChanged: { emit sigAudioAdapterChange(); break; } case KVBoxEventType_OnProgressPercentageChanged: { CProgressPercentageChangedEvent comEventSpecific(pEvent); emit sigProgressPercentageChange(comEventSpecific.GetProgressId(), (int)comEventSpecific.GetPercent()); break; } case KVBoxEventType_OnProgressTaskCompleted: { CProgressTaskCompletedEvent comEventSpecific(pEvent); emit sigProgressTaskComplete(comEventSpecific.GetProgressId()); break; } case KVBoxEventType_OnGuestSessionRegistered: { CGuestSessionRegisteredEvent comEventSpecific(pEvent); if (comEventSpecific.GetRegistered()) emit sigGuestSessionRegistered(comEventSpecific.GetSession()); else emit sigGuestSessionUnregistered(comEventSpecific.GetSession()); break; } case KVBoxEventType_OnGuestProcessRegistered: { CGuestProcessRegisteredEvent comEventSpecific(pEvent); if (comEventSpecific.GetRegistered()) emit sigGuestProcessRegistered(comEventSpecific.GetProcess()); else emit sigGuestProcessUnregistered(comEventSpecific.GetProcess()); break; } case KVBoxEventType_OnGuestSessionStateChanged: { CGuestSessionStateChangedEvent comEventSpecific(pEvent); emit sigGuestSessionStatedChanged(comEventSpecific); break; } case KVBoxEventType_OnGuestProcessInputNotify: case KVBoxEventType_OnGuestProcessOutput: { break; } case KVBoxEventType_OnGuestProcessStateChanged: { CGuestProcessStateChangedEvent comEventSpecific(pEvent); comEventSpecific.GetError(); emit sigGuestProcessStateChanged(comEventSpecific); break; } case KVBoxEventType_OnGuestFileRegistered: case KVBoxEventType_OnGuestFileStateChanged: case KVBoxEventType_OnGuestFileOffsetChanged: case KVBoxEventType_OnGuestFileRead: case KVBoxEventType_OnGuestFileWrite: { break; } default: break; } /* Unlock COM cleanup protection token: */ vboxGlobal().comTokenUnlock(); return S_OK; }
UIConsoleEventHandler::UIConsoleEventHandler(UISession *pSession) : m_pSession(pSession) { Assert(pSession); // RTPrintf("Self add: %RTthrd\n", RTThreadSelf()); ComObjPtr<UIMainEventListenerImpl> pListener; pListener.createObject(); pListener->init(new UIMainEventListener(), this); m_mainEventListener = CEventListener(pListener); QVector<KVBoxEventType> events; events << KVBoxEventType_OnMousePointerShapeChanged << KVBoxEventType_OnMouseCapabilityChanged << KVBoxEventType_OnKeyboardLedsChanged << KVBoxEventType_OnStateChanged << KVBoxEventType_OnAdditionsStateChanged << KVBoxEventType_OnNetworkAdapterChanged << KVBoxEventType_OnMediumChanged << KVBoxEventType_OnVRDEServerChanged << KVBoxEventType_OnVRDEServerInfoChanged << KVBoxEventType_OnUSBControllerChanged << KVBoxEventType_OnUSBDeviceStateChanged << KVBoxEventType_OnSharedFolderChanged << KVBoxEventType_OnRuntimeError << KVBoxEventType_OnCanShowWindow << KVBoxEventType_OnShowWindow << KVBoxEventType_OnCPUExecutionCapChanged << KVBoxEventType_OnGuestMonitorChanged; const CConsole &console = m_pSession->session().GetConsole(); console.GetEventSource().RegisterListener(m_mainEventListener, events, TRUE); AssertWrapperOk(console); 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)), this, SIGNAL(sigMouseCapabilityChange(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(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(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); 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); }
/** * @todo: instead of double wrapping of events into signals maybe it * make sense to use passive listeners, and peek up events in main thread. */ STDMETHODIMP UIMainEventListener::HandleEvent(VBoxEventType_T /* type */, IEvent *pEvent) { CEvent event(pEvent); // printf("Event received: %d\n", event.GetType()); switch(event.GetType()) { /* * All VirtualBox Events */ case KVBoxEventType_OnMachineStateChanged: { CMachineStateChangedEvent es(pEvent); emit sigMachineStateChange(es.GetMachineId(), es.GetState()); break; } case KVBoxEventType_OnMachineDataChanged: { CMachineDataChangedEvent es(pEvent); emit sigMachineDataChange(es.GetMachineId()); break; } case KVBoxEventType_OnExtraDataCanChange: { CExtraDataCanChangeEvent es(pEvent); /* Has to be done in place to give an answer */ bool fVeto = false; QString strReason; emit sigExtraDataCanChange(es.GetMachineId(), es.GetKey(), es.GetValue(), fVeto, strReason); if (fVeto) es.AddVeto(strReason); break; } case KVBoxEventType_OnExtraDataChanged: { CExtraDataChangedEvent es(pEvent); emit sigExtraDataChange(es.GetMachineId(), es.GetKey(), es.GetValue()); break; } /* Not used: case KVBoxEventType_OnMediumRegistered: */ case KVBoxEventType_OnMachineRegistered: { CMachineRegisteredEvent es(pEvent); emit sigMachineRegistered(es.GetMachineId(), es.GetRegistered()); break; } case KVBoxEventType_OnSessionStateChanged: { CSessionStateChangedEvent es(pEvent); emit sigSessionStateChange(es.GetMachineId(), es.GetState()); break; } /* Not used: case KVBoxEventType_OnSnapshotTaken: case KVBoxEventType_OnSnapshotDeleted: */ case KVBoxEventType_OnSnapshotChanged: { CSnapshotChangedEvent es(pEvent); emit sigSnapshotChange(es.GetMachineId(), es.GetSnapshotId()); break; } /* Not used: case KVBoxEventType_OnGuestPropertyChange: */ /* * All Console Events */ case KVBoxEventType_OnMousePointerShapeChanged: { CMousePointerShapeChangedEvent es(pEvent); emit sigMousePointerShapeChange(es.GetVisible(), es.GetAlpha(), QPoint(es.GetXhot(), es.GetYhot()), QSize(es.GetWidth(), es.GetHeight()), es.GetShape()); break; } case KVBoxEventType_OnMouseCapabilityChanged: { CMouseCapabilityChangedEvent es(pEvent); emit sigMouseCapabilityChange(es.GetSupportsAbsolute(), es.GetSupportsRelative(), es.GetNeedsHostCursor()); break; } case KVBoxEventType_OnKeyboardLedsChanged: { CKeyboardLedsChangedEvent es(pEvent); emit sigKeyboardLedsChangeEvent(es.GetNumLock(), es.GetCapsLock(), es.GetScrollLock()); break; } case KVBoxEventType_OnStateChanged: { CStateChangedEvent es(pEvent); emit sigStateChange(es.GetState()); break; } case KVBoxEventType_OnAdditionsStateChanged: { emit sigAdditionsChange(); break; } case KVBoxEventType_OnNetworkAdapterChanged: { CNetworkAdapterChangedEvent es(pEvent); emit sigNetworkAdapterChange(es.GetNetworkAdapter()); break; } /* Not used * case KVBoxEventType_OnSerialPortChanged: case KVBoxEventType_OnParallelPortChanged: case KVBoxEventType_OnStorageControllerChanged: */ case KVBoxEventType_OnMediumChanged: { CMediumChangedEvent es(pEvent); emit sigMediumChange(es.GetMediumAttachment()); break; } /* Not used * case KVBoxEventType_OnCPUChange: */ case KVBoxEventType_OnVRDEServerChanged: case KVBoxEventType_OnVRDEServerInfoChanged: { emit sigVRDEChange(); break; } case KVBoxEventType_OnUSBControllerChanged: { emit sigUSBControllerChange(); break; } case KVBoxEventType_OnUSBDeviceStateChanged: { CUSBDeviceStateChangedEvent es(pEvent); emit sigUSBDeviceStateChange(es.GetDevice(), es.GetAttached(), es.GetError()); break; } case KVBoxEventType_OnSharedFolderChanged: { emit sigSharedFolderChange(); break; } case KVBoxEventType_OnRuntimeError: { CRuntimeErrorEvent es(pEvent); emit sigRuntimeError(es.GetFatal(), es.GetId(), es.GetMessage()); break; } case KVBoxEventType_OnCanShowWindow: { CCanShowWindowEvent es(pEvent); /* Has to be done in place to give an answer */ bool fVeto = false; QString strReason; emit sigCanShowWindow(fVeto, strReason); if (fVeto) es.AddVeto(strReason); break; } case KVBoxEventType_OnShowWindow: { CShowWindowEvent es(pEvent); /* Has to be done in place to give an answer */ LONG64 winId; emit sigShowWindow(winId); es.SetWinId(winId); break; } case KVBoxEventType_OnCPUExecutionCapChanged: { emit sigCPUExecutionCapChange(); break; } case KVBoxEventType_OnGuestMonitorChanged: { CGuestMonitorChangedEvent es(pEvent); emit sigGuestMonitorChange(es.GetChangeType(), es.GetScreenId(), QRect(es.GetOriginX(), es.GetOriginY(), es.GetWidth(), es.GetHeight())); break; } default: break; } return S_OK; }
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); }