void CVideoInfoDownloader::ShowErrorDialog(const ADDON::CScraperError &sce) { if (!sce.Title().empty()) { CGUIDialogOK *pdlg = (CGUIDialogOK *)g_windowManager.GetWindow(WINDOW_DIALOG_OK); pdlg->SetHeading(CVariant{sce.Title()}); pdlg->SetLine(0, CVariant{sce.Message()}); pdlg->Open(); } }
// \brief Show CGUIDialogOK dialog, then wait for user to dismiss it. bool CGUIDialogOK::ShowAndGetInput(CVariant heading, CVariant text) { CGUIDialogOK *dialog = (CGUIDialogOK *)g_windowManager.GetWindow(WINDOW_DIALOG_OK); if (!dialog) return false; dialog->SetHeading(heading); dialog->SetText(text); dialog->Open(); return dialog->IsConfirmed(); }
// \brief Show CGUIDialogOK dialog, then wait for user to dismiss it. void CGUIDialogOK::ShowAndGetInput(CVariant heading, CVariant line0, CVariant line1, CVariant line2) { CGUIDialogOK *dialog = (CGUIDialogOK *)g_windowManager.GetWindow(WINDOW_DIALOG_OK); if (!dialog) return; dialog->SetHeading(heading); dialog->SetLine(0, line0); dialog->SetLine(1, line1); dialog->SetLine(2, line2); dialog->Open(); }
// \brief Show CGUIDialogOK dialog, then wait for user to dismiss it. bool CGUIDialogOK::ShowAndGetInput(CVariant heading, CVariant line0, CVariant line1, CVariant line2) { CGUIDialogOK *dialog = g_windowManager.GetWindow<CGUIDialogOK>(WINDOW_DIALOG_OK); if (!dialog) return false; dialog->SetHeading(heading); dialog->SetLine(0, line0); dialog->SetLine(1, line1); dialog->SetLine(2, line2); dialog->Open(); return dialog->IsConfirmed(); }
void CAddonStatusHandler::Process() { CSingleLock lock(m_critSection); std::string heading = StringUtils::Format("%s: %s", TranslateType(m_addon->Type(), true).c_str(), m_addon->Name().c_str()); /* Request to restart the AddOn and data structures need updated */ if (m_status == ADDON_STATUS_NEED_RESTART) { CGUIDialogOK* pDialog = (CGUIDialogOK*)g_windowManager.GetWindow(WINDOW_DIALOG_OK); if (!pDialog) return; pDialog->SetHeading(CVariant{heading}); pDialog->SetLine(1, CVariant{24074}); pDialog->Open(); CAddonMgr::GetInstance().GetCallbackForType(m_addon->Type())->RequestRestart(m_addon, true); } /* Some required settings are missing/invalid */ else if ((m_status == ADDON_STATUS_NEED_SETTINGS) || (m_status == ADDON_STATUS_NEED_SAVEDSETTINGS)) { CGUIDialogYesNo* pDialogYesNo = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); if (!pDialogYesNo) return; pDialogYesNo->SetHeading(CVariant{heading}); pDialogYesNo->SetLine(1, CVariant{24070}); pDialogYesNo->SetLine(2, CVariant{24072}); pDialogYesNo->SetLine(3, CVariant{m_message}); pDialogYesNo->Open(); if (!pDialogYesNo->IsConfirmed()) return; if (!m_addon->HasSettings()) return; if (CGUIDialogAddonSettings::ShowAndGetInput(m_addon)) { //! @todo Doesn't dialogaddonsettings save these automatically? It should do this. m_addon->SaveSettings(); CAddonMgr::GetInstance().GetCallbackForType(m_addon->Type())->RequestRestart(m_addon, true); } } }
bool Dialog::ok(const String& heading, const String& line1, const String& line2, const String& line3) { DelayedCallGuard dcguard(languageHook); CGUIDialogOK* pDialog = (CGUIDialogOK*)g_windowManager.GetWindow(WINDOW_DIALOG_OK); if (pDialog == NULL) throw WindowException("Error: Window is NULL, this is not possible :-)"); if (!heading.empty()) pDialog->SetHeading(CVariant{heading}); if (!line1.empty()) pDialog->SetLine(0, CVariant{line1}); if (!line2.empty()) pDialog->SetLine(1, CVariant{line2}); if (!line3.empty()) pDialog->SetLine(2, CVariant{line3}); pDialog->Open(); return pDialog->IsConfirmed(); }
bool CAddonDll::LoadDll() { if (m_pDll) return true; std::string strFileName; std::string strAltFileName; if (!m_bIsChild) { strFileName = LibPath(); } else { std::string libPath = LibPath(); if (!XFILE::CFile::Exists(libPath)) { std::string temp = CSpecialProtocol::TranslatePath("special://xbmc/"); std::string tempbin = CSpecialProtocol::TranslatePath("special://xbmcbin/"); libPath.erase(0, temp.size()); libPath = tempbin + libPath; if (!XFILE::CFile::Exists(libPath)) { CLog::Log(LOGERROR, "ADDON: Could not locate %s", m_props.libname.c_str()); return false; } } std::stringstream childcount; childcount << GetChildCount(); std::string extension = URIUtils::GetExtension(libPath); strFileName = "special://temp/" + ID() + "-" + childcount.str() + extension; XFILE::CFile::Copy(libPath, strFileName); m_parentLib = libPath; CLog::Log(LOGNOTICE, "ADDON: Loaded virtual child addon %s", strFileName.c_str()); } /* Check if lib being loaded exists, else check in XBMC binary location */ #if defined(TARGET_ANDROID) // Android libs MUST live in this path, else multi-arch will break. // The usual soname requirements apply. no subdirs, and filename is ^lib.*\.so$ if (!XFILE::CFile::Exists(strFileName)) { std::string tempbin = getenv("XBMC_ANDROID_LIBS"); strFileName = tempbin + "/" + m_props.libname; } #endif if (!XFILE::CFile::Exists(strFileName)) { std::string altbin = CSpecialProtocol::TranslatePath("special://xbmcaltbinaddons/"); if (!altbin.empty()) { strAltFileName = altbin + m_props.libname; if (!XFILE::CFile::Exists(strAltFileName)) { std::string temp = CSpecialProtocol::TranslatePath("special://xbmc/addons/"); strAltFileName = strFileName; strAltFileName.erase(0, temp.size()); strAltFileName = altbin + strAltFileName; } CLog::Log(LOGDEBUG, "ADDON: Trying to load %s", strAltFileName.c_str()); } if (XFILE::CFile::Exists(strAltFileName)) strFileName = strAltFileName; else { std::string temp = CSpecialProtocol::TranslatePath("special://xbmc/"); std::string tempbin = CSpecialProtocol::TranslatePath("special://xbmcbin/"); strFileName.erase(0, temp.size()); strFileName = tempbin + strFileName; if (!XFILE::CFile::Exists(strFileName)) { CLog::Log(LOGERROR, "ADDON: Could not locate %s", m_props.libname.c_str()); return false; } } } /* Load the Dll */ m_pDll = new DllAddon; m_pDll->SetFile(strFileName); m_pDll->EnableDelayedUnload(false); if (!m_pDll->Load()) { delete m_pDll; m_pDll = NULL; CGUIDialogOK* pDialog = g_windowManager.GetWindow<CGUIDialogOK>(WINDOW_DIALOG_OK); if (pDialog) { std::string heading = StringUtils::Format("%s: %s", TranslateType(Type(), true).c_str(), Name().c_str()); pDialog->SetHeading(CVariant{heading}); pDialog->SetLine(1, CVariant{24070}); pDialog->SetLine(2, CVariant{24071}); pDialog->SetLine(2, CVariant{"Can't load shared library"}); pDialog->Open(); } return false; } return true; }