bool Window::OnMessage(CGUIMessage& message) { TRACE; switch (message.GetMessage()) { case GUI_MSG_WINDOW_DEINIT: { g_windowManager.ShowOverlay(ref(window)->OVERLAY_STATE_SHOWN); } break; case GUI_MSG_WINDOW_INIT: { ref(window)->OnMessage(message); g_windowManager.ShowOverlay(ref(window)->OVERLAY_STATE_HIDDEN); return true; } break; case GUI_MSG_CLICKED: { int iControl=message.GetSenderId(); AddonClass::Ref<Control> inf; // find python control object with same iControl std::vector<AddonClass::Ref<Control> >::iterator it = vecControls.begin(); while (it != vecControls.end()) { AddonClass::Ref<Control> pControl = (*it); if (pControl->iControlId == iControl) { inf = pControl.get(); break; } ++it; } // did we find our control? if (inf.isNotNull()) { // currently we only accept messages from a button or controllist with a select action if (inf->canAcceptMessages(message.GetParam1())) { invokeCallback(new CallbackFunction<Window,AddonClass::Ref<Control> >(this,&Window::onControl,inf.get())); PulseActionEvent(); // return true here as we are handling the event return true; } } // if we get here, we didn't add the action } break; } return ref(window)->OnMessage(message); }
void Window::close() { TRACE; bModal = false; if (!existingWindow) PulseActionEvent(); std::vector<CStdString> params; CApplicationMessenger::Get().ActivateWindow(iOldWindowId, params, false); iOldWindowId = 0; }
void Window::close() { XBMC_TRACE; bModal = false; if (!existingWindow) PulseActionEvent(); { DelayedCallGuard dcguard(languageHook); CApplicationMessenger::GetInstance().SendMsg(TMSG_GUI_PREVIOUS_WINDOW, iOldWindowId, 0); } iOldWindowId = 0; }
void Window::close() { XBMC_TRACE; bModal = false; if (!existingWindow) PulseActionEvent(); std::vector<std::string> params; { DelayedCallGuard dcguard(languageHook); CApplicationMessenger::Get().ActivateWindow(iOldWindowId, params, false); } iOldWindowId = 0; }
bool Window::OnAction(const CAction &action) { TRACE; // do the base class window first, and the call to python after this bool ret = ref(window)->OnAction(action); // workaround - for scripts which try to access the active control (focused) when there is none. // for example - the case when the mouse enters the screen. CGUIControl *pControl = ref(window)->GetFocusedControl(); if (action.IsMouse() && !pControl) return ret; AddonClass::Ref<Action> inf(new Action(action)); invokeCallback(new CallbackFunction<Window,AddonClass::Ref<Action> >(this,&Window::onAction,inf.get())); PulseActionEvent(); return ret; }