bool XMLUtils::GetBoolean(const TiXmlNode* pRootNode, const char* strTag, bool& bBoolValue) { const TiXmlNode* pNode = pRootNode->FirstChild(strTag ); if (!pNode || !pNode->FirstChild()) return false; CStdString strEnabled = pNode->FirstChild()->Value(); strEnabled.ToLower(); if (strEnabled == "off" || strEnabled == "no" || strEnabled == "disabled" || strEnabled == "false" || strEnabled == "0" ) bBoolValue = false; else { bBoolValue = true; if (strEnabled != "on" && strEnabled != "yes" && strEnabled != "enabled" && strEnabled != "true") return false; // invalid bool switch - it's probably some other string. } return true; }
//as of rfc 2617 CStdString calcResponse(const CStdString& username, const CStdString& password, const CStdString& realm, const CStdString& method, const CStdString& digestUri, const CStdString& nonce) { CStdString response; CStdString HA1; CStdString HA2; HA1 = XBMC::XBMC_MD5::GetMD5(username + ":" + realm + ":" + password); HA2 = XBMC::XBMC_MD5::GetMD5(method + ":" + digestUri); response = XBMC::XBMC_MD5::GetMD5(HA1.ToLower() + ":" + nonce + ":" + HA2.ToLower()); return response.ToLower(); }
// \brief Show keyboard and verify user input against strPassword. // \param strPassword Value to compare against user input. // \param dlgHeading String shown on dialog title. Converts to localized string if contains a positive integer. // \param iRetries If greater than 0, shows "Incorrect password, %d retries left" on dialog line 2, else line 2 is blank. // \return 0 if successful display and user input. 1 if unsucessful input. -1 if no user input or canceled editing. int CGUIDialogKeyboard::ShowAndVerifyPassword(CStdString& strPassword, const CStdString& strHeading, int iRetries) { CStdString strHeadingTemp; if (1 > iRetries && strHeading.size()) strHeadingTemp = strHeading; else strHeadingTemp.Format("%s - %i %s", g_localizeStrings.Get(12326).c_str(), g_guiSettings.GetInt("masterlock.maxretries") - iRetries, g_localizeStrings.Get(12343).c_str()); CStdString strUserInput = ""; if (!ShowAndGetInput(strUserInput, strHeadingTemp, false, true)) //bool hiddenInput = false/true ? TODO: GUI Setting to enable disable this feature y/n? return -1; // user canceled out if (!strPassword.IsEmpty()) { if (strPassword == strUserInput) return 0; MD5_CTX md5state; unsigned char md5pword[16]; char md5pword2[33]; MD5Init(&md5state); MD5Update(&md5state, (unsigned char *)strUserInput.c_str(), (int)strUserInput.size()); MD5Final(md5pword, &md5state); XKGeneral::BytesToHexStr(md5pword, 16, md5pword2); if (strPassword.Equals(md5pword2)) return 0; // user entered correct password else return 1; // user must have entered an incorrect password } else { if (!strUserInput.IsEmpty()) { MD5_CTX md5state; unsigned char md5pword[16]; char md5pword2[33]; MD5Init(&md5state); MD5Update(&md5state, (unsigned char *)strUserInput.c_str(), (int)strUserInput.size()); MD5Final(md5pword, &md5state); XKGeneral::BytesToHexStr(md5pword, 16, md5pword2); strPassword = md5pword2; strPassword.ToLower(); return 0; // user entered correct password } else return 1; } }
uint32_t CButtonTranslator::TranslateKeyboardButton(TiXmlElement *pButton) { uint32_t button_id = 0; const char *szButton = pButton->Value(); if (!szButton) return 0; CStdString strKey = szButton; if (strKey.Equals("key")) { int id = 0; if (pButton->QueryIntAttribute("id", &id) == TIXML_SUCCESS) button_id = (uint32_t)id; else CLog::Log(LOGERROR, "Keyboard Translator: `key' button has no id"); } else button_id = TranslateKeyboardString(szButton); // Process the ctrl/shift/alt modifiers CStdString strMod; if (pButton->QueryValueAttribute("mod", &strMod) == TIXML_SUCCESS) { strMod.ToLower(); CStdStringArray modArray; StringUtils::SplitString(strMod, ",", modArray); for (unsigned int i = 0; i < modArray.size(); i++) { CStdString& substr = modArray[i]; substr.Trim(); if (substr == "ctrl" || substr == "control") button_id |= CKey::MODIFIER_CTRL; else if (substr == "shift") button_id |= CKey::MODIFIER_SHIFT; else if (substr == "alt") button_id |= CKey::MODIFIER_ALT; else if (substr == "super" || substr == "win") button_id |= CKey::MODIFIER_SUPER; else CLog::Log(LOGERROR, "Keyboard Translator: Unknown key modifier %s in %s", substr.c_str(), strMod.c_str()); } } return button_id; }
bool CMetadataResolverMusic::FindLocalThumbnail(CResolvedAlbum& album, const CResolvingFolder& folder) { // Go over all files in the folder that could be an album thumb (basically, picture files) for (int i = 0; i < (int)folder.vecThumbs.size(); i++) { CStdString strThumbFileName = CUtil::GetFileName(folder.vecThumbs[i]); // Get all possible thumbnail file names from the settings CStdStringArray thumbs; StringUtils::SplitString(g_advancedSettings.m_musicThumbs, "|", thumbs); for (unsigned int j = 0; j < thumbs.size(); ++j) { if (strThumbFileName.CompareNoCase(thumbs[j]) == 0) { album.strCover = folder.vecThumbs[i]; return true; } } CUtil::RemoveExtension(strThumbFileName); // Handle the case that folder name is the same as the jpeg name if (strThumbFileName == folder.strEffectiveFolderName) { album.strCover = folder.vecThumbs[i]; return true; } if (strThumbFileName == album.strName) { album.strCover = folder.vecThumbs[i]; return true; } if (strThumbFileName.ToLower() == "folder") { album.strCover = folder.vecThumbs[i]; return true; } // TODO: Add more cases } return false; }
void CDirectoryHistory::RemoveSelectedItem(const CStdString& strDirectory) { CStdString strDir = strDirectory; strDir.ToLower(); while (CUtil::HasSlashAtEnd(strDir) ) strDir = strDir.Left(strDir.size() - 1); vector<CHistoryItem>::iterator Iter; for (Iter = m_vecHistory.begin();Iter != m_vecHistory.end(); Iter++) { if ( strDir == Iter->m_strDirectory) { m_vecHistory.erase(Iter); return ; } } }
static bool IsPathToThumbnail(const CStdString& strPath ) { // Currently just check if this is an image, maybe we will add some // other checks later CStdString extension; URIUtils::GetExtension(strPath, extension); if (extension.IsEmpty()) return false; extension.ToLower(); if (g_settings.m_pictureExtensions.Find(extension) != -1) return true; return false; }
void CPVRChannelGroup::SearchAndSetChannelIcons(bool bUpdateDb /* = false */) { if (g_guiSettings.GetString("pvrmenu.iconpath").IsEmpty()) return; CPVRDatabase *database = GetPVRDatabase(); if (!database) return; CSingleLock lock(m_critSection); for (unsigned int ptr = 0; ptr < m_members.size(); ptr++) { PVRChannelGroupMember groupMember = m_members.at(ptr); /* skip if an icon is already set */ if (!groupMember.channel->IconPath().IsEmpty()) continue; CStdString strBasePath = g_guiSettings.GetString("pvrmenu.iconpath"); CStdString strSanitizedChannelName = CUtil::MakeLegalFileName(groupMember.channel->ClientChannelName()); CStdString strIconPath = strBasePath + strSanitizedChannelName; CStdString strIconPathLower = strBasePath + strSanitizedChannelName.ToLower(); CStdString strIconPathUid; strIconPathUid.Format("%08d", groupMember.channel->UniqueID()); strIconPathUid = URIUtils::AddFileToFolder(strBasePath, strIconPathUid); SetChannelIconPath(groupMember.channel, strIconPath + ".tbn") || SetChannelIconPath(groupMember.channel, strIconPath + ".jpg") || SetChannelIconPath(groupMember.channel, strIconPath + ".png") || SetChannelIconPath(groupMember.channel, strIconPathLower + ".tbn") || SetChannelIconPath(groupMember.channel, strIconPathLower + ".jpg") || SetChannelIconPath(groupMember.channel, strIconPathLower + ".png") || SetChannelIconPath(groupMember.channel, strIconPathUid + ".tbn") || SetChannelIconPath(groupMember.channel, strIconPathUid + ".jpg") || SetChannelIconPath(groupMember.channel, strIconPathUid + ".png"); if (bUpdateDb) groupMember.channel->Persist(); /* TODO: start channel icon scraper here if nothing was found */ } }
void StringUtils::WordToDigits(CStdString &word) { static const char word_to_letter[] = "22233344455566677778889999"; word.ToLower(); for (unsigned int i = 0; i < word.size(); ++i) { // NB: This assumes ascii, which probably needs extending at some point. char letter = word[i]; if ((letter >= 'a' && letter <= 'z')) // assume contiguous letter range { word[i] = word_to_letter[letter-'a']; } else if (letter < '0' || letter > '9') // We want to keep 0-9! { word[i] = ' '; // replace everything else with a space } } }
const CStdString& CDirectoryHistory::GetSelectedItem(const CStdString& strDirectory) const { CStdString strDir = strDirectory; strDir.ToLower(); URIUtils::RemoveSlashAtEnd(strDir); for (int i = 0; i < (int)m_vecHistory.size(); ++i) { const CHistoryItem& item = m_vecHistory[i]; if ( strDir == item.m_strDirectory) { return item.m_strItem; } } return m_strNull; }
bool CGUIDialogPluginSettings::TranslateSingleString(const CStdString &strCondition, vector<CStdString> &condVec) { CStdString strTest = strCondition; strTest.ToLower(); strTest.TrimLeft(" "); strTest.TrimRight(" "); int pos1 = strTest.Find("("); int pos2 = strTest.Find(","); int pos3 = strTest.Find(")"); if (pos1 >= 0 && pos2 > pos1 && pos3 > pos2) { condVec.push_back(strTest.Left(pos1)); condVec.push_back(strTest.Mid(pos1 + 1, pos2 - pos1 - 1)); condVec.push_back(strTest.Mid(pos2 + 1, pos3 - pos2 - 1)); return true; } return false; }
bool CVideoThumbLoader::ExtractThumb(const CStdString &strPath, const CStdString &strTarget, CStreamDetails *pStreamDetails) { if (!g_guiSettings.GetBool("myvideos.autothumb")) return false; CStdString strExt; CUtil::GetExtension(strPath, strExt); if (CUtil::IsLiveTV(strPath) #ifndef HAS_UPNP_AV || CUtil::IsUPnP(strPath) #endif || CUtil::IsDAAP(strPath) || strExt.ToLower() == ".swf") return false; CLog::Log(LOGDEBUG,"%s - trying to extract thumb from video file %s", __FUNCTION__, strPath.c_str()); return CDVDFileInfo::ExtractThumb(strPath, strTarget, pStreamDetails); }
bool CPlayListFactory::IsPlaylist(const CFileItem& item, bool bAllowQuery) { CStdString extension = CUtil::GetExtension(item.m_strPath); extension.ToLower(); if (extension == ".m3u") return true; if (extension == ".m3u8") return true; if (extension == ".b4s") return true; if (extension == ".pls") return true; if (extension == ".strm") return true; if (extension == ".wpl") return true; if (extension == ".asx") return true; if (extension == ".ram") return true; if (item.IsLastFM()) return false; if (extension == ".url") return true; if (extension == ".pxml") return true; if (item.IsShoutCast()) return false; if( item.IsInternetStream() ) { CStdString strContentType = item.GetContentType(bAllowQuery); strContentType.MakeLower(); if (strContentType == "video/x-ms-asf" || strContentType == "video/x-ms-asx" || strContentType == "video/x-ms-wfs" || strContentType == "video/x-ms-wvx" || strContentType == "video/x-ms-wax" || strContentType == "audio/x-pn-realaudio" || strContentType == "audio/x-scpls" || strContentType == "playlist" || strContentType == "audio/x-mpegurl" || strContentType == "application/vnd.ms-wpl") return true; } return false; }
JSON_STATUS CXBMCOperations::Log(const CStdString &method, ITransportLayer *transport, IClient *client, const Value ¶meterObject, Value &result) { if (parameterObject.isString()) CLog::Log(LOGDEBUG, "%s", parameterObject.asString().c_str()); else if (parameterObject.isObject() && parameterObject.isMember("message") && parameterObject["message"].isString()) { if (parameterObject.isMember("level") && !parameterObject["level"].isString()) return InvalidParams; CStdString strlevel = parameterObject.get("level", "debug").asString(); int level = ParseLogLevel(strlevel.ToLower().c_str()); CLog::Log(level, "%s", parameterObject["message"].asString().c_str()); } else return InvalidParams; return ACK; }
const CStdString& CDirectoryHistory::GetSelectedItem(const CStdString& strDirectory) const { CStdString strDir = strDirectory; strDir.ToLower(); while (CUtil::HasSlashAtEnd(strDir) ) { strDir = strDir.Left(strDir.size() - 1); } for (int i = 0; i < (int)m_vecHistory.size(); ++i) { const CHistoryItem& item = m_vecHistory[i]; if ( strDir == item.m_strDirectory) { return item.m_strItem; } } return m_strNull; }
JSONRPC_STATUS CVideoLibrary::GetGenres(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result) { CStdString media = parameterObject["type"].asString(); media = media.ToLower(); int idContent = -1; CStdString strPath = "videodb://"; /* select which video content to get genres from*/ if (media.Equals("movie")) { idContent = VIDEODB_CONTENT_MOVIES; strPath += "1"; } else if (media.Equals("tvshow")) { idContent = VIDEODB_CONTENT_TVSHOWS; strPath += "2"; } else if (media.Equals("musicvideo")) { idContent = VIDEODB_CONTENT_MUSICVIDEOS; strPath += "3"; } strPath += "/1/"; CVideoDatabase videodatabase; if (!videodatabase.Open()) return InternalError; CFileItemList items; if (videodatabase.GetGenresNav(strPath, items, idContent)) { /* need to set strTitle in each item*/ for (unsigned int i = 0; i < (unsigned int)items.Size(); i++) items[i]->GetVideoInfoTag()->m_strTitle = items[i]->GetLabel(); HandleFileItemList("genreid", false, "genres", items, parameterObject, result); } videodatabase.Close(); return OK; }
JSON_STATUS CSystemOperations::GetInfoBooleans(const CStdString &method, ITransportLayer *transport, IClient *client, const Value ¶meterObject, Value &result) { if (!parameterObject.isArray()) return InvalidParams; std::vector<CStdString> info; bool CanControlPower = (client->GetPermissionFlags() & ControlPower) > 0; for (unsigned int i = 0; i < parameterObject.size(); i++) { if (!parameterObject[i].isString()) continue; CStdString field = parameterObject[i].asString(); field = field.ToLower(); // Need to override power management of whats in infomanager since jsonrpc // have a security layer aswell. if (field.Equals("system.canshutdown")) result[parameterObject[i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower); else if (field.Equals("system.canpowerdown")) result[parameterObject[i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower); else if (field.Equals("system.cansuspend")) result[parameterObject[i].asString()] = (g_powerManager.CanSuspend() && CanControlPower); else if (field.Equals("system.canhibernate")) result[parameterObject[i].asString()] = (g_powerManager.CanHibernate() && CanControlPower); else if (field.Equals("system.canreboot")) result[parameterObject[i].asString()] = (g_powerManager.CanReboot() && CanControlPower); else info.push_back(parameterObject[i].asString()); } if (info.size() > 0) { std::vector<bool> infoLabels = g_application.getApplicationMessenger().GetInfoBooleans(info); for (unsigned int i = 0; i < info.size(); i++) result[info[i].c_str()] = Value(infoLabels[i]); } return OK; }
void CPVRChannelGroup::SearchAndSetChannelIcons(bool bUpdateDb /* = false */) { if (g_guiSettings.GetString("pvrmenu.iconpath").IsEmpty()) return; CPVRDatabase *database = GetPVRDatabase(); if (!database) return; CSingleLock lock(m_critSection); for (unsigned int ptr = 0; ptr < size(); ptr++) { PVRChannelGroupMember groupMember = at(ptr); /* skip if an icon is already set */ if (!groupMember.channel->IconPath().IsEmpty()) continue; CStdString strBasePath = g_guiSettings.GetString("pvrmenu.iconpath"); CStdString strChannelName = groupMember.channel->ClientChannelName(); CStdString strIconPath = strBasePath + groupMember.channel->ClientChannelName(); CStdString strIconPathLower = strBasePath + strChannelName.ToLower(); CStdString strIconPathUid; strIconPathUid.Format("%s/%08d", strBasePath, groupMember.channel->UniqueID()); groupMember.channel->SetIconPath(strIconPath + ".tbn", bUpdateDb) || groupMember.channel->SetIconPath(strIconPath + ".jpg", bUpdateDb) || groupMember.channel->SetIconPath(strIconPath + ".png", bUpdateDb) || groupMember.channel->SetIconPath(strIconPathLower + ".tbn", bUpdateDb) || groupMember.channel->SetIconPath(strIconPathLower + ".jpg", bUpdateDb) || groupMember.channel->SetIconPath(strIconPathLower + ".png", bUpdateDb) || groupMember.channel->SetIconPath(strIconPathUid + ".tbn", bUpdateDb) || groupMember.channel->SetIconPath(strIconPathUid + ".jpg", bUpdateDb) || groupMember.channel->SetIconPath(strIconPathUid + ".png", bUpdateDb); /* TODO: start channel icon scraper here if nothing was found */ } }
void CVideoReferenceClock::CleanupGLX() { CLog::Log(LOGDEBUG, "CVideoReferenceClock: Cleaning up GLX"); bool AtiWorkaround = false; const char* VendorPtr = (const char*)glGetString(GL_VENDOR); if (VendorPtr) { CStdString Vendor = VendorPtr; Vendor.ToLower(); if (Vendor.compare(0, 3, "ati") == 0) { CLog::Log(LOGDEBUG, "CVideoReferenceClock: GL_VENDOR: %s, using ati dpy workaround", VendorPtr); AtiWorkaround = true; } } if (m_vInfo) { XFree(m_vInfo); m_vInfo = NULL; } if (m_Context) { glXMakeCurrent(m_Dpy, None, NULL); glXDestroyContext(m_Dpy, m_Context); m_Context = NULL; } if (m_Window) { XDestroyWindow(m_Dpy, m_Window); m_Window = 0; } //ati saves the Display* in their libGL, if we close it here, we crash if (m_Dpy && !AtiWorkaround) { XCloseDisplay(m_Dpy); m_Dpy = NULL; } }
static bool IsPathToMedia(const CStdString& strPath ) { CStdString extension; URIUtils::GetExtension(strPath, extension); if (extension.IsEmpty()) return false; extension.ToLower(); if (g_settings.m_videoExtensions.Find(extension) != -1) return true; if (g_settings.m_musicExtensions.Find(extension) != -1) return true; if (g_settings.m_pictureExtensions.Find(extension) != -1) return true; return false; }
CStdString UrlSerializer::FindClass(CStdString& input) { CStdString result; int equalsPostion = input.Find('='); if (equalsPostion != -1) { int ampersandPostion = input.Find('&'); if (ampersandPostion > equalsPostion) { // there is at least one parameter result = input.Mid(equalsPostion+1, ampersandPostion-equalsPostion-1); } else { // there is no parameter result = input.Mid(equalsPostion+1, input.GetLength() - equalsPostion - 1); } } result.ToLower(); return result; }
PyObject* Window_GetProperty(Window *self, PyObject *args, PyObject *kwds) { static const char *keywords[] = { "key", NULL }; char *key = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, (char*)"s", (char**)keywords, &key)) { return NULL; } if (!key) return NULL; GilSafeSingleLock lock(g_graphicsContext); CStdString lowerKey = key; string value = self->pWindow->GetProperty(lowerKey.ToLower()).asString(); return Py_BuildValue((char*)"s", value.c_str()); }
JSONRPC_STATUS CXBMCOperations::GetInfoBooleans(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result) { std::vector<CStdString> info; bool CanControlPower = (client->GetPermissionFlags() & ControlPower) > 0; for (unsigned int i = 0; i < parameterObject["booleans"].size(); i++) { CStdString field = parameterObject["booleans"][i].asString(); field = field.ToLower(); // Need to override power management of whats in infomanager since jsonrpc // have a security layer aswell. if (field.Equals("system.canshutdown")) result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower); else if (field.Equals("system.canpowerdown")) result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower); else if (field.Equals("system.cansuspend")) result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanSuspend() && CanControlPower); else if (field.Equals("system.canhibernate")) result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanHibernate() && CanControlPower); else if (field.Equals("system.canreboot")) result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanReboot() && CanControlPower); else info.push_back(parameterObject["booleans"][i].asString()); } if (info.size() > 0) { std::vector<bool> infoLabels = CApplicationMessenger::Get().GetInfoBooleans(info); for (unsigned int i = 0; i < info.size(); i++) { if (i >= infoLabels.size()) break; result[info[i].c_str()] = CVariant(infoLabels[i]); } } return OK; }
void Serializer::GetBool(const char* key, bool&value, bool required) { CStdString stringValue; GetString(key, stringValue, required); stringValue.ToLower(); if( stringValue == "true" || stringValue == "yes" || stringValue == "1" ) { value = true; } else if( stringValue == "false" || stringValue == "no" || stringValue == "0" ) { value = false; } else if( stringValue.IsEmpty() ) { ; // do not touch default value } else { throw(CStdString("Serializer: Invalid boolean value:") + stringValue + " for parameter:" + key); } }
// \brief Show numeric keypad and verify user input against strToVerify. // \param strToVerify Value to compare against user input. // \param dlgHeading String shown on dialog title. // \param bVerifyInput If set as true we verify the users input versus strToVerify. // \return true if successful display and user input. false if unsucessful display, no user input, or canceled editing. bool CGUIDialogNumeric::ShowAndVerifyInput(CStdString& strToVerify, const CStdString& dlgHeading, bool bVerifyInput) { // Prompt user for password input CGUIDialogNumeric *pDialog = (CGUIDialogNumeric *)g_windowManager.GetWindow(WINDOW_DIALOG_NUMERIC); pDialog->SetHeading( dlgHeading ); CStdString strInput = ""; if (!bVerifyInput) strInput = strToVerify; pDialog->SetMode(INPUT_PASSWORD, (void *)&strInput); pDialog->DoModal(); pDialog->GetOutput(&strInput); if (!pDialog->IsConfirmed() || pDialog->IsCanceled()) { // user canceled out strToVerify =""; return false; } CStdString md5pword2; XBMC::XBMC_MD5 md5state; md5state.append(strInput); md5state.getDigest(md5pword2); if (!bVerifyInput) { strToVerify = md5pword2; strToVerify.ToLower(); return true; } if (strToVerify.Equals(md5pword2)) return true; // entered correct password // incorrect password return false; }
uint32_t CButtonTranslator::TranslateGamepadString(const char *szButton) { if (!szButton) return 0; uint32_t buttonCode = 0; CStdString strButton = szButton; strButton.ToLower(); if (strButton.Equals("a")) buttonCode = KEY_BUTTON_A; else if (strButton.Equals("b")) buttonCode = KEY_BUTTON_B; else if (strButton.Equals("x")) buttonCode = KEY_BUTTON_X; else if (strButton.Equals("y")) buttonCode = KEY_BUTTON_Y; else if (strButton.Equals("white")) buttonCode = KEY_BUTTON_WHITE; else if (strButton.Equals("black")) buttonCode = KEY_BUTTON_BLACK; else if (strButton.Equals("start")) buttonCode = KEY_BUTTON_START; else if (strButton.Equals("back")) buttonCode = KEY_BUTTON_BACK; else if (strButton.Equals("leftthumbbutton")) buttonCode = KEY_BUTTON_LEFT_THUMB_BUTTON; else if (strButton.Equals("rightthumbbutton")) buttonCode = KEY_BUTTON_RIGHT_THUMB_BUTTON; else if (strButton.Equals("leftthumbstick")) buttonCode = KEY_BUTTON_LEFT_THUMB_STICK; else if (strButton.Equals("leftthumbstickup")) buttonCode = KEY_BUTTON_LEFT_THUMB_STICK_UP; else if (strButton.Equals("leftthumbstickdown")) buttonCode = KEY_BUTTON_LEFT_THUMB_STICK_DOWN; else if (strButton.Equals("leftthumbstickleft")) buttonCode = KEY_BUTTON_LEFT_THUMB_STICK_LEFT; else if (strButton.Equals("leftthumbstickright")) buttonCode = KEY_BUTTON_LEFT_THUMB_STICK_RIGHT; else if (strButton.Equals("rightthumbstick")) buttonCode = KEY_BUTTON_RIGHT_THUMB_STICK; else if (strButton.Equals("rightthumbstickup")) buttonCode = KEY_BUTTON_RIGHT_THUMB_STICK_UP; else if (strButton.Equals("rightthumbstickdown")) buttonCode = KEY_BUTTON_RIGHT_THUMB_STICK_DOWN; else if (strButton.Equals("rightthumbstickleft")) buttonCode = KEY_BUTTON_RIGHT_THUMB_STICK_LEFT; else if (strButton.Equals("rightthumbstickright")) buttonCode = KEY_BUTTON_RIGHT_THUMB_STICK_RIGHT; else if (strButton.Equals("lefttrigger")) buttonCode = KEY_BUTTON_LEFT_TRIGGER; else if (strButton.Equals("righttrigger")) buttonCode = KEY_BUTTON_RIGHT_TRIGGER; else if (strButton.Equals("leftanalogtrigger")) buttonCode = KEY_BUTTON_LEFT_ANALOG_TRIGGER; else if (strButton.Equals("rightanalogtrigger")) buttonCode = KEY_BUTTON_RIGHT_ANALOG_TRIGGER; else if (strButton.Equals("dpadleft")) buttonCode = KEY_BUTTON_DPAD_LEFT; else if (strButton.Equals("dpadright")) buttonCode = KEY_BUTTON_DPAD_RIGHT; else if (strButton.Equals("dpadup")) buttonCode = KEY_BUTTON_DPAD_UP; else if (strButton.Equals("dpaddown")) buttonCode = KEY_BUTTON_DPAD_DOWN; else CLog::Log(LOGERROR, "Gamepad Translator: Can't find button %s", strButton.c_str()); return buttonCode; }
// \brief Show keyboard and verify user input against strPassword. // \param strPassword Value to compare against user input. // \param dlgHeading String shown on dialog title. Converts to localized string if contains a positive integer. // \param iRetries If greater than 0, shows "Incorrect password, %d retries left" on dialog line 2, else line 2 is blank. // \return 0 if successful display and user input. 1 if unsucessful input. -1 if no user input or canceled editing. int CGUIDialogKeyboard::ShowAndVerifyPassword(CStdString& strPassword, const CStdString& strHeading, int iRetries) { CStdString strHeadingTemp; if (1 > iRetries && strHeading.size()) strHeadingTemp = strHeading; else strHeadingTemp.Format("%s - %i %s", g_localizeStrings.Get(12326).c_str(), g_guiSettings.GetInt("masterlock.maxretries") - iRetries, g_localizeStrings.Get(12343).c_str()); CStdString strUserInput = ""; if (!ShowAndGetInput(strUserInput, strHeadingTemp, false, true)) //bool hiddenInput = false/true ? TODO: GUI Setting to enable disable this feature y/n? return -1; // user canceled out if (!strPassword.IsEmpty()) { if (strPassword == strUserInput) return 0; CStdString md5pword2; XBMC::XBMC_MD5 md5state; md5state.append(strUserInput); md5state.getDigest(md5pword2); if (strPassword.Equals(md5pword2)) return 0; // user entered correct password else return 1; // user must have entered an incorrect password } else { if (!strUserInput.IsEmpty()) { XBMC::XBMC_MD5 md5state; md5state.append(strUserInput); md5state.getDigest(strPassword); strPassword.ToLower(); return 0; // user entered correct password } else return 1; } }
PyObject* Window_ClearProperty(Window *self, PyObject *args, PyObject *kwds) { static const char *keywords[] = { "key", NULL }; char *key = NULL; if (!PyArg_ParseTupleAndKeywords( args, kwds, (char*)"s", (char**)keywords, &key)) { return NULL; } if (!key) return NULL; GilSafeSingleLock lock(g_graphicsContext); CStdString lowerKey = key; self->pWindow->SetProperty(lowerKey.ToLower(), ""); Py_INCREF(Py_None); return Py_None; }
void URIUtils::RemoveExtension(CStdString& strFileName) { if(IsURL(strFileName)) { CURL url(strFileName); strFileName = url.GetFileName(); RemoveExtension(strFileName); url.SetFileName(strFileName); strFileName = url.Get(); return; } int iPos = strFileName.ReverseFind("."); // Extension found if (iPos > 0) { CStdString strExtension; GetExtension(strFileName, strExtension); strExtension.ToLower(); strExtension += "|"; CStdString strFileMask; strFileMask = g_settings.m_pictureExtensions; strFileMask += "|" + g_settings.m_musicExtensions; strFileMask += "|" + g_settings.m_videoExtensions; #if defined(__APPLE__) strFileMask += "|.py|.xml|.milk|.xpr|.xbt|.cdg|.app|.applescript|.workflow"; #else strFileMask += "|.py|.xml|.milk|.xpr|.xbt|.cdg"; #endif strFileMask += "|"; if (strFileMask.Find(strExtension) >= 0) strFileName = strFileName.Left(iPos); } }
JSONRPC_STATUS CFileOperations::GetRootDirectory(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result) { CStdString media = parameterObject["media"].asString(); media = media.ToLower(); VECSOURCES *sources = g_settings.GetSourcesFromType(media); if (sources) { CFileItemList items; for (unsigned int i = 0; i < (unsigned int)sources->size(); i++) { // Do not show sources which are locked if (sources->at(i).m_iHasLock == 2) continue; items.Add(CFileItemPtr(new CFileItem(sources->at(i)))); } for (unsigned int i = 0; i < (unsigned int)items.Size(); i++) { if (items[i]->IsSmb()) { CURL url(items[i]->GetPath()); items[i]->SetPath(url.GetWithoutUserDetails()); } } CVariant param = parameterObject; param["properties"] = CVariant(CVariant::VariantTypeArray); param["properties"].append("file"); HandleFileItemList(NULL, true, "sources", items, param, result); } return OK; }