CMusicDatabase db;
if (db.Open())
{
- set<CStdString> playlists;
+ set<std::string> playlists;
if ( playlistLoaded )
m_strCurrentFilterMusic = playlist.GetWhereClause(db, playlists);
CVideoDatabase db;
if (db.Open())
{
- set<CStdString> playlists;
+ set<std::string> playlists;
if ( playlistLoaded )
m_strCurrentFilterVideo = playlist.GetWhereClause(db, playlists);
if (!videodb.Open())
return -1;
- std::set<CStdString> playlists;
+ std::set<std::string> playlists;
CDatabase::Filter dbfilter;
dbfilter.where = tmpFilter.GetWhereClause(videodb, playlists);
if (!musicdb.Open())
return -1;
- std::set<CStdString> playlists;
+ std::set<std::string> playlists;
CDatabase::Filter dbfilter;
dbfilter.where = tmpFilter.GetWhereClause(musicdb, playlists);
// setup groups
labels.clear();
vector<Field> groups = CSmartPlaylistRule::GetGroups(m_playlist.GetType());
- Field currentGroup = CSmartPlaylistRule::TranslateGroup(m_playlist.GetGroup());
+ Field currentGroup = CSmartPlaylistRule::TranslateGroup(m_playlist.GetGroup().c_str());
for (unsigned int i = 0; i < groups.size(); i++)
labels.push_back(make_pair(CSmartPlaylistRule::GetLocalizedGroup(groups[i]), groups[i]));
SET_CONTROL_LABELS(CONTROL_GROUP_BY, currentGroup, &labels);
CSmartPlaylist playlist;
// don't list unloadable smartplaylists or any referencable smartplaylists
// which do not match the type of the current smartplaylist
- if (!playlist.Load((CStdString)item->GetPath()) ||
+ if (!playlist.Load(item->GetPath()) ||
(m_rule.m_field == FieldPlaylist &&
(!CSmartPlaylist::CheckTypeCompatibility(m_type, playlist.GetType()) ||
(!playlist.GetGroup().empty() || playlist.IsGroupMixed()))))
bool CSmartPlaylistDirectory::GetDirectory(const CSmartPlaylist &playlist, CFileItemList& items, const CStdString &strBaseDir /* = "" */, bool filter /* = false */)
{
bool success = false, success2 = false;
- std::vector<CStdString> virtualFolders;
+ std::vector<std::string> virtualFolders;
SortDescription sorting;
sorting.limitEnd = playlist.GetLimit();
// get all virtual folders and add them to the item list
playlist.GetVirtualFolders(virtualFolders);
- for (std::vector<CStdString>::const_iterator virtualFolder = virtualFolders.begin(); virtualFolder != virtualFolders.end(); virtualFolder++)
+ for (std::vector<std::string>::const_iterator virtualFolder = virtualFolders.begin(); virtualFolder != virtualFolders.end(); virtualFolder++)
{
CFileItemPtr pItem = CFileItemPtr(new CFileItem(*virtualFolder, true));
IFileDirectory *dir = CFileDirectoryFactory::Create(pItem->GetURL(), pItem.get());
}
}
- if (playlist.GetType().Equals("movies") ||
- playlist.GetType().Equals("tvshows") ||
- playlist.GetType().Equals("episodes"))
+ if (playlist.GetType() == "movies" ||
+ playlist.GetType() == "tvshows" ||
+ playlist.GetType() == "episodes")
{
CVideoDatabase db;
if (db.Open())
if (db.Open())
{
CSmartPlaylist plist(playlist);
- if (playlist.GetType().Equals("mixed") || playlist.GetType().empty())
+ if (playlist.GetType() == "mixed" || playlist.GetType().empty())
plist.SetType("songs");
MediaType mediaType = MediaTypes::FromString(plist.GetType());
}
}
- if (playlist.GetType().Equals("musicvideos") || playlist.GetType().Equals("mixed"))
+ if (playlist.GetType() == "musicvideos" || playlist.GetType() == "mixed")
{
CVideoDatabase db;
if (db.Open())
{
CSmartPlaylist mvidPlaylist(playlist);
- if (playlist.GetType().Equals("mixed"))
+ if (playlist.GetType() == "mixed")
mvidPlaylist.SetType("musicvideos");
CStdString baseDir = strBaseDir;
item->m_iprogramCount = i; // hack for playlist order
}
- if (playlist.GetType().Equals("mixed"))
+ if (playlist.GetType() == "mixed")
return success || success2;
- else if (playlist.GetType().Equals("musicvideos"))
+ else if (playlist.GetType() == "musicvideos")
return success2;
else
return success;
if (xsp.GetType() == type ||
(xsp.GetGroup() == type && !xsp.IsGroupMixed()))
{
- std::set<CStdString> playlists;
+ std::set<std::string> playlists;
filter.AppendWhere(xsp.GetWhereClause(*this, playlists));
if (xsp.GetLimit() > 0)
// check if the filter playlist matches the item type
if (xspFilter.GetType() == type)
{
- std::set<CStdString> playlists;
+ std::set<std::string> playlists;
filter.AppendWhere(xspFilter.GetWhereClause(*this, playlists));
}
// remove the filter if it doesn't match the item type
m_bShuffled = false;
}
-const CStdString& CPlayList::GetName() const
+const std::string& CPlayList::GetName() const
{
return m_strPlayListName;
}
-void CPlayList::Remove(const CStdString& strFileName)
+void CPlayList::Remove(const std::string& strFileName)
{
int iOrder = -1;
int position = 0;
int CPlayList::RemoveDVDItems()
{
- std::vector <CStdString> vecFilenames;
+ std::vector <std::string> vecFilenames;
// Collect playlist items from DVD share
ivecItems it;
int nFileCount = vecFilenames.size();
if ( nFileCount )
{
- std::vector <CStdString>::iterator it;
+ std::vector <std::string>::iterator it;
it = vecFilenames.begin();
while (it != vecFilenames.end() )
{
- CStdString& strFilename = *it;
+ std::string& strFilename = *it;
Remove( strFilename );
it++;
}
}
-bool CPlayList::Load(const CStdString& strFileName)
+bool CPlayList::Load(const std::string& strFileName)
{
Clear();
m_strBasePath = URIUtils::GetDirectory(strFileName);
return LoadData(ostr.str());
}
-bool CPlayList::LoadData(const CStdString& strData)
+bool CPlayList::LoadData(const std::string& strData)
{
return false;
}
CFileItemPtr playlistItem = *it;
if (playlistItem->IsSamePath(item))
{
- CStdString temp = playlistItem->GetPath(); // save path, it may have been altered
+ std::string temp = playlistItem->GetPath(); // save path, it may have been altered
*playlistItem = *item;
playlistItem->SetPath(temp);
break;
}
}
-const CStdString CPlayList::ResolveURL(const CFileItemPtr &item ) const
+const std::string& CPlayList::ResolveURL(const CFileItemPtr &item ) const
{
if (item->IsMusicDb() && item->HasMusicInfoTag())
return item->GetMusicInfoTag()->GetURL();
#include "FileItem.h"
#include <boost/shared_ptr.hpp>
+#include <string>
namespace PLAYLIST
{
public:
CPlayList(int id = -1);
virtual ~CPlayList(void) {};
- virtual bool Load(const CStdString& strFileName);
+ virtual bool Load(const std::string& strFileName);
virtual bool LoadData(std::istream &stream);
- virtual bool LoadData(const CStdString& strData);
- virtual void Save(const CStdString& strFileName) const {};
+ virtual bool LoadData(const std::string& strData);
+ virtual void Save(const std::string& strFileName) const {};
void Add(CPlayList& playlist);
void Add(const CFileItemPtr &pItem);
void Insert(const CFileItemPtr& item, int iPosition = -1);
int FindOrder(int iOrder) const;
- const CStdString& GetName() const;
- void Remove(const CStdString& strFileName);
+ const std::string& GetName() const;
+ void Remove(const std::string& strFileName);
void Remove(int position);
bool Swap(int position1, int position2);
bool Expand(int position); // expands any playlist at position into this playlist
void UpdateItem(const CFileItem *item);
- const CStdString ResolveURL(const CFileItemPtr &item) const;
+ const std::string& ResolveURL(const CFileItemPtr &item) const;
protected:
int m_id;
- CStdString m_strPlayListName;
- CStdString m_strBasePath;
+ std::string m_strPlayListName;
+ std::string m_strBasePath;
int m_iPlayableItems;
bool m_bShuffled;
bool m_bWasPlayed;
if (!pEntryElement) return false;
while (pEntryElement)
{
- CStdString strFileName = XMLUtils::GetAttribute(pEntryElement, "Playstring");
+ std::string strFileName = XMLUtils::GetAttribute(pEntryElement, "Playstring");
size_t iColon = strFileName.find(":");
if (iColon != std::string::npos)
{
}
if (pNodeInfo)
{
- CStdString strInfo = pNodeInfo->FirstChild()->Value();
+ std::string strInfo = pNodeInfo->FirstChild()->Value();
strFileName = URIUtils::SubstitutePath(strFileName);
CUtil::GetQualifiedFilename(m_strBasePath, strFileName);
CFileItemPtr newItem(new CFileItem(strInfo));
return true;
}
-void CPlayListB4S::Save(const CStdString& strFileName) const
+void CPlayListB4S::Save(const std::string& strFileName) const
{
if (!m_vecItems.size()) return ;
- CStdString strPlaylist = strFileName;
+ std::string strPlaylist = strFileName;
strPlaylist = CUtil::MakeLegalPath(strPlaylist);
CFile file;
if (!file.OpenForWrite(strPlaylist, true))
CLog::Log(LOGERROR, "Could not save B4S playlist: [%s]", strPlaylist.c_str());
return ;
}
- CStdString write;
+ std::string write;
write += StringUtils::Format("<?xml version=%c1.0%c encoding='UTF-8' standalone=%cyes%c?>\n", 34, 34, 34, 34);
write += StringUtils::Format("<WinampXML>\n");
write += StringUtils::Format(" <playlist num_entries=%c%i%c label=%c%s%c>\n", 34, m_vecItems.size(), 34, 34, m_strPlayListName.c_str(), 34);
CPlayListB4S(void);
virtual ~CPlayListB4S(void);
virtual bool LoadData(std::istream& stream);
- virtual void Save(const CStdString& strFileName) const;
+ virtual void Save(const std::string& strFileName) const;
};
}
using namespace PLAYLIST;
-CPlayList* CPlayListFactory::Create(const CStdString& filename)
+CPlayList* CPlayListFactory::Create(const std::string& filename)
{
CFileItem item(filename,false);
return Create(item);
if (item.GetMimeType().empty())
const_cast<CFileItem&>(item).FillInMimeType();
- CStdString strMimeType = item.GetMimeType();
+ std::string strMimeType = item.GetMimeType();
StringUtils::ToLower(strMimeType);
if (strMimeType == "video/x-ms-asf"
return new CPlayListWPL();
}
- CStdString extension = URIUtils::GetExtension(item.GetPath());
+ std::string extension = URIUtils::GetExtension(item.GetPath());
StringUtils::ToLower(extension);
if (extension == ".m3u" || extension == ".strm")
bool CPlayListFactory::IsPlaylist(const CFileItem& item)
{
- CStdString strMimeType = item.GetMimeType();
+ std::string strMimeType = item.GetMimeType();
StringUtils::ToLower(strMimeType);
/* These are abit uncertain
".m3u|.b4s|.pls|.strm|.wpl|.asx|.ram|.url|.pxml");
}
-bool CPlayListFactory::IsPlaylist(const CStdString& filename)
+bool CPlayListFactory::IsPlaylist(const std::string& filename)
{
return URIUtils::HasExtension(filename,
".m3u|.b4s|.pls|.strm|.wpl|.asx|.ram|.url|.pxml");
*
*/
-#include "utils/StdString.h"
+#include <string>
class CFileItem;
class CURL;
class CPlayListFactory
{
public:
- static CPlayList* Create(const CStdString& filename);
+ static CPlayList* Create(const std::string& filename);
static CPlayList* Create(const CFileItem& item);
static bool IsPlaylist(const CURL& url);
- static bool IsPlaylist(const CStdString& filename);
+ static bool IsPlaylist(const std::string& filename);
static bool IsPlaylist(const CFileItem& item);
};
}
{}
-bool CPlayListM3U::Load(const CStdString& strFileName)
+bool CPlayListM3U::Load(const std::string& strFileName)
{
char szLine[4096];
- CStdString strLine;
- CStdString strInfo = "";
+ std::string strLine;
+ std::string strInfo;
long lDuration = 0;
Clear();
{
// Read the info and duration
iColon++;
- CStdString strLength = strLine.substr(iColon, iComma - iColon);
+ std::string strLength = strLine.substr(iColon, iComma - iColon);
lDuration = atoi(strLength.c_str());
iComma++;
strInfo = strLine.substr(iComma);
!StringUtils::StartsWith(strLine, M3U_ARTIST_MARKER) &&
!StringUtils::StartsWith(strLine, M3U_ALBUM_MARKER))
{
- CStdString strFileName = strLine;
+ std::string strFileName = strLine;
if (strFileName.size() > 0 && strFileName[0] == '#')
continue; // assume a comment or something else we don't support
// Skip self - do not load playlist recursively
- if (URIUtils::GetFileName(strFileName).Equals(m_strPlayListName))
+ // We compare case-less in case user has input incorrect case of the current playlist
+ if (StringUtils::EqualsNoCase(URIUtils::GetFileName(strFileName), m_strPlayListName))
continue;
if (strFileName.length() > 0)
return true;
}
-void CPlayListM3U::Save(const CStdString& strFileName) const
+void CPlayListM3U::Save(const std::string& strFileName) const
{
if (!m_vecItems.size())
return;
- CStdString strPlaylist = CUtil::MakeLegalPath(strFileName);
+ std::string strPlaylist = CUtil::MakeLegalPath(strFileName);
CFile file;
if (!file.OpenForWrite(strPlaylist,true))
{
CLog::Log(LOGERROR, "Could not save M3U playlist: [%s]", strPlaylist.c_str());
return;
}
- CStdString strLine = StringUtils::Format("%s\n",M3U_START_MARKER);
+ std::string strLine = StringUtils::Format("%s\n",M3U_START_MARKER);
file.Write(strLine.c_str(),strLine.size());
for (int i = 0; i < (int)m_vecItems.size(); ++i)
{
CFileItemPtr item = m_vecItems[i];
- CStdString strDescription=item->GetLabel();
+ std::string strDescription=item->GetLabel();
g_charsetConverter.utf8ToStringCharset(strDescription);
strLine = StringUtils::Format( "%s:%i,%s\n", M3U_INFO_MARKER, item->GetMusicInfoTag()->GetDuration() / 1000, strDescription.c_str() );
file.Write(strLine.c_str(),strLine.size());
- CStdString strFileName = ResolveURL(item);
+ std::string strFileName = ResolveURL(item);
g_charsetConverter.utf8ToStringCharset(strFileName);
strLine = StringUtils::Format("%s\n",strFileName.c_str());
file.Write(strLine.c_str(),strLine.size());
file.Close();
}
-CStdString CPlayListM3U::GetBestBandwidthStream(const CStdString &strFileName, size_t bandwidth)
+std::string CPlayListM3U::GetBestBandwidthStream(const std::string &strFileName, size_t bandwidth)
{
// we may be passed a playlist that does not contain playlists of different
// bitrates (eg: this playlist is really the HLS video). So, default the
// return to the filename so it can be played
char szLine[4096];
- CStdString strLine;
+ std::string strLine;
size_t maxBandwidth = 0;
// open the file, and if it fails, return
CURL basePlaylistUrl(URIUtils::GetParentPath(strFileName));
basePlaylistUrl.SetOptions("");
basePlaylistUrl.SetProtocolOptions("");
- CStdString basePart = basePlaylistUrl.Get();
+ std::string basePart = basePlaylistUrl.Get();
// convert bandwidth specified in kbps to bps used by the m3u8
bandwidth *= 1000;
else if (StringUtils::StartsWith(strLine, M3U_STREAM_MARKER))
{
// parse the line so we can pull out the bandwidth
- std::map< CStdString, CStdString > params = ParseStreamLine(strLine);
- std::map< CStdString, CStdString >::iterator it = params.find(M3U_BANDWIDTH_MARKER);
+ std::map< std::string, std::string > params = ParseStreamLine(strLine);
+ std::map< std::string, std::string >::iterator it = params.find(M3U_BANDWIDTH_MARKER);
if (it != params.end())
{
return subStreamUrl.Get();
}
-std::map< CStdString, CStdString > CPlayListM3U::ParseStreamLine(const CStdString &streamLine)
+std::map< std::string, std::string > CPlayListM3U::ParseStreamLine(const std::string &streamLine)
{
- std::map< CStdString, CStdString > params;
+ std::map< std::string, std::string > params;
// ensure the line has something beyond the stream marker and ':'
- if (strlen(streamLine) < strlen(M3U_STREAM_MARKER) + 2)
+ if (streamLine.size() < strlen(M3U_STREAM_MARKER) + 2)
return params;
// get the actual params following the :
- CStdString strParams(streamLine.substr(strlen(M3U_STREAM_MARKER) + 1));
+ std::string strParams(streamLine.substr(strlen(M3U_STREAM_MARKER) + 1));
// separate the parameters
std::vector<std::string> vecParams = StringUtils::Split(strParams, ",");
public:
CPlayListM3U(void);
virtual ~CPlayListM3U(void);
- virtual bool Load(const CStdString& strFileName);
- virtual void Save(const CStdString& strFileName) const;
+ virtual bool Load(const std::string& strFileName);
+ virtual void Save(const std::string& strFileName) const;
- static CStdString GetBestBandwidthStream(const CStdString &strFileName, size_t bandwidth);
+ static std::string GetBestBandwidthStream(const std::string &strFileName, size_t bandwidth);
protected:
- static std::map< CStdString, CStdString > ParseStreamLine(const CStdString &streamLine);
+ static std::map<std::string,std::string> ParseStreamLine(const std::string &streamLine);
};
}
using namespace XFILE;
using namespace PLAYLIST;
-#define START_PLAYLIST_MARKER "[playlist]"
+#define START_PLAYLIST_MARKER "[playlist]" // may be case-insentive (equivalent to .ini file on win32)
#define PLAYLIST_NAME "PlaylistName"
/*----------------------------------------------------------------------
CPlayListPLS::~CPlayListPLS(void)
{}
-bool CPlayListPLS::Load(const CStdString &strFile)
+bool CPlayListPLS::Load(const std::string &strFile)
{
//read it from the file
- CStdString strFileName(strFile);
+ std::string strFileName(strFile);
m_strPlayListName = URIUtils::GetFileName(strFileName);
Clear();
}
char szLine[4096];
- CStdString strLine;
+ std::string strLine;
// run through looking for the [playlist] marker.
// if we find another http stream, then load it.
}
strLine = szLine;
StringUtils::Trim(strLine);
- if(strLine.Equals(START_PLAYLIST_MARKER))
+ if(StringUtils::EqualsNoCase(strLine, START_PLAYLIST_MARKER))
break;
// if there is something else before playlist marker, this isn't a pls file
size_t iPosEqual = strLine.find("=");
if (iPosEqual != std::string::npos)
{
- CStdString strLeft = strLine.substr(0, iPosEqual);
+ std::string strLeft = strLine.substr(0, iPosEqual);
iPosEqual++;
- CStdString strValue = strLine.substr(iPosEqual);
+ std::string strValue = strLine.substr(iPosEqual);
StringUtils::ToLower(strLeft);
StringUtils::TrimLeft(strLeft);
}
// Skip self - do not load playlist recursively
- if (URIUtils::GetFileName(strValue).Equals(URIUtils::GetFileName(strFileName)))
+ if (StringUtils::EqualsNoCase(URIUtils::GetFileName(strValue),
+ URIUtils::GetFileName(strFileName)))
continue;
if (m_vecItems[idx - 1]->GetLabel().empty())
return true;
}
-void CPlayListPLS::Save(const CStdString& strFileName) const
+void CPlayListPLS::Save(const std::string& strFileName) const
{
if (!m_vecItems.size()) return ;
- CStdString strPlaylist = CUtil::MakeLegalPath(strFileName);
+ std::string strPlaylist = CUtil::MakeLegalPath(strFileName);
CFile file;
if (!file.OpenForWrite(strPlaylist, true))
{
CLog::Log(LOGERROR, "Could not save PLS playlist: [%s]", strPlaylist.c_str());
return;
}
- CStdString write;
+ std::string write;
write += StringUtils::Format("%s\n", START_PLAYLIST_MARKER);
- CStdString strPlayListName=m_strPlayListName;
+ std::string strPlayListName=m_strPlayListName;
g_charsetConverter.utf8ToStringCharset(strPlayListName);
write += StringUtils::Format("PlaylistName=%s\n", strPlayListName.c_str() );
for (int i = 0; i < (int)m_vecItems.size(); ++i)
{
CFileItemPtr item = m_vecItems[i];
- CStdString strFileName=item->GetPath();
+ std::string strFileName=item->GetPath();
g_charsetConverter.utf8ToStringCharset(strFileName);
- CStdString strDescription=item->GetLabel();
+ std::string strDescription=item->GetLabel();
g_charsetConverter.utf8ToStringCharset(strDescription);
write += StringUtils::Format("File%i=%s\n", i + 1, strFileName.c_str() );
write += StringUtils::Format("Title%i=%s\n", i + 1, strDescription.c_str() );
// lowercase every element
TiXmlNode *pNode = pRootElement;
TiXmlNode *pChild = NULL;
- CStdString value;
+ std::string value;
value = pNode->Value();
StringUtils::ToLower(value);
pNode->SetValue(value);
pChild = pNode;
pNode = pNode->Parent();
}
- CStdString roottitle = "";
+ std::string roottitle;
TiXmlElement *pElement = pRootElement->FirstChildElement();
while (pElement)
{
}
else if (value == "entry")
{
- CStdString title(roottitle);
+ std::string title(roottitle);
TiXmlElement *pRef = pElement->FirstChildElement("ref");
TiXmlElement *pTitle = pElement->FirstChildElement("title");
{
CLog::Log(LOGINFO, "Parsing RAM");
- CStdString strMMS;
+ std::string strMMS;
while( stream.peek() != '\n' && stream.peek() != '\r' )
strMMS += stream.get();
public:
CPlayListPLS(void);
virtual ~CPlayListPLS(void);
- virtual bool Load(const CStdString& strFileName);
- virtual void Save(const CStdString& strFileName) const;
+ virtual bool Load(const std::string& strFileName);
+ virtual void Save(const std::string& strFileName) const;
virtual bool Resize(std::vector<int>::size_type newSize);
};
CPlayListURL::~CPlayListURL(void)
{}
-bool CPlayListURL::Load(const CStdString& strFileName)
+bool CPlayListURL::Load(const std::string& strFileName)
{
char szLine[4096];
- CStdString strLine;
+ std::string strLine;
Clear();
public:
CPlayListURL(void);
virtual ~CPlayListURL(void);
- virtual bool Load(const CStdString& strFileName);
+ virtual bool Load(const std::string& strFileName);
};
}
if (!pMediaElement) return false;
while (pMediaElement)
{
- CStdString strFileName = XMLUtils::GetAttribute(pMediaElement, "src");
+ std::string strFileName = XMLUtils::GetAttribute(pMediaElement, "src");
if (!strFileName.empty())
{
- strFileName = URIUtils::SubstitutePath(strFileName);
+ std::string strFileName = URIUtils::SubstitutePath(strFileName);
CUtil::GetQualifiedFilename(m_strBasePath, strFileName);
- CStdString strDescription = URIUtils::GetFileName(strFileName);
+ std::string strDescription = URIUtils::GetFileName(strFileName);
CFileItemPtr newItem(new CFileItem(strDescription));
newItem->SetPath(strFileName);
Add(newItem);
return true;
}
-void CPlayListWPL::Save(const CStdString& strFileName) const
+void CPlayListWPL::Save(const std::string& strFileName) const
{
if (!m_vecItems.size()) return ;
- CStdString strPlaylist = CUtil::MakeLegalPath(strFileName);
+ std::string strPlaylist = CUtil::MakeLegalPath(strFileName);
CFile file;
if (!file.OpenForWrite(strPlaylist, true))
{
CLog::Log(LOGERROR, "Could not save WPL playlist: [%s]", strPlaylist.c_str());
return ;
}
- CStdString write;
+ std::string write;
write += StringUtils::Format("<?wpl version=%c1.0%c>\n", 34, 34);
write += StringUtils::Format("<smil>\n");
write += StringUtils::Format(" <head>\n");
CPlayListWPL(void);
virtual ~CPlayListWPL(void);
virtual bool LoadData(std::istream& stream);
- virtual void Save(const CStdString& strFileName) const;
+ virtual void Save(const std::string& strFileName) const;
};
}
{}
-static inline CStdString GetString( const TiXmlElement* pRootElement, const char *tagName )
+static inline std::string GetString( const TiXmlElement* pRootElement, const char *tagName )
{
- CStdString strValue;
+ std::string strValue;
if ( XMLUtils::GetString(pRootElement, tagName, strValue) )
return strValue;
return "";
}
-bool CPlayListXML::Load( const CStdString& strFileName )
+bool CPlayListXML::Load( const std::string& strFileName )
{
CXBMCTinyXML xmlDoc;
while ( pSet )
{
// Get parameters
- CStdString url = GetString( pSet, "url" );
- CStdString name = GetString( pSet, "name" );
- CStdString category = GetString( pSet, "category" );
- CStdString lang = GetString( pSet, "lang" );
- CStdString channel = GetString( pSet, "channel" );
- CStdString lockpass = GetString( pSet, "lockpassword" );
+ std::string url = GetString( pSet, "url" );
+ std::string name = GetString( pSet, "name" );
+ std::string category = GetString( pSet, "category" );
+ std::string lang = GetString( pSet, "lang" );
+ std::string channel = GetString( pSet, "channel" );
+ std::string lockpass = GetString( pSet, "lockpassword" );
// If url is empty, it doesn't make any sense
if ( !url.empty() )
if ( !lang.empty() )
name += " [" + lang + "]";
- CStdString info = name;
+ std::string info = name;
CFileItemPtr newItem( new CFileItem(info) );
newItem->SetPath(url);
}
-void CPlayListXML::Save(const CStdString& strFileName) const
+void CPlayListXML::Save(const std::string& strFileName) const
{
if (!m_vecItems.size()) return ;
- CStdString strPlaylist = CUtil::MakeLegalPath(strFileName);
+ std::string strPlaylist = CUtil::MakeLegalPath(strFileName);
CFile file;
if (!file.OpenForWrite(strPlaylist, true))
{
CLog::Log(LOGERROR, "Could not save WPL playlist: [%s]", strPlaylist.c_str());
return ;
}
- CStdString write;
+ std::string write;
write += StringUtils::Format("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n");
write += StringUtils::Format("<streams>\n");
for (int i = 0; i < (int)m_vecItems.size(); ++i)
public:
CPlayListXML(void);
virtual ~CPlayListXML(void);
- virtual bool Load(const CStdString& strFileName);
- virtual void Save(const CStdString& strFileName) const;
+ virtual bool Load(const std::string& strFileName);
+ virtual void Save(const std::string& strFileName) const;
};
}
return SortByNone;
}
-CStdString CSmartPlaylistRule::TranslateOrder(SortBy order)
+std::string CSmartPlaylistRule::TranslateOrder(SortBy order)
{
for (unsigned int i = 0; i < NUM_FIELDS; i++)
if (order == fields[i].sort) return fields[i].string;
return FieldUnknown;
}
-CStdString CSmartPlaylistRule::TranslateGroup(Field group)
+std::string CSmartPlaylistRule::TranslateGroup(Field group)
{
for (unsigned int i = 0; i < NUM_GROUPS; i++)
{
return "";
}
-CStdString CSmartPlaylistRule::GetLocalizedField(int field)
+std::string CSmartPlaylistRule::GetLocalizedField(int field)
{
for (unsigned int i = 0; i < NUM_FIELDS; i++)
if (field == fields[i].field) return g_localizeStrings.Get(fields[i].localizedString);
rating >= 0.0 && rating <= 10.0;
}
-vector<Field> CSmartPlaylistRule::GetFields(const CStdString &type)
+vector<Field> CSmartPlaylistRule::GetFields(const std::string &type)
{
vector<Field> fields;
bool isVideo = false;
return fields;
}
-std::vector<SortBy> CSmartPlaylistRule::GetOrders(const CStdString &type)
+std::vector<SortBy> CSmartPlaylistRule::GetOrders(const std::string &type)
{
vector<SortBy> orders;
orders.push_back(SortByNone);
return orders;
}
-std::vector<Field> CSmartPlaylistRule::GetGroups(const CStdString &type)
+std::vector<Field> CSmartPlaylistRule::GetGroups(const std::string &type)
{
vector<Field> groups;
groups.push_back(FieldUnknown);
return groups;
}
-CStdString CSmartPlaylistRule::GetLocalizedGroup(Field group)
+std::string CSmartPlaylistRule::GetLocalizedGroup(Field group)
{
for (unsigned int i = 0; i < NUM_GROUPS; i++)
{
return false;
}
-CStdString CSmartPlaylistRule::GetLocalizedRule() const
+std::string CSmartPlaylistRule::GetLocalizedRule() const
{
return StringUtils::Format("%s %s %s", GetLocalizedField(m_field).c_str(), GetLocalizedOperator(m_operator).c_str(), GetParameter().c_str());
}
-CStdString CSmartPlaylistRule::GetVideoResolutionQuery(const CStdString ¶meter) const
+std::string CSmartPlaylistRule::GetVideoResolutionQuery(const std::string ¶meter) const
{
- CStdString retVal(" IN (SELECT DISTINCT idFile FROM streamdetails WHERE iVideoWidth ");
+ std::string retVal(" IN (SELECT DISTINCT idFile FROM streamdetails WHERE iVideoWidth ");
int iRes = (int)strtol(parameter.c_str(), NULL, 10);
int min, max;
// special-casing
if (m_field == FieldTime)
{ // translate time to seconds
- CStdString seconds = StringUtils::Format("%i", StringUtils::TimeStringToSeconds(param));
+ std::string seconds = StringUtils::Format("%i", StringUtils::TimeStringToSeconds(param));
return db.PrepareSQL(operatorString.c_str(), seconds.c_str());
}
return CDatabaseQueryRule::FormatParameter(operatorString, param, db, strType);
query = negate + " (" + GetField(m_field, strType) + parameter + ")";
}
if (m_field == FieldVideoResolution)
- query = (CStdString)table + ".idFile" + (CStdString)negate + GetVideoResolutionQuery(param);
+ query = table + ".idFile" + negate + GetVideoResolutionQuery(param);
else if (m_field == FieldAudioChannels)
query = negate + " EXISTS (SELECT 1 FROM streamdetails WHERE streamdetails.idFile = " + table + ".idFile AND iAudioChannels " + parameter + ")";
else if (m_field == FieldVideoCodec)
return "";
}
-CStdString CSmartPlaylistRuleCombination::GetWhereClause(const CDatabase &db, const CStdString& strType, std::set<CStdString> &referencedPlaylists) const
+std::string CSmartPlaylistRuleCombination::GetWhereClause(const CDatabase &db, const std::string& strType, std::set<std::string> &referencedPlaylists) const
{
- CStdString rule, currentRule;
+ std::string rule, currentRule;
// translate the combinations into SQL
for (CDatabaseQueryRuleCombinations::const_iterator it = m_combinations.begin(); it != m_combinations.end(); ++it)
if (!rule.empty())
rule += m_type == CombinationAnd ? " AND " : " OR ";
rule += "(";
- CStdString currentRule;
+ std::string currentRule;
if ((*it)->m_field == FieldPlaylist)
{
- CStdString playlistFile = CSmartPlaylistDirectory::GetPlaylistByName((*it)->m_parameter.at(0), strType);
+ std::string playlistFile = CSmartPlaylistDirectory::GetPlaylistByName((*it)->m_parameter.at(0), strType);
if (!playlistFile.empty() && referencedPlaylists.find(playlistFile) == referencedPlaylists.end())
{
referencedPlaylists.insert(playlistFile);
CSmartPlaylist playlist;
if (playlist.Load(playlistFile))
{
- CStdString playlistQuery;
+ std::string playlistQuery;
// only playlists of same type will be part of the query
- if (playlist.GetType().Equals(strType) || (playlist.GetType().Equals("mixed") && (strType == "songs" || strType == "musicvideos")) || playlist.GetType().empty())
+ if (playlist.GetType() == strType || (playlist.GetType() == "mixed" && (strType == "songs" || strType == "musicvideos")) || playlist.GetType().empty())
{
playlist.SetType(strType);
playlistQuery = playlist.GetWhereClause(db, referencedPlaylists);
}
- if (playlist.GetType().Equals(strType))
+ if (playlist.GetType() == strType)
{
if ((*it)->m_operator == CDatabaseQueryRule::OPERATOR_DOES_NOT_EQUAL)
currentRule = StringUtils::Format("NOT (%s)", playlistQuery.c_str());
return rule;
}
-void CSmartPlaylistRuleCombination::GetVirtualFolders(const CStdString& strType, std::vector<CStdString> &virtualFolders) const
+void CSmartPlaylistRuleCombination::GetVirtualFolders(const std::string& strType, std::vector<std::string> &virtualFolders) const
{
for (CDatabaseQueryRuleCombinations::const_iterator it = m_combinations.begin(); it != m_combinations.end(); ++it)
{
if (((*it)->m_field != FieldVirtualFolder && (*it)->m_field != FieldPlaylist) || (*it)->m_operator != CDatabaseQueryRule::OPERATOR_EQUALS)
continue;
- CStdString playlistFile = CSmartPlaylistDirectory::GetPlaylistByName((*it)->m_parameter.at(0), strType);
+ std::string playlistFile = CSmartPlaylistDirectory::GetPlaylistByName((*it)->m_parameter.at(0), strType);
if (playlistFile.empty())
continue;
return root;
}
-const TiXmlNode* CSmartPlaylist::readNameFromXml(const CStdString &xml)
+const TiXmlNode* CSmartPlaylist::readNameFromXml(const std::string &xml)
{
if (xml.empty())
{
return load(readNameFromPath(url));
}
-bool CSmartPlaylist::Load(const CStdString &path)
+bool CSmartPlaylist::Load(const std::string &path)
{
const CURL pathToUrl(path);
return load(readNameFromPath(pathToUrl));
return true;
}
-bool CSmartPlaylist::LoadFromXml(const CStdString &xml)
+bool CSmartPlaylist::LoadFromXml(const std::string &xml)
{
return load(readNameFromXml(xml));
}
-bool CSmartPlaylist::LoadFromXML(const TiXmlNode *root, const CStdString &encoding)
+bool CSmartPlaylist::LoadFromXML(const TiXmlNode *root, const std::string &encoding)
{
if (!root)
return false;
- CStdString tmp;
+ std::string tmp;
if (XMLUtils::GetString(root, "match", tmp))
m_ruleCombination.SetType(StringUtils::EqualsNoCase(tmp, "all") ? CSmartPlaylistRuleCombination::CombinationAnd : CSmartPlaylistRuleCombination::CombinationOr);
return true;
}
-bool CSmartPlaylist::LoadFromJson(const CStdString &json)
+bool CSmartPlaylist::LoadFromJson(const std::string &json)
{
if (json.empty())
return false;
return Load(obj);
}
-bool CSmartPlaylist::Save(const CStdString &path) const
+bool CSmartPlaylist::Save(const std::string &path) const
{
CXBMCTinyXML doc;
TiXmlDeclaration decl("1.0", "UTF-8", "yes");
return true;
}
-bool CSmartPlaylist::SaveAsJson(CStdString &json, bool full /* = true */) const
+bool CSmartPlaylist::SaveAsJson(std::string &json, bool full /* = true */) const
{
CVariant xsp(CVariant::VariantTypeObject);
if (!Save(xsp, full))
m_groupMixed = false;
}
-void CSmartPlaylist::SetName(const CStdString &name)
+void CSmartPlaylist::SetName(const std::string &name)
{
m_playlistName = name;
}
-void CSmartPlaylist::SetType(const CStdString &type)
+void CSmartPlaylist::SetType(const std::string &type)
{
m_playlistType = type;
}
return IsMusicType(m_playlistType);
}
-bool CSmartPlaylist::IsVideoType(const CStdString &type)
+bool CSmartPlaylist::IsVideoType(const std::string &type)
{
return type == "movies" || type == "tvshows" || type == "episodes" ||
type == "musicvideos" || type == "mixed";
}
-bool CSmartPlaylist::IsMusicType(const CStdString &type)
+bool CSmartPlaylist::IsMusicType(const std::string &type)
{
return type == "artists" || type == "albums" ||
type == "songs" || type == "mixed";
}
-CStdString CSmartPlaylist::GetWhereClause(const CDatabase &db, set<CStdString> &referencedPlaylists) const
+std::string CSmartPlaylist::GetWhereClause(const CDatabase &db, set<std::string> &referencedPlaylists) const
{
return m_ruleCombination.GetWhereClause(db, GetType(), referencedPlaylists);
}
-void CSmartPlaylist::GetVirtualFolders(std::vector<CStdString> &virtualFolders) const
+void CSmartPlaylist::GetVirtualFolders(std::vector<std::string> &virtualFolders) const
{
m_ruleCombination.GetVirtualFolders(GetType(), virtualFolders);
}
-CStdString CSmartPlaylist::GetSaveLocation() const
+std::string CSmartPlaylist::GetSaveLocation() const
{
if (m_playlistType == "mixed")
return "mixed";
return empty;
}
-bool CSmartPlaylist::CheckTypeCompatibility(const CStdString &typeLeft, const CStdString &typeRight)
+bool CSmartPlaylist::CheckTypeCompatibility(const std::string &typeLeft, const std::string &typeRight)
{
- if (typeLeft.Equals(typeRight))
+ if (typeLeft == typeRight)
return true;
- if (typeLeft.Equals("mixed") &&
- (typeRight.Equals("songs") || typeRight.Equals("musicvideos")))
+ if (typeLeft == "mixed" &&
+ (typeRight == "songs" || typeRight == "musicvideos"))
return true;
- if (typeRight.Equals("mixed") &&
- (typeLeft.Equals("songs") || typeLeft.Equals("musicvideos")))
+ if (typeRight == "mixed" &&
+ (typeLeft == "songs" || typeLeft == "musicvideos"))
return true;
return false;
*/
#include <set>
+#include <string>
#include <vector>
#include <boost/shared_ptr.hpp>
#include "dbwrappers/DatabaseQuery.h"
#include "utils/SortUtils.h"
-#include "utils/StdString.h"
#include "utils/XBMCTinyXML.h"
class CURL;
CSmartPlaylistRule();
virtual ~CSmartPlaylistRule() { }
- CStdString GetLocalizedRule() const;
+ std::string GetLocalizedRule() const;
static SortBy TranslateOrder(const char *order);
- static CStdString TranslateOrder(SortBy order);
+ static std::string TranslateOrder(SortBy order);
static Field TranslateGroup(const char *group);
- static CStdString TranslateGroup(Field group);
+ static std::string TranslateGroup(Field group);
- static CStdString GetLocalizedField(int field);
- static CStdString GetLocalizedGroup(Field group);
+ static std::string GetLocalizedField(int field);
+ static std::string GetLocalizedGroup(Field group);
static bool CanGroupMix(Field group);
- static std::vector<Field> GetFields(const CStdString &type);
- static std::vector<SortBy> GetOrders(const CStdString &type);
- static std::vector<Field> GetGroups(const CStdString &type);
+ static std::vector<Field> GetFields(const std::string &type);
+ static std::vector<SortBy> GetOrders(const std::string &type);
+ static std::vector<Field> GetGroups(const std::string &type);
virtual FIELD_TYPE GetFieldType(int field) const;
static bool IsFieldBrowseable(int field);
const std::string &strType) const;
private:
- CStdString GetVideoResolutionQuery(const CStdString ¶meter) const;
+ std::string GetVideoResolutionQuery(const std::string ¶meter) const;
};
class CSmartPlaylistRuleCombination : public CDatabaseQueryRuleCombination
CSmartPlaylistRuleCombination() { }
virtual ~CSmartPlaylistRuleCombination() { }
- CStdString GetWhereClause(const CDatabase &db, const CStdString& strType, std::set<CStdString> &referencedPlaylists) const;
- void GetVirtualFolders(const CStdString& strType, std::vector<CStdString> &virtualFolders) const;
+ std::string GetWhereClause(const CDatabase &db,
+ const std::string& strType,
+ std::set<std::string> &referencedPlaylists) const;
+ void GetVirtualFolders(const std::string& strType,
+ std::vector<std::string> &virtualFolders) const;
void AddRule(const CSmartPlaylistRule &rule);
};
virtual ~CSmartPlaylist() { }
bool Load(const CURL& url);
- bool Load(const CStdString &path);
+ bool Load(const std::string &path);
bool Load(const CVariant &obj);
- bool LoadFromXml(const CStdString &xml);
- bool LoadFromJson(const CStdString &json);
- bool Save(const CStdString &path) const;
+ bool LoadFromXml(const std::string &xml);
+ bool LoadFromJson(const std::string &json);
+ bool Save(const std::string &path) const;
bool Save(CVariant &obj, bool full = true) const;
- bool SaveAsJson(CStdString &json, bool full = true) const;
+ bool SaveAsJson(std::string &json, bool full = true) const;
bool OpenAndReadName(const CURL &url);
- bool LoadFromXML(const TiXmlNode *root, const CStdString &encoding = "UTF-8");
+ bool LoadFromXML(const TiXmlNode *root, const std::string &encoding = "UTF-8");
void Reset();
- void SetName(const CStdString &name);
- void SetType(const CStdString &type); // music, video, mixed
- const CStdString& GetName() const { return m_playlistName; };
- const CStdString& GetType() const { return m_playlistType; };
+ void SetName(const std::string &name);
+ void SetType(const std::string &type); // music, video, mixed
+ const std::string& GetName() const { return m_playlistName; };
+ const std::string& GetType() const { return m_playlistType; };
bool IsVideoType() const;
bool IsMusicType() const;
void SetOrderAttributes(SortAttribute attributes) { m_orderAttributes = attributes; }
SortAttribute GetOrderAttributes() const { return m_orderAttributes; }
- void SetGroup(const CStdString &group) { m_group = group; }
- const CStdString& GetGroup() const { return m_group; }
+ void SetGroup(const std::string &group) { m_group = group; }
+ const std::string& GetGroup() const { return m_group; }
void SetGroupMixed(bool mixed) { m_groupMixed = mixed; }
bool IsGroupMixed() const { return m_groupMixed; }
\param referencedPlaylists a set of playlists to know when we reach a cycle
\param needWhere whether we need to prepend the where clause with "WHERE "
*/
- CStdString GetWhereClause(const CDatabase &db, std::set<CStdString> &referencedPlaylists) const;
- void GetVirtualFolders(std::vector<CStdString> &virtualFolders) const;
+ std::string GetWhereClause(const CDatabase &db, std::set<std::string> &referencedPlaylists) const;
+ void GetVirtualFolders(std::vector<std::string> &virtualFolders) const;
- CStdString GetSaveLocation() const;
+ std::string GetSaveLocation() const;
static void GetAvailableFields(const std::string &type, std::vector<std::string> &fieldList);
- static bool IsVideoType(const CStdString &type);
- static bool IsMusicType(const CStdString &type);
- static bool CheckTypeCompatibility(const CStdString &typeLeft, const CStdString &typeRight);
+ static bool IsVideoType(const std::string &type);
+ static bool IsMusicType(const std::string &type);
+ static bool CheckTypeCompatibility(const std::string &typeLeft, const std::string &typeRight);
bool IsEmpty(bool ignoreSortAndLimit = true) const;
const TiXmlNode* readName(const TiXmlNode *root);
const TiXmlNode* readNameFromPath(const CURL &url);
- const TiXmlNode* readNameFromXml(const CStdString &xml);
+ const TiXmlNode* readNameFromXml(const std::string &xml);
bool load(const TiXmlNode *root);
CSmartPlaylistRuleCombination m_ruleCombination;
- CStdString m_playlistName;
- CStdString m_playlistType;
+ std::string m_playlistName;
+ std::string m_playlistType;
// order information
unsigned int m_limit;
SortBy m_orderField;
SortOrder m_orderDirection;
SortAttribute m_orderAttributes;
- CStdString m_group;
+ std::string m_group;
bool m_groupMixed;
CXBMCTinyXML m_xmlDoc;
// of the path (season and episodeid) appended later
(xsp.GetType() == "episodes" && itemType == "tvshows"))
{
- std::set<CStdString> playlists;
+ std::set<std::string> playlists;
filter.AppendWhere(xsp.GetWhereClause(*this, playlists));
if (xsp.GetLimit() > 0)
// check if the filter playlist matches the item type
if (xspFilter.GetType() == itemType)
{
- std::set<CStdString> playlists;
+ std::set<std::string> playlists;
filter.AppendWhere(xspFilter.GetWhereClause(*this, playlists));
}
// remove the filter if it doesn't match the item type