本文整理汇总了C++中CStdString::Equals方法的典型用法代码示例。如果您正苦于以下问题:C++ CStdString::Equals方法的具体用法?C++ CStdString::Equals怎么用?C++ CStdString::Equals使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CStdString
的用法示例。
在下文中一共展示了CStdString::Equals方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnGetFanart
// Allow user to select a Fanart
void CGUIDialogVideoInfo::OnGetFanart()
{
CFileItemList items;
CFileItem item(*m_movieItem->GetVideoInfoTag());
if (item.HasArt("fanart"))
{
CFileItemPtr itemCurrent(new CFileItem("fanart://Current",false));
itemCurrent->SetArt("thumb", item.GetArt("fanart"));
itemCurrent->SetLabel(g_localizeStrings.Get(20440));
items.Add(itemCurrent);
}
// ensure the fanart is unpacked
m_movieItem->GetVideoInfoTag()->m_fanart.Unpack();
// Grab the thumbnails from the web
for (unsigned int i = 0; i < m_movieItem->GetVideoInfoTag()->m_fanart.GetNumFanarts(); i++)
{
CStdString strItemPath;
strItemPath.Format("fanart://Remote%i",i);
CFileItemPtr item(new CFileItem(strItemPath, false));
CStdString thumb = m_movieItem->GetVideoInfoTag()->m_fanart.GetPreviewURL(i);
item->SetArt("thumb", CTextureCache::GetWrappedThumbURL(thumb));
item->SetIconImage("DefaultPicture.png");
item->SetLabel(g_localizeStrings.Get(20441));
// TODO: Do we need to clear the cached image?
// CTextureCache::Get().ClearCachedImage(thumb);
items.Add(item);
}
CStdString strLocal = item.GetLocalFanart();
if (!strLocal.IsEmpty())
{
CFileItemPtr itemLocal(new CFileItem("fanart://Local",false));
itemLocal->SetArt("thumb", strLocal);
itemLocal->SetLabel(g_localizeStrings.Get(20438));
// TODO: Do we need to clear the cached image?
CTextureCache::Get().ClearCachedImage(strLocal);
items.Add(itemLocal);
}
else
{
CFileItemPtr itemNone(new CFileItem("fanart://None", false));
itemNone->SetIconImage("DefaultVideo.png");
itemNone->SetLabel(g_localizeStrings.Get(20439));
items.Add(itemNone);
}
CStdString result;
VECSOURCES sources(g_settings.m_videoSources);
g_mediaManager.GetLocalDrives(sources);
bool flip=false;
if (!CGUIDialogFileBrowser::ShowAndGetImage(items, sources, g_localizeStrings.Get(20437), result, &flip, 20445) || result.Equals("fanart://Current"))
return; // user cancelled
if (result.Equals("fanart://Local"))
result = strLocal;
if (result.Left(15) == "fanart://Remote")
{
int iFanart = atoi(result.Mid(15).c_str());
// set new primary fanart, and update our database accordingly
m_movieItem->GetVideoInfoTag()->m_fanart.SetPrimaryFanart(iFanart);
CVideoDatabase db;
if (db.Open())
{
db.UpdateFanart(*m_movieItem, (VIDEODB_CONTENT_TYPE)m_movieItem->GetVideoContentType());
db.Close();
}
result = m_movieItem->GetVideoInfoTag()->m_fanart.GetImageURL();
}
else if (result.Equals("fanart://None") || !CFile::Exists(result))
result.clear();
// set the fanart image
if (flip && !result.IsEmpty())
result = CTextureCache::GetWrappedImageURL(result, "", "flipped");
CVideoDatabase db;
if (db.Open())
{
db.SetArtForItem(m_movieItem->GetVideoInfoTag()->m_iDbId, m_movieItem->GetVideoInfoTag()->m_type, "fanart", result);
db.Close();
}
CUtil::DeleteVideoDatabaseDirectoryCache(); // to get them new thumbs to show
m_movieItem->SetArt("fanart", result);
m_hasUpdatedThumb = true;
// Update our screen
Update();
}
示例2: CacheRarredFile
//.........这里部分代码省略.........
items.Remove(0);
}
if (!items.Size())
return false;
}
}
CStdString strPath = strPathInRar;
#ifndef TARGET_POSIX
StringUtils::Replace(strPath, '/', '\\');
#endif
//g_charsetConverter.unknownToUTF8(strPath);
CStdString strCachedPath = URIUtils::AddFileToFolder(strDir + "rarfolder%04d",
URIUtils::GetFileName(strPathInRar));
strCachedPath = CUtil::GetNextPathname(strCachedPath, 9999);
if (strCachedPath.empty())
{
CLog::Log(LOGWARNING, "Could not cache file %s", (strRarPath + strPathInRar).c_str());
return false;
}
strCachedPath = CUtil::MakeLegalPath(strCachedPath);
int64_t iOffset = -1;
if (iRes != 2)
{
if (pFile)
{
if (pFile->m_iOffset != -1)
iOffset = pFile->m_iOffset;
}
if (iOffset == -1 && j != m_ExFiles.end()) // grab from list
{
for( ArchiveList_struct* pIterator = j->second.first; pIterator ; pIterator ? pIterator = pIterator->next : NULL)
{
CStdString strName;
/* convert to utf8 */
if( pIterator->item.NameW && wcslen(pIterator->item.NameW) > 0)
g_charsetConverter.wToUTF8(pIterator->item.NameW, strName);
else
g_charsetConverter.unknownToUTF8(pIterator->item.Name, strName);
if (strName.Equals(strPath))
{
iOffset = pIterator->item.iOffset;
break;
}
}
}
bool bShowProgress=false;
if (iSize > 1024*1024 || iSize == -2) // 1MB
bShowProgress=true;
CStdString strDir2 = URIUtils::GetDirectory(strCachedPath);
URIUtils::RemoveSlashAtEnd(strDir2);
if (!CDirectory::Exists(strDir2))
CDirectory::Create(strDir2);
iRes = urarlib_get(const_cast<char*>(strRarPath.c_str()), const_cast<char*>(strDir2.c_str()),
const_cast<char*>(strPath.c_str()),NULL,&iOffset,bShowProgress);
}
if (iRes == 0)
{
CLog::Log(LOGERROR,"failed to extract file: %s",strPathInRar.c_str());
return false;
}
if(!pFile)
{
CFileInfo fileInfo;
fileInfo.m_strPathInRar = strPathInRar;
if (j == m_ExFiles.end())
{
ArchiveList_struct* pArchiveList;
if(ListArchive(strRarPath,pArchiveList))
{
m_ExFiles.insert(make_pair(strRarPath,make_pair(pArchiveList,vector<CFileInfo>())));
j = m_ExFiles.find(strRarPath);
}
else
return false;
}
j->second.second.push_back(fileInfo);
pFile = &(j->second.second[j->second.second.size()-1]);
pFile->m_iUsed = 1;
}
pFile->m_strCachedPath = strCachedPath;
pFile->m_bAutoDel = (bOptions & EXFILE_AUTODELETE) != 0;
pFile->m_iOffset = iOffset;
strPathInCache = pFile->m_strCachedPath;
if (iRes == 2) //canceled
{
pFile->watch.StartZero();
CFile::Delete(pFile->m_strCachedPath);
return false;
}
#endif
return true;
}
示例3: TranslateRemoteString
uint32_t CButtonTranslator::TranslateRemoteString(const char *szButton)
{
if (!szButton)
return 0;
uint32_t buttonCode = 0;
CStdString strButton = szButton;
strButton.ToLower();
if (strButton.Equals("left")) buttonCode = XINPUT_IR_REMOTE_LEFT;
else if (strButton.Equals("right")) buttonCode = XINPUT_IR_REMOTE_RIGHT;
else if (strButton.Equals("up")) buttonCode = XINPUT_IR_REMOTE_UP;
else if (strButton.Equals("down")) buttonCode = XINPUT_IR_REMOTE_DOWN;
else if (strButton.Equals("select")) buttonCode = XINPUT_IR_REMOTE_SELECT;
else if (strButton.Equals("back")) buttonCode = XINPUT_IR_REMOTE_BACK;
else if (strButton.Equals("menu")) buttonCode = XINPUT_IR_REMOTE_MENU;
else if (strButton.Equals("info")) buttonCode = XINPUT_IR_REMOTE_INFO;
else if (strButton.Equals("display")) buttonCode = XINPUT_IR_REMOTE_DISPLAY;
else if (strButton.Equals("title")) buttonCode = XINPUT_IR_REMOTE_TITLE;
else if (strButton.Equals("play")) buttonCode = XINPUT_IR_REMOTE_PLAY;
else if (strButton.Equals("pause")) buttonCode = XINPUT_IR_REMOTE_PAUSE;
else if (strButton.Equals("reverse")) buttonCode = XINPUT_IR_REMOTE_REVERSE;
else if (strButton.Equals("forward")) buttonCode = XINPUT_IR_REMOTE_FORWARD;
else if (strButton.Equals("skipplus")) buttonCode = XINPUT_IR_REMOTE_SKIP_PLUS;
else if (strButton.Equals("skipminus")) buttonCode = XINPUT_IR_REMOTE_SKIP_MINUS;
else if (strButton.Equals("stop")) buttonCode = XINPUT_IR_REMOTE_STOP;
else if (strButton.Equals("zero")) buttonCode = XINPUT_IR_REMOTE_0;
else if (strButton.Equals("one")) buttonCode = XINPUT_IR_REMOTE_1;
else if (strButton.Equals("two")) buttonCode = XINPUT_IR_REMOTE_2;
else if (strButton.Equals("three")) buttonCode = XINPUT_IR_REMOTE_3;
else if (strButton.Equals("four")) buttonCode = XINPUT_IR_REMOTE_4;
else if (strButton.Equals("five")) buttonCode = XINPUT_IR_REMOTE_5;
else if (strButton.Equals("six")) buttonCode = XINPUT_IR_REMOTE_6;
else if (strButton.Equals("seven")) buttonCode = XINPUT_IR_REMOTE_7;
else if (strButton.Equals("eight")) buttonCode = XINPUT_IR_REMOTE_8;
else if (strButton.Equals("nine")) buttonCode = XINPUT_IR_REMOTE_9;
// additional keys from the media center extender for xbox remote
else if (strButton.Equals("power")) buttonCode = XINPUT_IR_REMOTE_POWER;
else if (strButton.Equals("mytv")) buttonCode = XINPUT_IR_REMOTE_MY_TV;
else if (strButton.Equals("mymusic")) buttonCode = XINPUT_IR_REMOTE_MY_MUSIC;
else if (strButton.Equals("mypictures")) buttonCode = XINPUT_IR_REMOTE_MY_PICTURES;
else if (strButton.Equals("myvideo")) buttonCode = XINPUT_IR_REMOTE_MY_VIDEOS;
else if (strButton.Equals("record")) buttonCode = XINPUT_IR_REMOTE_RECORD;
else if (strButton.Equals("start")) buttonCode = XINPUT_IR_REMOTE_START;
else if (strButton.Equals("volumeplus")) buttonCode = XINPUT_IR_REMOTE_VOLUME_PLUS;
else if (strButton.Equals("volumeminus")) buttonCode = XINPUT_IR_REMOTE_VOLUME_MINUS;
else if (strButton.Equals("channelplus")) buttonCode = XINPUT_IR_REMOTE_CHANNEL_PLUS;
else if (strButton.Equals("channelminus")) buttonCode = XINPUT_IR_REMOTE_CHANNEL_MINUS;
else if (strButton.Equals("pageplus")) buttonCode = XINPUT_IR_REMOTE_CHANNEL_PLUS;
else if (strButton.Equals("pageminus")) buttonCode = XINPUT_IR_REMOTE_CHANNEL_MINUS;
else if (strButton.Equals("mute")) buttonCode = XINPUT_IR_REMOTE_MUTE;
else if (strButton.Equals("recordedtv")) buttonCode = XINPUT_IR_REMOTE_RECORDED_TV;
else if (strButton.Equals("guide")) buttonCode = XINPUT_IR_REMOTE_TITLE; // same as title
else if (strButton.Equals("livetv")) buttonCode = XINPUT_IR_REMOTE_LIVE_TV;
else if (strButton.Equals("star")) buttonCode = XINPUT_IR_REMOTE_STAR;
else if (strButton.Equals("hash")) buttonCode = XINPUT_IR_REMOTE_HASH;
else if (strButton.Equals("clear")) buttonCode = XINPUT_IR_REMOTE_CLEAR;
else if (strButton.Equals("enter")) buttonCode = XINPUT_IR_REMOTE_ENTER;
else if (strButton.Equals("xbox")) buttonCode = XINPUT_IR_REMOTE_DISPLAY; // same as display
else if (strButton.Equals("teletext")) buttonCode = XINPUT_IR_REMOTE_TELETEXT;
else if (strButton.Equals("red")) buttonCode = XINPUT_IR_REMOTE_RED;
else if (strButton.Equals("green")) buttonCode = XINPUT_IR_REMOTE_GREEN;
else if (strButton.Equals("yellow")) buttonCode = XINPUT_IR_REMOTE_YELLOW;
else if (strButton.Equals("blue")) buttonCode = XINPUT_IR_REMOTE_BLUE;
else if (strButton.Equals("subtitle")) buttonCode = XINPUT_IR_REMOTE_SUBTITLE;
else if (strButton.Equals("language")) buttonCode = XINPUT_IR_REMOTE_LANGUAGE;
else CLog::Log(LOGERROR, "Remote Translator: Can't find button %s", strButton.c_str());
return buttonCode;
}
示例4: GetDirectory
bool CShoutcastDirectory::GetDirectory(const CStdString& strPath, CFileItemList &items)
{
CStdString strRoot = strPath;
if (CUtil::HasSlashAtEnd(strRoot))
strRoot.Delete(strRoot.size() - 1);
/* for old users wich doesn't have the full url */
if( strRoot.Equals("shout://www.shoutcast.com") )
strRoot = "shout://www.shoutcast.com/sbin/newxml.phtml";
if (g_directoryCache.GetDirectory(strRoot, items))
return true;
CGUIDialogProgress* dlgProgress = (CGUIDialogProgress*)m_gWindowManager.GetWindow(WINDOW_DIALOG_PROGRESS);
if (dlgProgress)
{
dlgProgress->ShowProgressBar(false);
dlgProgress->SetHeading(260);
dlgProgress->SetLine(0, 14003);
dlgProgress->SetLine(1, "");
dlgProgress->SetLine(2, "");
dlgProgress->StartModal();
}
CURL url(strRoot);
CStdString protocol = url.GetProtocol();
url.SetProtocol("http");
CFileCurl http;
//CURL doesn't seem to understand that data is encoded.. odd
// opening as text for now
//http.SetContentEncoding("deflate");
if( !http.Open(url, false) )
{
CLog::Log(LOGERROR, "%s - Unable to get shoutcast dir", __FUNCTION__);
if (dlgProgress) dlgProgress->Close();
return false;
}
/* restore protocol */
url.SetProtocol(protocol);
CStdString content = http.GetContent();
if( !(content.Equals("text/html") || content.Equals("text/xml")
|| content.Equals("text/html;charset=utf-8") || content.Equals("text/xml;charset=utf-8") ))
{
CLog::Log(LOGERROR, "%s - Invalid content type %s", __FUNCTION__, content.c_str());
if (dlgProgress) dlgProgress->Close();
return false;
}
int size_read = 0;
int size_total = (int)http.GetLength();
int data_size = 0;
CStdString data;
data.reserve(size_total);
/* read response from server into string buffer */
char buffer[16384];
while( (size_read = http.Read(buffer, sizeof(buffer)-1)) > 0 )
{
buffer[size_read] = 0;
data += buffer;
data_size += size_read;
dlgProgress->Progress();
if (dlgProgress->IsCanceled())
{
dlgProgress->Close();
return false;
}
}
/* parse returned xml */
TiXmlDocument doc;
doc.Parse(data.c_str());
TiXmlElement *root = doc.RootElement();
if(root == NULL)
{
CLog::Log(LOGERROR, "%s - Unable to parse xml", __FUNCTION__);
CLog::Log(LOGDEBUG, "%s - Sample follows...\n%s", __FUNCTION__, data.c_str());
dlgProgress->Close();
return false;
}
/* clear data to keep memusage down, not needed anymore */
data.Empty();
bool result = false;
if( strcmp(root->Value(), "genrelist") == 0 )
result = ParseGenres(root, items, url);
else if( strcmp(root->Value(), "stationlist") == 0 )
//.........这里部分代码省略.........
示例5: Load
bool CLangInfo::Load(const std::string& strFileName, bool onlyCheckLanguage /*= false*/)
{
SetDefaults();
CXBMCTinyXML xmlDoc;
if (!xmlDoc.LoadFile(strFileName))
{
CLog::Log(onlyCheckLanguage ? LOGDEBUG : LOGERROR, "unable to load %s: %s at line %d", strFileName.c_str(), xmlDoc.ErrorDesc(), xmlDoc.ErrorRow());
return false;
}
TiXmlElement* pRootElement = xmlDoc.RootElement();
if (pRootElement->ValueStr() != "language")
{
CLog::Log(onlyCheckLanguage ? LOGDEBUG : LOGERROR, "%s Doesn't contain <language>", strFileName.c_str());
return false;
}
if (pRootElement->Attribute("locale"))
m_defaultRegion.m_strLangLocaleName = pRootElement->Attribute("locale");
#ifdef TARGET_WINDOWS
// Windows need 3 chars isolang code
if (m_defaultRegion.m_strLangLocaleName.length() == 2)
{
if (! g_LangCodeExpander.ConvertTwoToThreeCharCode(m_defaultRegion.m_strLangLocaleName, m_defaultRegion.m_strLangLocaleName, true))
m_defaultRegion.m_strLangLocaleName = "";
}
if (!g_LangCodeExpander.ConvertWindowsToGeneralCharCode(m_defaultRegion.m_strLangLocaleName, m_languageCodeGeneral))
m_languageCodeGeneral = "";
#else
if (m_defaultRegion.m_strLangLocaleName.length() != 3)
{
if (!g_LangCodeExpander.ConvertToThreeCharCode(m_languageCodeGeneral, m_defaultRegion.m_strLangLocaleName, !onlyCheckLanguage))
m_languageCodeGeneral = "";
}
else
m_languageCodeGeneral = m_defaultRegion.m_strLangLocaleName;
#endif
CStdString tmp;
if (g_LangCodeExpander.ConvertToTwoCharCode(tmp, m_defaultRegion.m_strLangLocaleName))
m_defaultRegion.m_strLangLocaleCodeTwoChar = tmp;
const TiXmlNode *pCharSets = pRootElement->FirstChild("charsets");
if (pCharSets && !pCharSets->NoChildren())
{
const TiXmlNode *pGui = pCharSets->FirstChild("gui");
if (pGui && !pGui->NoChildren())
{
CStdString strForceUnicodeFont = ((TiXmlElement*) pGui)->Attribute("unicodefont");
if (strForceUnicodeFont.Equals("true"))
m_defaultRegion.m_forceUnicodeFont=true;
m_defaultRegion.m_strGuiCharSet=pGui->FirstChild()->Value();
}
const TiXmlNode *pSubtitle = pCharSets->FirstChild("subtitle");
if (pSubtitle && !pSubtitle->NoChildren())
m_defaultRegion.m_strSubtitleCharSet=pSubtitle->FirstChild()->Value();
}
const TiXmlNode *pDVD = pRootElement->FirstChild("dvd");
if (pDVD && !pDVD->NoChildren())
{
const TiXmlNode *pMenu = pDVD->FirstChild("menu");
if (pMenu && !pMenu->NoChildren())
m_defaultRegion.m_strDVDMenuLanguage=pMenu->FirstChild()->Value();
const TiXmlNode *pAudio = pDVD->FirstChild("audio");
if (pAudio && !pAudio->NoChildren())
m_defaultRegion.m_strDVDAudioLanguage=pAudio->FirstChild()->Value();
const TiXmlNode *pSubtitle = pDVD->FirstChild("subtitle");
if (pSubtitle && !pSubtitle->NoChildren())
m_defaultRegion.m_strDVDSubtitleLanguage=pSubtitle->FirstChild()->Value();
}
const TiXmlNode *pRegions = pRootElement->FirstChild("regions");
if (pRegions && !pRegions->NoChildren())
{
const TiXmlElement *pRegion=pRegions->FirstChildElement("region");
while (pRegion)
{
CRegion region(m_defaultRegion);
region.m_strName=pRegion->Attribute("name");
if (region.m_strName.empty())
region.m_strName="N/A";
if (pRegion->Attribute("locale"))
region.m_strRegionLocaleName = pRegion->Attribute("locale");
#ifdef TARGET_WINDOWS
// Windows need 3 chars regions code
if (region.m_strRegionLocaleName.length() == 2)
{
if (! g_LangCodeExpander.ConvertLinuxToWindowsRegionCodes(region.m_strRegionLocaleName, region.m_strRegionLocaleName))
region.m_strRegionLocaleName = "";
//.........这里部分代码省略.........
示例6: OnDownloadComplete
//.........这里部分代码省略.........
CStackDirectory::GetPaths(g_application.CurrentFileItem().GetPath(), vecFiles);
// Make sure (stack) size is the same as the size of the items handed to us, else fallback to single item
if (items->Size() != (int) vecFiles.size())
{
vecFiles.clear();
vecFiles.push_back(strCurrentFile);
}
}
else
{
vecFiles.push_back(strCurrentFile);
}
if (storageMode == SUBTITLE_STORAGEMODE_MOVIEPATH &&
CUtil::SupportsWriteFileOperations(strCurrentFilePath))
{
strDestPath = strCurrentFilePath;
}
}
// Use fallback?
if (strDestPath.empty())
strDestPath = strDownloadPath;
// Extract the language and appropriate extension
CStdString strSubLang;
g_LangCodeExpander.ConvertToTwoCharCode(strSubLang, language);
// Iterate over all items to transfer
for (unsigned int i = 0; i < vecFiles.size() && i < (unsigned int) items->Size(); i++)
{
CStdString strUrl = items->Get(i)->GetPath();
CStdString strFileName = URIUtils::GetFileName(vecFiles[i]);
URIUtils::RemoveExtension(strFileName);
// construct subtitle path
CStdString strSubExt = URIUtils::GetExtension(strUrl);
CStdString strSubName = StringUtils::Format("%s.%s%s", strFileName.c_str(), strSubLang.c_str(), strSubExt.c_str());
// Handle URL encoding:
CStdString strDownloadFile = URIUtils::ChangeBasePath(strCurrentFilePath, strSubName, strDownloadPath);
CStdString strDestFile = strDownloadFile;
if (!CFile::Copy(strUrl, strDownloadFile))
{
CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Error, strSubName, g_localizeStrings.Get(24113));
CLog::Log(LOGERROR, "%s - Saving of subtitle %s to %s failed", __FUNCTION__, strUrl.c_str(), strDownloadFile.c_str());
}
else
{
if (strDestPath != strDownloadPath)
{
// Handle URL encoding:
CStdString strTryDestFile = URIUtils::ChangeBasePath(strCurrentFilePath, strSubName, strDestPath);
/* Copy the file from temp to our final destination, if that fails fallback to download path
* (ie. special://subtitles or use special://temp). Note that after the first item strDownloadPath equals strDestpath
* so that all remaining items (including the .idx below) are copied directly to their final destination and thus all
* items end up in the same folder
*/
CLog::Log(LOGDEBUG, "%s - Saving subtitle %s to %s", __FUNCTION__, strDownloadFile.c_str(), strTryDestFile.c_str());
if (CFile::Copy(strDownloadFile, strTryDestFile))
{
CFile::Delete(strDownloadFile);
strDestFile = strTryDestFile;
strDownloadPath = strDestPath; // Update download path so all the other items get directly downloaded to our final destination
}
else
{
CLog::Log(LOGWARNING, "%s - Saving of subtitle %s to %s failed. Falling back to %s", __FUNCTION__, strDownloadFile.c_str(), strTryDestFile.c_str(), strDownloadPath.c_str());
strDestPath = strDownloadPath; // Copy failed, use fallback for the rest of the items
}
}
else
{
CLog::Log(LOGDEBUG, "%s - Saved subtitle %s to %s", __FUNCTION__, strUrl.c_str(), strDownloadFile.c_str());
}
// for ".sub" subtitles we check if ".idx" counterpart exists and copy that as well
if (strSubExt.Equals(".sub"))
{
strUrl = URIUtils::ReplaceExtension(strUrl, ".idx");
if(CFile::Exists(strUrl))
{
CStdString strSubNameIdx = StringUtils::Format("%s.%s.idx", strFileName.c_str(), strSubLang.c_str());
// Handle URL encoding:
strDestFile = URIUtils::ChangeBasePath(strCurrentFilePath, strSubNameIdx, strDestPath);
CFile::Copy(strUrl, strDestFile);
}
}
// Set sub for currently playing (stack) item
if (vecFiles[i] == strCurrentFile)
SetSubtitles(strDestFile);
}
}
// Close the window
Close();
}
示例7: OnMessage
bool CGUIWindowMusicSongs::OnMessage(CGUIMessage& message)
{
switch ( message.GetMessage() )
{
case GUI_MSG_WINDOW_DEINIT:
if (m_thumbLoader.IsLoading())
m_thumbLoader.StopThread();
break;
case GUI_MSG_WINDOW_INIT:
{
// removed the start window check from files view
// the window translator does it by using a virtual window id (5)
// check for a passed destination path
CStdString strDestination = message.GetStringParam();
if (!strDestination.IsEmpty())
{
message.SetStringParam("");
CLog::Log(LOGINFO, "Attempting to quickpath to: %s", strDestination.c_str());
m_history.ClearPathHistory();
}
// is this the first time the window is opened?
if (m_vecItems->m_strPath == "?" && strDestination.IsEmpty())
{
strDestination = g_settings.m_defaultMusicSource;
m_vecItems->m_strPath=strDestination;
CLog::Log(LOGINFO, "Attempting to default to: %s", strDestination.c_str());
}
// try to open the destination path
if (!strDestination.IsEmpty())
{
// open root
if (strDestination.Equals("$ROOT"))
{
m_vecItems->m_strPath = "";
CLog::Log(LOGINFO, " Success! Opening root listing.");
}
// open playlists location
else if (strDestination.Equals("$PLAYLISTS"))
{
m_vecItems->m_strPath = "special://musicplaylists/";
CLog::Log(LOGINFO, " Success! Opening destination path: %s", m_vecItems->m_strPath.c_str());
}
else
{
// default parameters if the jump fails
m_vecItems->m_strPath.Empty();
bool bIsSourceName = false;
SetupShares();
VECSOURCES shares;
m_rootDir.GetSources(shares);
int iIndex = CUtil::GetMatchingSource(strDestination, shares, bIsSourceName);
if (iIndex > -1)
{
bool unlocked = true;
if (iIndex < (int)shares.size() && shares[iIndex].m_iHasLock == 2)
{
CFileItem item(shares[iIndex]);
if (!g_passwordManager.IsItemUnlocked(&item,"music"))
{
m_vecItems->m_strPath = ""; // no u don't
unlocked = false;
CLog::Log(LOGINFO, " Failure! Failed to unlock destination path: %s", strDestination.c_str());
}
}
// set current directory to matching share
if (unlocked)
{
if (bIsSourceName)
m_vecItems->m_strPath=shares[iIndex].strPath;
else
m_vecItems->m_strPath=strDestination;
CLog::Log(LOGINFO, " Success! Opened destination path: %s (%s)", strDestination.c_str(), m_vecItems->m_strPath.c_str());
}
}
else
{
CLog::Log(LOGERROR, " Failed! Destination parameter (%s) does not match a valid source!", strDestination.c_str());
}
}
// check for network up
if (CUtil::IsRemote(m_vecItems->m_strPath) && !WaitForNetwork())
m_vecItems->m_strPath.Empty();
// need file filters or GetDirectory in SetHistoryPath fails
SetHistoryForPath(m_vecItems->m_strPath);
}
return CGUIWindowMusicBase::OnMessage(message);
}
break;
case GUI_MSG_DIRECTORY_SCANNED:
{
CFileItem directory(message.GetStringParam(), true);
//.........这里部分代码省略.........
示例8: ParseSortMethods
bool CFileItemHandler::ParseSortMethods(const CStdString &method, const bool &ignorethe, const CStdString &order, SORT_METHOD &sortmethod, SORT_ORDER &sortorder)
{
if (order.Equals("ascending"))
sortorder = SORT_ORDER_ASC;
else if (order.Equals("descending"))
sortorder = SORT_ORDER_DESC;
else
return false;
if (method.Equals("none"))
sortmethod = SORT_METHOD_NONE;
else if (method.Equals("label"))
sortmethod = ignorethe ? SORT_METHOD_LABEL_IGNORE_THE : SORT_METHOD_LABEL;
else if (method.Equals("date"))
sortmethod = SORT_METHOD_DATE;
else if (method.Equals("size"))
sortmethod = SORT_METHOD_SIZE;
else if (method.Equals("file"))
sortmethod = SORT_METHOD_FILE;
else if (method.Equals("drivetype"))
sortmethod = SORT_METHOD_DRIVE_TYPE;
else if (method.Equals("track"))
sortmethod = SORT_METHOD_TRACKNUM;
else if (method.Equals("duration"))
sortmethod = SORT_METHOD_DURATION;
else if (method.Equals("title"))
sortmethod = ignorethe ? SORT_METHOD_TITLE_IGNORE_THE : SORT_METHOD_TITLE;
else if (method.Equals("artist"))
sortmethod = ignorethe ? SORT_METHOD_ARTIST_IGNORE_THE : SORT_METHOD_ARTIST;
else if (method.Equals("album"))
sortmethod = ignorethe ? SORT_METHOD_ALBUM_IGNORE_THE : SORT_METHOD_ALBUM;
else if (method.Equals("genre"))
sortmethod = SORT_METHOD_GENRE;
else if (method.Equals("year"))
sortmethod = SORT_METHOD_YEAR;
else if (method.Equals("videorating"))
sortmethod = SORT_METHOD_VIDEO_RATING;
else if (method.Equals("programcount"))
sortmethod = SORT_METHOD_PROGRAM_COUNT;
else if (method.Equals("playlist"))
sortmethod = SORT_METHOD_PLAYLIST_ORDER;
else if (method.Equals("episode"))
sortmethod = SORT_METHOD_EPISODE;
else if (method.Equals("videotitle"))
sortmethod = SORT_METHOD_VIDEO_TITLE;
else if (method.Equals("sorttitle"))
sortmethod = ignorethe ? SORT_METHOD_VIDEO_SORT_TITLE_IGNORE_THE : SORT_METHOD_VIDEO_SORT_TITLE;
else if (method.Equals("productioncode"))
sortmethod = SORT_METHOD_PRODUCTIONCODE;
else if (method.Equals("songrating"))
sortmethod = SORT_METHOD_SONG_RATING;
else if (method.Equals("mpaarating"))
sortmethod = SORT_METHOD_MPAA_RATING;
else if (method.Equals("videoruntime"))
sortmethod = SORT_METHOD_VIDEO_RUNTIME;
else if (method.Equals("studio"))
sortmethod = ignorethe ? SORT_METHOD_STUDIO_IGNORE_THE : SORT_METHOD_STUDIO;
else if (method.Equals("fullpath"))
sortmethod = SORT_METHOD_FULLPATH;
else if (method.Equals("lastplayed"))
sortmethod = SORT_METHOD_LASTPLAYED;
else if (method.Equals("playcount"))
sortmethod = SORT_METHOD_PLAYCOUNT;
else if (method.Equals("unsorted"))
sortmethod = SORT_METHOD_UNSORTED;
else if (method.Equals("max"))
sortmethod = SORT_METHOD_MAX;
else
return false;
return true;
}
示例9: SetThumb
//.........这里部分代码省略.........
item->SetLabel(g_localizeStrings.Get(20015));
items.Add(item);
}
}
}
else
{
strPath = m_vecItems->Get(iItem)->m_strPath;
strPath.Replace("plugin://music/","Q:\\plugins\\music\\");
strPath.Replace("/","\\");
picturePath = strPath;
CFileItem item(strPath,true);
cachedThumb = item.GetCachedProgramThumb();
}
if (XFILE::CFile::Exists(cachedThumb))
{
CFileItem *item = new CFileItem("thumb://Current", false);
item->SetThumbnailImage(cachedThumb);
item->SetLabel(g_localizeStrings.Get(20016));
items.Add(item);
}
if (button == CONTEXT_BUTTON_SET_PLUGIN_THUMB)
{
if (items.Size() == 0)
{
CFileItem item2(strPath,false);
CUtil::AddFileToFolder(strPath,"default.py",item2.m_strPath);
if (XFILE::CFile::Exists(item2.GetCachedProgramThumb()))
{
CFileItem *item = new CFileItem("thumb://Current", false);
item->SetThumbnailImage(item2.GetCachedProgramThumb());
item->SetLabel(g_localizeStrings.Get(20016));
items.Add(item);
}
}
CUtil::AddFileToFolder(strPath,"default.tbn",strThumb);
if (XFILE::CFile::Exists(strThumb))
{
CFileItem* item = new CFileItem(strThumb,false);
item->SetThumbnailImage(strThumb);
item->SetLabel(g_localizeStrings.Get(20017));
items.Add(item);
}
}
CUtil::AddFileToFolder(picturePath,"folder.jpg",strThumb);
if (XFILE::CFile::Exists(strThumb))
{
CFileItem* pItem = new CFileItem(strThumb,false);
pItem->SetLabel(g_localizeStrings.Get(20017));
pItem->SetThumbnailImage(strThumb);
items.Add(pItem);
}
CFileItem* nItem = new CFileItem("thumb://None",false);
nItem->SetLabel(g_localizeStrings.Get(20018));
if (button == CONTEXT_BUTTON_SET_ARTIST_THUMB)
nItem->SetThumbnailImage("DefaultArtistBig.png");
else
nItem->SetThumbnailImage("DefaultFolderBig.png");
items.Add(nItem);
if (CGUIDialogFileBrowser::ShowAndGetImage(items, g_settings.m_musicSources,
g_localizeStrings.Get(20019), picturePath))
{
CPicture picture;
if (picturePath.Equals("thumb://Current"))
return;
if (picturePath.Equals("thumb://None"))
{
XFILE::CFile::Delete(cachedThumb);
if (button == CONTEXT_BUTTON_SET_PLUGIN_THUMB)
{
CPicture picture;
picture.CacheSkinImage("DefaultFolderBig.png",cachedThumb);
CFileItem item2(strPath,false);
CUtil::AddFileToFolder(strPath,"default.py",item2.m_strPath);
XFILE::CFile::Delete(item2.GetCachedProgramThumb());
}
}
else if (button == CONTEXT_BUTTON_SET_PLUGIN_THUMB)
XFILE::CFile::Cache(picturePath,cachedThumb);
if (picturePath.Equals("thumb://None") ||
picture.DoCreateThumbnail(items.Get(picturePath)->GetThumbnailImage(), cachedThumb))
{
CMusicDatabaseDirectory dir;
dir.ClearDirectoryCache(m_vecItems->m_strPath);
CGUIMessage msg(GUI_MSG_NOTIFY_ALL, 0, 0, GUI_MSG_REFRESH_THUMBS);
g_graphicsContext.SendMessage(msg);
Update(m_vecItems->m_strPath);
}
else
CLog::Log(LOGERROR, " %s Could not cache artist/plugin thumb: %s", __FUNCTION__, picturePath.c_str());
}
}
示例10: OnMessage
bool CGUIWindowMusicNav::OnMessage(CGUIMessage& message)
{
switch (message.GetMessage())
{
case GUI_MSG_WINDOW_RESET:
m_vecItems->m_strPath = "?";
break;
case GUI_MSG_WINDOW_DEINIT:
if (m_thumbLoader.IsLoading())
m_thumbLoader.StopThread();
break;
case GUI_MSG_WINDOW_INIT:
{
/* We don't want to show Autosourced items (ie removable pendrives, memorycards) in Library mode */
m_rootDir.AllowNonLocalSources(false);
// check for valid quickpath parameter
CStdString strDestination = message.GetStringParam();
if (!strDestination.IsEmpty())
{
message.SetStringParam("");
CLog::Log(LOGINFO, "Attempting to quickpath to: %s", strDestination.c_str());
}
// is this the first time the window is opened?
if (m_vecItems->m_strPath == "?" && strDestination.IsEmpty())
{
strDestination = g_settings.m_defaultMusicLibSource;
m_vecItems->m_strPath = strDestination;
CLog::Log(LOGINFO, "Attempting to default to: %s", strDestination.c_str());
}
if (!strDestination.IsEmpty())
{
if (strDestination.Equals("$ROOT") || strDestination.Equals("Root"))
{
m_vecItems->m_strPath = "";
}
else if (strDestination.Equals("Genres"))
{
m_vecItems->m_strPath = "musicdb://1/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Artists"))
{
m_vecItems->m_strPath = "musicdb://2/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Albums"))
{
m_vecItems->m_strPath = "musicdb://3/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Songs"))
{
m_vecItems->m_strPath = "musicdb://4/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Top100"))
{
m_vecItems->m_strPath = "musicdb://5/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Top100Songs"))
{
m_vecItems->m_strPath = "musicdb://5/2/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Top100Albums"))
{
m_vecItems->m_strPath = "musicdb://5/1/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("RecentlyAddedAlbums"))
{
m_vecItems->m_strPath = "musicdb://6/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("RecentlyPlayedAlbums"))
{
m_vecItems->m_strPath = "musicdb://7/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Compilations"))
{
m_vecItems->m_strPath = "musicdb://8/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Playlists"))
{
m_vecItems->m_strPath = "special://musicplaylists/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Years"))
{
m_vecItems->m_strPath = "musicdb://9/";
SetHistoryForPath(m_vecItems->m_strPath);
}
else if (strDestination.Equals("Plugins"))
{
m_vecItems->m_strPath = "plugin://music/";
//.........这里部分代码省略.........
示例11: GetQuickpathName
CStdString CGUIWindowMusicNav::GetQuickpathName(const CStdString& strPath) const
{
if (strPath.Equals("musicdb://1/"))
return "Genres";
else if (strPath.Equals("musicdb://2/"))
return "Artists";
else if (strPath.Equals("musicdb://3/"))
return "Albums";
else if (strPath.Equals("musicdb://4/"))
return "Songs";
else if (strPath.Equals("musicdb://5/"))
return "Top100";
else if (strPath.Equals("musicdb://5/2/"))
return "Top100Songs";
else if (strPath.Equals("musicdb://5/1/"))
return "Top100Albums";
else if (strPath.Equals("musicdb://6/"))
return "RecentlyAddedAlbums";
else if (strPath.Equals("musicdb://7/"))
return "RecentlyPlayedAlbums";
else if (strPath.Equals("musicdb://8/"))
return "Compilations";
else if (strPath.Equals("musicdb://9/"))
return "Years";
else if (strPath.Equals("special://musicplaylists/"))
return "Playlists";
else
{
CLog::Log(LOGERROR, " CGUIWindowMusicNav::GetQuickpathName: Unknown parameter (%s)", strPath.c_str());
return strPath;
}
}
示例12: Update
// \brief Set window to a specific directory
// \param strDirectory The directory to be displayed in list/thumb control
// This function calls OnPrepareFileItems() and OnFinalizeFileItems()
bool CGUIMediaWindow::Update(const CStdString &strDirectory)
{
// TODO: OnInitWindow calls Update() before window path has been set properly.
if (strDirectory == "?")
return false;
// get selected item
int iItem = m_viewControl.GetSelectedItem();
CStdString strSelectedItem = "";
if (iItem >= 0 && iItem < m_vecItems->Size())
{
CFileItemPtr pItem = m_vecItems->Get(iItem);
if (!pItem->IsParentFolder())
{
GetDirectoryHistoryString(pItem.get(), strSelectedItem);
}
}
CStdString strOldDirectory = m_vecItems->m_strPath;
m_history.SetSelectedItem(strSelectedItem, strOldDirectory);
CFileItemList items;
if (!GetDirectory(strDirectory, items))
{
CLog::Log(LOGERROR,"CGUIMediaWindow::GetDirectory(%s) failed", strDirectory.c_str());
// if the directory is the same as the old directory, then we'll return
// false. Else, we assume we can get the previous directory
if (strDirectory.Equals(strOldDirectory))
return false;
// We assume, we can get the parent
// directory again, but we have to
// return false to be able to eg. show
// an error message.
CStdString strParentPath = m_history.GetParentPath();
m_history.RemoveParentPath();
Update(strParentPath);
return false;
}
if (items.GetLabel().IsEmpty())
items.SetLabel(CUtil::GetTitleFromPath(items.m_strPath, true));
ClearFileItems();
m_vecItems->Copy(items);
// if we're getting the root source listing
// make sure the path history is clean
if (strDirectory.IsEmpty())
m_history.ClearPathHistory();
int iWindow = GetID();
int showLabel = 0;
if (strDirectory.IsEmpty() && (iWindow == WINDOW_MUSIC_FILES ||
iWindow == WINDOW_FILES ||
iWindow == WINDOW_PICTURES ||
iWindow == WINDOW_PROGRAMS))
showLabel = 1026;
if (strDirectory.Equals("sources://video/"))
showLabel = 999;
if (showLabel && (m_vecItems->Size() == 0 || !m_guiState->DisableAddSourceButtons())) // add 'add source button'
{
CStdString strLabel = g_localizeStrings.Get(showLabel);
CFileItemPtr pItem(new CFileItem(strLabel));
pItem->m_strPath = "add";
pItem->SetIconImage("DefaultAddSource.png");
pItem->SetLabel(strLabel);
pItem->SetLabelPreformated(true);
pItem->m_bIsFolder = true;
pItem->SetSpecialSort(SORT_ON_BOTTOM);
m_vecItems->Add(pItem);
}
m_iLastControl = GetFocusedControlID();
// Ask the derived class if it wants to load additional info
// for the fileitems like media info or additional
// filtering on the items, setting thumbs.
OnPrepareFileItems(*m_vecItems);
m_vecItems->FillInDefaultIcons();
m_guiState.reset(CGUIViewState::GetViewState(GetID(), *m_vecItems));
FormatAndSort(*m_vecItems);
// Ask the devived class if it wants to do custom list operations,
// eg. changing the label
OnFinalizeFileItems(*m_vecItems);
UpdateButtons();
m_viewControl.SetItems(*m_vecItems);
strSelectedItem = m_history.GetSelectedItem(m_vecItems->m_strPath);
bool bSelectedFound = false;
//int iSongInDirectory = -1;
//.........这里部分代码省略.........
示例13: GetStartFolder
CStdString CGUIMediaWindow::GetStartFolder(const CStdString &dir)
{
if (dir.Equals("$ROOT") || dir.Equals("Root"))
return "";
return dir;
}
示例14: GetDirectory
JSONRPC_STATUS CFileOperations::GetDirectory(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
{
CStdString media = parameterObject["media"].asString();
media = media.ToLower();
CFileItemList items;
CStdString strPath = parameterObject["directory"].asString();
if (!CFileUtils::RemoteAccessAllowed(strPath))
return InvalidParams;
CStdStringArray regexps;
CStdString extensions = "";
if (media.Equals("video"))
{
regexps = g_advancedSettings.m_videoExcludeFromListingRegExps;
extensions = g_advancedSettings.m_videoExtensions;
}
else if (media.Equals("music"))
{
regexps = g_advancedSettings.m_audioExcludeFromListingRegExps;
extensions = g_advancedSettings.m_musicExtensions;
}
else if (media.Equals("pictures"))
{
regexps = g_advancedSettings.m_pictureExcludeFromListingRegExps;
extensions = g_advancedSettings.m_pictureExtensions;
}
if (CDirectory::GetDirectory(strPath, items, extensions))
{
CFileItemList filteredFiles;
for (unsigned int i = 0; i < (unsigned int)items.Size(); i++)
{
if (CUtil::ExcludeFileOrFolder(items[i]->GetPath(), regexps))
continue;
if (items[i]->IsSmb())
{
CURL url(items[i]->GetPath());
items[i]->SetPath(url.GetWithoutUserDetails());
}
if ((media == "video" && items[i]->HasVideoInfoTag()) ||
(media == "music" && items[i]->HasMusicInfoTag()) ||
(media == "picture" && items[i]->HasPictureInfoTag()) ||
media == "files" ||
URIUtils::IsUPnP(items.GetPath()))
filteredFiles.Add(items[i]);
else
{
CFileItemPtr fileItem(new CFileItem());
if (FillFileItem(items[i], fileItem, media, parameterObject))
filteredFiles.Add(fileItem);
else
filteredFiles.Add(items[i]);
}
}
// Check if the "properties" list exists
// and make sure it contains the "file" and "filetype"
// fields
CVariant param = parameterObject;
if (!param.isMember("properties"))
param["properties"] = CVariant(CVariant::VariantTypeArray);
bool hasFileField = false;
for (CVariant::const_iterator_array itr = param["properties"].begin_array(); itr != param["properties"].end_array(); itr++)
{
if (itr->asString().compare("file") == 0)
{
hasFileField = true;
break;
}
}
if (!hasFileField)
param["properties"].append("file");
param["properties"].append("filetype");
HandleFileItemList("id", true, "files", filteredFiles, param, result);
return OK;
}
return InvalidParams;
}
示例15: OnSettingChanged
void CGUIDialogProfileSettings::OnSettingChanged(SettingInfo &setting)
{
// check and update anything that needs it
if (setting.id == 1)
{
if (CGUIKeyboardFactory::ShowAndGetInput(m_strName,g_localizeStrings.Get(20093),false))
{
m_bNeedSave = true;
SET_CONTROL_LABEL(1000,m_strName);
}
}
if (setting.id == 2)
{
CStdString strThumb;
VECSOURCES shares;
g_mediaManager.GetLocalDrives(shares);
CFileItemList items;
if (!m_strThumb.IsEmpty())
{
CFileItemPtr item(new CFileItem("thumb://Current", false));
item->SetArt("thumb", m_strThumb);
item->SetLabel(g_localizeStrings.Get(20016));
items.Add(item);
}
CFileItemPtr item(new CFileItem("thumb://None", false));
item->SetArt("thumb", m_strDefaultImage);
item->SetLabel(g_localizeStrings.Get(20018));
items.Add(item);
if (CGUIDialogFileBrowser::ShowAndGetImage(items,shares,g_localizeStrings.Get(1030),strThumb) &&
!strThumb.Equals("thumb://Current"))
{
m_bNeedSave = true;
m_strThumb = strThumb.Equals("thumb://None") ? "" : strThumb;
CGUIImage *pImage = (CGUIImage*)GetControl(2);
if (pImage)
{
pImage->SetFileName("");
pImage->SetInvalid();
pImage->SetFileName(!m_strThumb.IsEmpty() ? m_strThumb : m_strDefaultImage);
}
}
}
if (setting.id == 3)
{
if (OnProfilePath(m_strDirectory, m_bIsDefault))
{
m_bNeedSave = true;
SET_CONTROL_LABEL(1001,m_strDirectory);
}
}
if (setting.id == 4)
{
if (m_bShowDetails)
{
if (CProfilesManager::Get().GetMasterProfile().getLockMode() == LOCK_MODE_EVERYONE && !m_bIsDefault)
{
if (CGUIDialogYesNo::ShowAndGetInput(20066,20118,20119,20022))
g_passwordManager.SetMasterLockMode(false);
if (CProfilesManager::Get().GetMasterProfile().getLockMode() == LOCK_MODE_EVERYONE)
return;
}
if (CGUIDialogLockSettings::ShowAndGetLock(m_locks, m_bIsDefault ? 12360 : 20068, CProfilesManager::Get().GetMasterProfile().getLockMode() == LOCK_MODE_EVERYONE || m_bIsDefault))
m_bNeedSave = true;
}
else
{
if (CGUIDialogLockSettings::ShowAndGetLock(m_locks, m_bIsDefault ? 12360 : 20068, false, false))
m_bNeedSave = true;
}
}
if (setting.id > 4)
m_bNeedSave = true;
}