//@{ bool Interface_GUIWindow::set_focus_id(void* kodiBase, void* handle, int control_id) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log( LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p') on addon '%s'", __FUNCTION__, kodiBase, handle, addon ? addon->ID().c_str() : "unknown"); return false; } if (!pAddonWindow->GetControl(control_id)) { CLog::Log(LOGERROR, "Interface_GUIWindow - %s: %s - Control does not exist in window", __FUNCTION__, addon->Name().c_str()); return false; } Interface_GUIGeneral::lock(); CGUIMessage msg(GUI_MSG_SETFOCUS, pAddonWindow->m_windowId, control_id); pAddonWindow->OnMessage(msg); Interface_GUIGeneral::unlock(); return true; }
void Interface_GUIWindow::remove_list_item(void* kodiBase, void* handle, void* item) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow || !item) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p', " "item='%p') on addon '%s'", __FUNCTION__, kodiBase, handle, item, addon ? addon->ID().c_str() : "unknown"); return; } CFileItemPtr* pItem(static_cast<CFileItemPtr*>(item)); if (pItem->get() == nullptr) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - empty list item called on addon '%s'", __FUNCTION__, addon->ID().c_str()); return; } Interface_GUIGeneral::lock(); pAddonWindow->RemoveItem(pItem); Interface_GUIGeneral::unlock(); }
bool Interface_GUIWindow::close(void* kodiBase, void* handle) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (handle='%p') on addon '%s'", __FUNCTION__, handle, addon ? addon->ID().c_str() : "unknown"); return false; } pAddonWindow->PulseActionEvent(); Interface_GUIGeneral::lock(); // if it's a dialog, we have to close it a bit different if (pAddonWindow->IsDialog()) dynamic_cast<CGUIAddonWindowDialog*>(pAddonWindow)->Show(false); else g_windowManager.ActivateWindow(pAddonWindow->m_oldWindowId); pAddonWindow->m_oldWindowId = 0; Interface_GUIGeneral::unlock(); return true; }
void* Interface_GUIWindow::get_list_item(void* kodiBase, void* handle, int list_position) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p') on addon '%s'", __FUNCTION__, addon, handle, addon ? addon->ID().c_str() : "unknown"); return nullptr; } Interface_GUIGeneral::lock(); CFileItemPtr* pItem(pAddonWindow->GetListItem(list_position)); if (pItem == nullptr || pItem->get() == nullptr) { CLog::Log(LOGERROR, "ADDON::Interface_GUIWindow - %s: %s - Index out of range", __FUNCTION__, addon->Name().c_str()); if (pItem) { delete pItem; pItem = nullptr; } } Interface_GUIGeneral::unlock(); return pItem; }
bool Interface_GUIWindow::do_modal(void* kodiBase, void* handle) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (handle='%p') on addon '%s'", __FUNCTION__, handle, addon ? addon->ID().c_str() : "unknown"); return false; } if (pAddonWindow->GetID() == g_windowManager.GetActiveWindow()) return true; if (pAddonWindow->m_oldWindowId != pAddonWindow->m_windowId && pAddonWindow->m_windowId != g_windowManager.GetActiveWindow()) pAddonWindow->m_oldWindowId = g_windowManager.GetActiveWindow(); Interface_GUIGeneral::lock(); if (pAddonWindow->IsDialog()) dynamic_cast<CGUIAddonWindowDialog*>(pAddonWindow)->Show(true, true); else g_windowManager.ActivateWindow(pAddonWindow->GetID()); Interface_GUIGeneral::unlock(); return true; }
void* Interface_GUIWindow::GetControl(void* kodiBase, void* handle, int control_id, const char* function, CGUIControl::GUICONTROLTYPES type, const std::string& typeName) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p') on addon '%s'", function, addon, handle, addon ? addon->ID().c_str() : "unknown"); return nullptr; } return pAddonWindow->GetAddonControl(control_id, type, typeName); }
//@{ void Interface_GUIWindow::mark_dirty_region(void* kodiBase, void* handle) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p') on addon '%s'", __FUNCTION__, addon, handle, addon ? addon->ID().c_str() : "unknown"); return; } Interface_GUIGeneral::lock(); pAddonWindow->MarkDirtyRegion(); Interface_GUIGeneral::unlock(); }
void Interface_GUIWindow::set_container_content(void* kodiBase, void* handle, const char* value) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow || !value) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p', value='%p') on addon '%s'", __FUNCTION__, addon, handle, value, addon ? addon->ID().c_str() : "unknown"); return; } Interface_GUIGeneral::lock(); pAddonWindow->SetContainerContent(value); Interface_GUIGeneral::unlock(); }
void Interface_GUIWindow::set_current_list_position(void* kodiBase, void* handle, int list_position) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p') on addon '%s'", __FUNCTION__, addon, handle, addon ? addon->ID().c_str() : "unknown"); return; } Interface_GUIGeneral::lock(); pAddonWindow->SetCurrentListPosition(list_position); Interface_GUIGeneral::unlock(); }
bool Interface_GUIWindow::do_modal(void* kodiBase, void* handle) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p') on addon '%s'", __FUNCTION__, addon, handle, addon ? addon->ID().c_str() : "unknown"); return false; } if (pAddonWindow->GetID() != g_windowManager.GetActiveWindow()) show(kodiBase, handle); return true; }
void Interface_GUIWindow::set_control_label(void* kodiBase, void* handle, int control_id, const char *label) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow || !label) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p', label='%p') on addon '%s'", __FUNCTION__, addon, pAddonWindow, label, addon ? addon->ID().c_str() : "unknown"); return; } Interface_GUIGeneral::lock(); CGUIMessage msg(GUI_MSG_LABEL_SET, pAddonWindow->m_windowId, control_id); msg.SetLabel(label); pAddonWindow->OnMessage(msg); Interface_GUIGeneral::unlock(); }
int Interface_GUIWindow::get_current_container_id(void* kodiBase, void* handle) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p') on addon '%s'", __FUNCTION__, addon, handle, addon ? addon->ID().c_str() : "unknown"); return -1; } Interface_GUIGeneral::lock(); int id = pAddonWindow->GetCurrentContainerControlId(); Interface_GUIGeneral::unlock(); return id; }
int Interface_GUIWindow::get_list_size(void* kodiBase, void* handle) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p') on addon '%s'", __FUNCTION__, addon, handle, addon ? addon->ID().c_str() : "unknown"); return -1; } Interface_GUIGeneral::lock(); int listSize = pAddonWindow->GetListSize(); Interface_GUIGeneral::unlock(); return listSize; }
void Interface_GUIWindow::clear_property(void* kodiBase, void* handle, const char *key) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow || !key) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p', key='%p') on addon '%s'", __FUNCTION__, addon, pAddonWindow, key, addon ? addon->ID().c_str() : "unknown"); return; } std::string lowerKey = key; StringUtils::ToLower(lowerKey); Interface_GUIGeneral::lock(); pAddonWindow->SetProperty(lowerKey, ""); Interface_GUIGeneral::unlock(); }
int Interface_GUIWindow::get_focus_id(void* kodiBase, void* handle) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p') on addon '%s'", __FUNCTION__, addon, pAddonWindow, addon ? addon->ID().c_str() : "unknown"); return -1; } Interface_GUIGeneral::lock(); int control_id = pAddonWindow->GetFocusedControlID(); Interface_GUIGeneral::unlock(); if (control_id == -1) CLog::Log(LOGERROR, "Interface_GUIWindow - %s: %s - No control in this window has focus", __FUNCTION__, addon->Name().c_str()); return control_id; }
void Interface_GUIWindow::destroy(void* kodiBase, void* handle) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (handle='%p') on addon '%s'", __FUNCTION__, handle, addon ? addon->ID().c_str() : "unknown"); return; } Interface_GUIGeneral::lock(); CGUIWindow *pWindow = dynamic_cast<CGUIWindow*>(g_windowManager.GetWindow(pAddonWindow->GetID())); if (pWindow) { // first change to an existing window if (g_windowManager.GetActiveWindow() == pAddonWindow->GetID() && !g_application.m_bStop) { if(g_windowManager.GetWindow(pAddonWindow->m_oldWindowId)) g_windowManager.ActivateWindow(pAddonWindow->m_oldWindowId); else // old window does not exist anymore, switch to home g_windowManager.ActivateWindow(WINDOW_HOME); } // Free any window properties pAddonWindow->ClearProperties(); // free the window's resources and unload it (free all guicontrols) pAddonWindow->FreeResources(true); g_windowManager.Remove(pAddonWindow->GetID()); } delete pAddonWindow; Interface_GUIGeneral::unlock(); }
int Interface_GUIWindow::get_property_int(void* kodiBase, void* handle, const char *key) { CAddonDll* addon = static_cast<CAddonDll*>(kodiBase); CGUIAddonWindow* pAddonWindow = static_cast<CGUIAddonWindow*>(handle); if (!addon || !pAddonWindow || !key) { CLog::Log(LOGERROR, "Interface_GUIWindow::%s - invalid handler data (kodiBase='%p', handle='%p', " "key='%p') on addon '%s'", __FUNCTION__, kodiBase, handle, key, addon ? addon->ID().c_str() : "unknown"); return -1; } std::string lowerKey = key; StringUtils::ToLower(lowerKey); Interface_GUIGeneral::lock(); int value = static_cast<int>(pAddonWindow->GetProperty(lowerKey).asInteger()); Interface_GUIGeneral::unlock(); return value; }