This patch set addresses #10313, providing localizable names of the current container foldername via the Container.Foldername infolabel.
I've done this by utilizing the label of the CFileItemList, setting it either in the directory classes (addons, videodb, musicdb) or directly by looking up the source name (files nodes) or by using GetTitleForPath.
CGUIWindow *window = GetWindowWithCondition(contextWindow, WINDOW_CONDITION_IS_MEDIA_WINDOW);
if (window)
{
- strLabel = CURL(((CGUIMediaWindow*)window)->CurrentDirectory().m_strPath).GetWithoutUserDetails();
if (info==CONTAINER_FOLDERNAME)
- {
- URIUtils::RemoveSlashAtEnd(strLabel);
- strLabel=URIUtils::GetFileName(strLabel);
- }
+ strLabel = ((CGUIMediaWindow*)window)->CurrentDirectory().GetLabel();
+ else
+ strLabel = CURL(((CGUIMediaWindow*)window)->CurrentDirectory().m_strPath).GetWithoutUserDetails();
}
break;
}
else if (url.GetProtocol() == "sap" && strFilename.IsEmpty())
strFilename = "SAP Streams";
+ // Root file views
+ else if (url.GetProtocol() == "sources")
+ strFilename = g_localizeStrings.Get(744);
+
// Music Playlists
else if (path.Left(24).Equals("special://musicplaylists"))
- strFilename = g_localizeStrings.Get(20011);
+ strFilename = g_localizeStrings.Get(136);
// Video Playlists
else if (path.Left(24).Equals("special://videoplaylists"))
- strFilename = g_localizeStrings.Get(20012);
+ strFilename = g_localizeStrings.Get(136);
+
+ else if ((url.GetProtocol() == "rar" || url.GetProtocol() == "zip") && strFilename.IsEmpty())
+ strFilename = URIUtils::GetFileName(url.GetHostName());
// now remove the extension if needed
if (!g_guiSettings.GetBool("filelists.showextensions") && !bIsFolder)
{
CAddonMgr::Get().GetAllAddons(addons, true);
items.SetProperty("reponame",g_localizeStrings.Get(24062));
+ items.SetLabel(g_localizeStrings.Get(24062));
}
else if (path.GetHostName().Equals("disabled"))
{ // grab all disabled addons, including disabled repositories
reposAsFolders = false;
CAddonMgr::Get().GetAllAddons(addons, false, true);
items.SetProperty("reponame",g_localizeStrings.Get(24039));
+ items.SetLabel(g_localizeStrings.Get(24039));
}
else if (path.GetHostName().Equals("outdated"))
{
reposAsFolders = false;
CAddonMgr::Get().GetAllOutdatedAddons(addons);
items.SetProperty("reponame",g_localizeStrings.Get(24043));
+ items.SetLabel(g_localizeStrings.Get(24043));
}
else if (path.GetHostName().Equals("repos"))
{
CAddonMgr::Get().GetAddons(ADDON_REPOSITORY,addons,true);
+ items.SetLabel(g_localizeStrings.Get(24033)); // Get Add-ons
}
else if (path.GetHostName().Equals("sources"))
{
database.Open();
database.GetAddons(addons);
items.SetProperty("reponame",g_localizeStrings.Get(24032));
+ items.SetLabel(g_localizeStrings.Get(24032));
}
else
{
database.Open();
database.GetRepository(addon->ID(),addons);
items.SetProperty("reponame",addon->Name());
+ items.SetLabel(addon->Name());
}
if (path.GetFileName().IsEmpty())
{
TYPE type = TranslateType(path.GetFileName());
items.SetProperty("addoncategory",TranslateType(type, true));
+ items.SetLabel(TranslateType(type, true));
items.m_strPath = strPath;
// FIXME: Categorisation of addons needs adding here
items.Add(GetMoreItem(content));
items.SetContent("addons");
+ items.SetLabel(g_localizeStrings.Get(24001)); // Add-ons
return items.Size() > 0;
}
item->SetIconImage(strImage);
}
}
+ items.SetLabel(pNode->GetLocalizedName());
return bResult;
}
return false;
// get genre
- CStdString strTemp;
if (params.GetGenreId() >= 0)
- {
- strTemp = "";
- musicdatabase.GetGenreById(params.GetGenreId(), strTemp);
- strLabel += strTemp;
- }
+ strLabel += musicdatabase.GetGenreById(params.GetGenreId());
// get artist
if (params.GetArtistId() >= 0)
{
- strTemp = "";
- musicdatabase.GetArtistById(params.GetArtistId(), strTemp);
if (!strLabel.IsEmpty())
strLabel += " / ";
- strLabel += strTemp;
+ strLabel += musicdatabase.GetArtistById(params.GetArtistId());
}
// get album
if (params.GetAlbumId() >= 0)
{
- strTemp = "";
- musicdatabase.GetAlbumById(params.GetAlbumId(), strTemp);
if (!strLabel.IsEmpty())
strLabel += " / ";
- strLabel += strTemp;
+ strLabel += musicdatabase.GetAlbumById(params.GetAlbumId());
}
if (strLabel.IsEmpty())
}
// Current node name
-const CStdString& CDirectoryNode::GetName()
+const CStdString& CDirectoryNode::GetName() const
{
return m_strName;
}
+int CDirectoryNode::GetID() const
+{
+ return atoi(m_strName.c_str());
+}
+
+CStdString CDirectoryNode::GetLocalizedName() const
+{
+ return "";
+}
+
// Current node type
-NODE_TYPE CDirectoryNode::GetType()
+NODE_TYPE CDirectoryNode::GetType() const
{
return m_Type;
}
// Return the parent directory node or NULL, if there is no
-CDirectoryNode* CDirectoryNode::GetParent()
+CDirectoryNode* CDirectoryNode::GetParent() const
{
return m_pParent;
}
// should be overloaded by a derived class
// to get the content of a node. Will be called
// by GetChilds() of a parent node
-bool CDirectoryNode::GetContent(CFileItemList& items)
+bool CDirectoryNode::GetContent(CFileItemList& items) const
{
return false;
}
// Creates a musicdb url
-CStdString CDirectoryNode::BuildPath()
+CStdString CDirectoryNode::BuildPath() const
{
CStdStringArray array;
// Collects Query params from this and all parent nodes. If a NODE_TYPE can
// be used as a database parameter, it will be added to the
// params object.
-void CDirectoryNode::CollectQueryParams(CQueryParams& params)
+void CDirectoryNode::CollectQueryParams(CQueryParams& params) const
{
params.SetQueryParam(m_Type, m_strName);
// Should be overloaded by a derived class.
// Returns the NODE_TYPE of the child nodes.
-NODE_TYPE CDirectoryNode::GetChildType()
+NODE_TYPE CDirectoryNode::GetChildType() const
{
return NODE_TYPE_NONE;
}
// Add an "* All ..." folder to the CFileItemList
// depending on the child node
-void CDirectoryNode::AddQueuingFolder(CFileItemList& items)
+void CDirectoryNode::AddQueuingFolder(CFileItemList& items) const
{
CFileItemPtr pItem;
}
}
-bool CDirectoryNode::CanCache()
+bool CDirectoryNode::CanCache() const
{
// JM: No need to cache these views, as caching is added in the mediawindow baseclass for anything that takes
// longer than a second
NODE_TYPE_SINGLES
} NODE_TYPE;
+ typedef struct {
+ NODE_TYPE node;
+ int id;
+ int label;
+ } Node;
+
class CDirectoryNode
{
public:
static void GetDatabaseInfo(const CStdString& strPath, CQueryParams& params);
virtual ~CDirectoryNode();
- NODE_TYPE GetType();
+ NODE_TYPE GetType() const;
bool GetChilds(CFileItemList& items);
- virtual NODE_TYPE GetChildType();
+ virtual NODE_TYPE GetChildType() const;
+ virtual CStdString GetLocalizedName() const;
- CDirectoryNode* GetParent();
- bool CanCache();
+ CDirectoryNode* GetParent() const;
+ bool CanCache() const;
protected:
CDirectoryNode(NODE_TYPE Type, const CStdString& strName, CDirectoryNode* pParent);
static CDirectoryNode* CreateNode(NODE_TYPE Type, const CStdString& strName, CDirectoryNode* pParent);
- void CollectQueryParams(CQueryParams& params);
+ void CollectQueryParams(CQueryParams& params) const;
- const CStdString& GetName();
+ const CStdString& GetName() const;
+ int GetID() const;
void RemoveParent();
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
- CStdString BuildPath();
+ CStdString BuildPath() const;
private:
- void AddQueuingFolder(CFileItemList& items);
+ void AddQueuingFolder(CFileItemList& items) const;
private:
NODE_TYPE m_Type;
}
-NODE_TYPE CDirectoryNodeAlbum::GetChildType()
+NODE_TYPE CDirectoryNodeAlbum::GetChildType() const
{
return NODE_TYPE_SONG;
}
-bool CDirectoryNodeAlbum::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeAlbum::GetLocalizedName() const
+{
+ if (GetID() == -1)
+ return g_localizeStrings.Get(15102); // All Albums
+ CMusicDatabase db;
+ if (db.Open())
+ return db.GetAlbumById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeAlbum::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeAlbum(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeAlbumCompilations::GetChildType()
+NODE_TYPE CDirectoryNodeAlbumCompilations::GetChildType() const
{
if (GetName()=="-1")
return NODE_TYPE_ALBUM_COMPILATIONS_SONGS;
return NODE_TYPE_SONG;
}
-bool CDirectoryNodeAlbumCompilations::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeAlbumCompilations::GetLocalizedName() const
+{
+ if (GetID() == -1)
+ return g_localizeStrings.Get(15102); // All Albums
+ CMusicDatabase db;
+ if (db.Open())
+ return db.GetAlbumById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeAlbumCompilations::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeAlbumCompilations(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-bool CDirectoryNodeAlbumCompilationsSongs::GetContent(CFileItemList& items)
+bool CDirectoryNodeAlbumCompilationsSongs::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeAlbumCompilationsSongs(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
}
-NODE_TYPE CDirectoryNodeAlbumRecentlyAdded::GetChildType()
+NODE_TYPE CDirectoryNodeAlbumRecentlyAdded::GetChildType() const
{
if (GetName()=="-1")
return NODE_TYPE_ALBUM_RECENTLY_ADDED_SONGS;
return NODE_TYPE_SONG;
}
-bool CDirectoryNodeAlbumRecentlyAdded::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeAlbumRecentlyAdded::GetLocalizedName() const
+{
+ if (GetID() == -1)
+ return g_localizeStrings.Get(15102); // All Albums
+ CMusicDatabase db;
+ if (db.Open())
+ return db.GetAlbumById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeAlbumRecentlyAdded::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeAlbumRecentlyAdded(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-bool CDirectoryNodeAlbumRecentlyAddedSong::GetContent(CFileItemList& items)
+bool CDirectoryNodeAlbumRecentlyAddedSong::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeAlbumRecentlyAddedSong(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
}
-NODE_TYPE CDirectoryNodeAlbumRecentlyPlayed::GetChildType()
+NODE_TYPE CDirectoryNodeAlbumRecentlyPlayed::GetChildType() const
{
if (GetName()=="-1")
return NODE_TYPE_ALBUM_RECENTLY_PLAYED_SONGS;
return NODE_TYPE_SONG;
}
-bool CDirectoryNodeAlbumRecentlyPlayed::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeAlbumRecentlyPlayed::GetLocalizedName() const
+{
+ if (GetID() == -1)
+ return g_localizeStrings.Get(15102); // All Albums
+ CMusicDatabase db;
+ if (db.Open())
+ return db.GetAlbumById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeAlbumRecentlyPlayed::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeAlbumRecentlyPlayed(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-bool CDirectoryNodeAlbumRecentlyPlayedSong::GetContent(CFileItemList& items)
+bool CDirectoryNodeAlbumRecentlyPlayedSong::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeAlbumRecentlyPlayedSong(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
}
-NODE_TYPE CDirectoryNodeAlbumTop100::GetChildType()
+NODE_TYPE CDirectoryNodeAlbumTop100::GetChildType() const
{
if (GetName()=="-1")
return NODE_TYPE_ALBUM_TOP100_SONGS;
return NODE_TYPE_SONG;
}
-bool CDirectoryNodeAlbumTop100::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeAlbumTop100::GetLocalizedName() const
+{
+ CMusicDatabase db;
+ if (db.Open())
+ return db.GetAlbumById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeAlbumTop100::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeAlbumTop100(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-bool CDirectoryNodeAlbumTop100Song::GetContent(CFileItemList& items)
+bool CDirectoryNodeAlbumTop100Song::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeAlbumTop100Song(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
}
-NODE_TYPE CDirectoryNodeArtist::GetChildType()
+NODE_TYPE CDirectoryNodeArtist::GetChildType() const
{
return NODE_TYPE_ALBUM;
}
-bool CDirectoryNodeArtist::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeArtist::GetLocalizedName() const
+{
+ if (GetID() == -1)
+ return g_localizeStrings.Get(15103); // All Artists
+ CMusicDatabase db;
+ if (db.Open())
+ return db.GetArtistById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeArtist::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeArtist(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeGenre::GetChildType()
+NODE_TYPE CDirectoryNodeGenre::GetChildType() const
{
return NODE_TYPE_ARTIST;
}
-bool CDirectoryNodeGenre::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeGenre::GetLocalizedName() const
+{
+ CMusicDatabase db;
+ if (db.Open())
+ return db.GetGenreById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeGenre::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeGenre(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
#include "music/MusicDatabase.h"
#include "guilib/LocalizeStrings.h"
+namespace XFILE
+{
+ namespace MUSICDATABASEDIRECTORY
+ {
+ Node OverviewChildren[] = {
+ { NODE_TYPE_GENRE, 1, 135 },
+ { NODE_TYPE_ARTIST, 2, 133 },
+ { NODE_TYPE_ALBUM, 3, 132 },
+ { NODE_TYPE_SINGLES, 10, 1050 },
+ { NODE_TYPE_SONG, 4, 134 },
+ { NODE_TYPE_YEAR, 9, 652 },
+ { NODE_TYPE_TOP100, 5, 271 },
+ { NODE_TYPE_ALBUM_RECENTLY_ADDED, 6, 359 },
+ { NODE_TYPE_ALBUM_RECENTLY_PLAYED, 7, 517 },
+ { NODE_TYPE_ALBUM_COMPILATIONS, 8, 521 },
+ };
+ };
+};
+
using namespace std;
using namespace XFILE::MUSICDATABASEDIRECTORY;
}
-NODE_TYPE CDirectoryNodeOverview::GetChildType()
+NODE_TYPE CDirectoryNodeOverview::GetChildType() const
{
- if (GetName()=="1")
- return NODE_TYPE_GENRE;
- else if (GetName()=="2")
- return NODE_TYPE_ARTIST;
- else if (GetName()=="3")
- return NODE_TYPE_ALBUM;
- else if (GetName()=="4")
- return NODE_TYPE_SONG;
- else if (GetName()=="5")
- return NODE_TYPE_TOP100;
- else if (GetName()=="6")
- return NODE_TYPE_ALBUM_RECENTLY_ADDED;
- else if (GetName()=="7")
- return NODE_TYPE_ALBUM_RECENTLY_PLAYED;
- else if (GetName()=="8")
- return NODE_TYPE_ALBUM_COMPILATIONS;
- else if (GetName()=="9")
- return NODE_TYPE_YEAR;
- else if (GetName()=="10")
- return NODE_TYPE_SINGLES;
+ for (unsigned int i = 0; i < sizeof(OverviewChildren) / sizeof(Node); ++i)
+ if (GetID() == OverviewChildren[i].id)
+ return OverviewChildren[i].node;
return NODE_TYPE_NONE;
}
-bool CDirectoryNodeOverview::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeOverview::GetLocalizedName() const
+{
+ for (unsigned int i = 0; i < sizeof(OverviewChildren) / sizeof(Node); ++i)
+ if (GetID() == OverviewChildren[i].id)
+ return g_localizeStrings.Get(OverviewChildren[i].label);
+ return "";
+}
+
+bool CDirectoryNodeOverview::GetContent(CFileItemList& items) const
{
- vector< pair<int, int> > rootItems;
CMusicDatabase musicDatabase;
bool showSingles = false;
if (musicDatabase.Open())
showSingles = true;
}
- rootItems.push_back(make_pair(1, 135));
- rootItems.push_back(make_pair(2, 133));
- rootItems.push_back(make_pair(3, 132));
- if (showSingles)
- rootItems.push_back(make_pair(10, 1050));
- rootItems.push_back(make_pair(4, 134));
- rootItems.push_back(make_pair(9, 652));
- rootItems.push_back(make_pair(5, 271));
- rootItems.push_back(make_pair(6, 359));
- rootItems.push_back(make_pair(7, 517));
- if (musicDatabase.GetVariousArtistsAlbumsCount() > 0)
- rootItems.push_back(make_pair(8, 521));
-
- for (unsigned int i = 0; i < rootItems.size(); ++i)
+ for (unsigned int i = 0; i < sizeof(OverviewChildren) / sizeof(Node); ++i)
{
- CFileItemPtr pItem(new CFileItem(g_localizeStrings.Get(rootItems[i].second)));
+ if (i == 3 && !showSingles) // singles
+ continue;
+ if (i == 9 && musicDatabase.GetVariousArtistsAlbumsCount() == 0) // compilations
+ continue;
+
+ CFileItemPtr pItem(new CFileItem(g_localizeStrings.Get(OverviewChildren[i].label)));
CStdString strDir;
- strDir.Format("%i/", rootItems[i].first);
+ strDir.Format("%ld/", OverviewChildren[i].id);
pItem->m_strPath = BuildPath() + strDir;
pItem->m_bIsFolder = true;
pItem->SetCanQueue(false);
public:
CDirectoryNodeOverview(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeRoot::GetChildType()
+NODE_TYPE CDirectoryNodeRoot::GetChildType() const
{
return NODE_TYPE_OVERVIEW;
}
public:
CDirectoryNodeRoot(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
+ virtual NODE_TYPE GetChildType() const;
};
}
}
}
-bool CDirectoryNodeSingles::GetContent(CFileItemList& items)
+bool CDirectoryNodeSingles::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeSingles(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
}
-bool CDirectoryNodeSong::GetContent(CFileItemList& items)
+bool CDirectoryNodeSong::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeSong(const CStdString& strEntryName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
}
-bool CDirectoryNodeSongTop100::GetContent(CFileItemList& items)
+bool CDirectoryNodeSongTop100::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeSongTop100(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
using namespace std;
using namespace XFILE::MUSICDATABASEDIRECTORY;
+Node Top100Children[] = {
+ { NODE_TYPE_SONG_TOP100, 1, 10504 },
+ { NODE_TYPE_ALBUM_TOP100, 2, 10505 },
+ };
+
CDirectoryNodeTop100::CDirectoryNodeTop100(const CStdString& strName, CDirectoryNode* pParent)
: CDirectoryNode(NODE_TYPE_TOP100, strName, pParent)
{
}
-NODE_TYPE CDirectoryNodeTop100::GetChildType()
+NODE_TYPE CDirectoryNodeTop100::GetChildType() const
{
- if (GetName()=="1")
- return NODE_TYPE_SONG_TOP100;
- else if (GetName()=="2")
- return NODE_TYPE_ALBUM_TOP100;
+ for (unsigned int i = 0; i < sizeof(Top100Children) / sizeof(Node); ++i)
+ if (GetID() == Top100Children[i].id)
+ return Top100Children[i].node;
return NODE_TYPE_NONE;
}
-bool CDirectoryNodeTop100::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeTop100::GetLocalizedName() const
{
- vector<CStdString> vecRoot;
- vecRoot.push_back(g_localizeStrings.Get(10504)); // Top 100 Songs
- vecRoot.push_back(g_localizeStrings.Get(10505)); // Top 100 Albums
+ for (unsigned int i = 0; i < sizeof(Top100Children) / sizeof(Node); ++i)
+ if (GetID() == Top100Children[i].id)
+ return g_localizeStrings.Get(Top100Children[i].label);
+ return "";
+}
- for (int i = 0; i < (int)vecRoot.size(); ++i)
+bool CDirectoryNodeTop100::GetContent(CFileItemList& items) const
+{
+ for (unsigned int i = 0; i < sizeof(Top100Children) / sizeof(Node); ++i)
{
- CFileItemPtr pItem(new CFileItem(vecRoot[i]));
+ CFileItemPtr pItem(new CFileItem(g_localizeStrings.Get(Top100Children[i].label)));
CStdString strDir;
- strDir.Format("%i/", i+1);
+ strDir.Format("%ld/", Top100Children[i].id);
pItem->m_strPath += BuildPath() + strDir;
pItem->m_bIsFolder = true;
items.Add(pItem);
public:
CDirectoryNodeTop100(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeYear::GetChildType()
+NODE_TYPE CDirectoryNodeYear::GetChildType() const
{
return NODE_TYPE_YEAR_ALBUM;
}
-bool CDirectoryNodeYear::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeYear::GetLocalizedName() const
+{
+ return GetName();
+}
+
+bool CDirectoryNodeYear::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeYear(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeYearAlbum::GetChildType()
+NODE_TYPE CDirectoryNodeYearAlbum::GetChildType() const
{
if (GetName()=="-1")
return NODE_TYPE_YEAR_SONG;
return NODE_TYPE_SONG;
}
-bool CDirectoryNodeYearAlbum::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeYearAlbum::GetLocalizedName() const
+{
+ if (GetID() == -1)
+ return g_localizeStrings.Get(15102); // All Albums
+ CMusicDatabase db;
+ if (db.Open())
+ return db.GetAlbumById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeYearAlbum::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeYearAlbum(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-bool CDirectoryNodeYearSong::GetContent(CFileItemList& items)
+bool CDirectoryNodeYearSong::GetContent(CFileItemList& items) const
{
CMusicDatabase musicdatabase;
if (!musicdatabase.Open())
public:
CDirectoryNodeYearSong(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
#include "FileItem.h"
#include "utils/log.h"
#include "utils/TimeUtils.h"
+#include "guilib/LocalizeStrings.h"
using namespace XFILE;
db.Close();
CLog::Log(LOGDEBUG, "%s (%s) took %u ms",
__FUNCTION__, strPath.c_str(), CTimeUtils::GetTimeMS() - time);
+ items.SetLabel(g_localizeStrings.Get(137)); // Search
return true;
}
items.SetContent("musicvideos");
playlist.SetType(type);
}
+ items.SetLabel(playlist.GetName());
// go through and set the playlist order
for (int i = 0; i < items.Size(); i++)
{
item->SetIconImage(strImage);
}
}
+ items.SetLabel(pNode->GetLocalizedName());
return bResult;
}
return false;
// get genre
- CStdString strTemp;
if (params.GetGenreId() != -1)
- {
- videodatabase.GetGenreById(params.GetGenreId(), strTemp);
- strLabel += strTemp;
- }
+ strLabel += videodatabase.GetGenreById(params.GetGenreId());
// get country
if (params.GetCountryId() != -1)
- {
- videodatabase.GetCountryById(params.GetCountryId(), strTemp);
- strLabel += strTemp;
- }
+ strLabel += videodatabase.GetCountryById(params.GetCountryId());
// get set
if (params.GetSetId() != -1)
- {
- videodatabase.GetSetById(params.GetSetId(), strTemp);
- strLabel += strTemp;
- }
+ strLabel += videodatabase.GetSetById(params.GetSetId());
// get year
if (params.GetYear() != -1)
{
+ CStdString strTemp;
strTemp.Format("%i",params.GetYear());
if (!strLabel.IsEmpty())
strLabel += " / ";
}
// Current node name
-const CStdString& CDirectoryNode::GetName()
+const CStdString& CDirectoryNode::GetName() const
{
return m_strName;
}
+int CDirectoryNode::GetID() const
+{
+ return atoi(m_strName.c_str());
+}
+
+CStdString CDirectoryNode::GetLocalizedName() const
+{
+ return "";
+}
+
// Current node type
-NODE_TYPE CDirectoryNode::GetType()
+NODE_TYPE CDirectoryNode::GetType() const
{
return m_Type;
}
// Return the parent directory node or NULL, if there is no
-CDirectoryNode* CDirectoryNode::GetParent()
+CDirectoryNode* CDirectoryNode::GetParent() const
{
return m_pParent;
}
// should be overloaded by a derived class
// to get the content of a node. Will be called
// by GetChilds() of a parent node
-bool CDirectoryNode::GetContent(CFileItemList& items)
+bool CDirectoryNode::GetContent(CFileItemList& items) const
{
return false;
}
// Creates a videodb url
-CStdString CDirectoryNode::BuildPath()
+CStdString CDirectoryNode::BuildPath() const
{
CStdStringArray array;
// Collects Query params from this and all parent nodes. If a NODE_TYPE can
// be used as a database parameter, it will be added to the
// params object.
-void CDirectoryNode::CollectQueryParams(CQueryParams& params)
+void CDirectoryNode::CollectQueryParams(CQueryParams& params) const
{
params.SetQueryParam(m_Type, m_strName);
// Should be overloaded by a derived class.
// Returns the NODE_TYPE of the child nodes.
-NODE_TYPE CDirectoryNode::GetChildType()
+NODE_TYPE CDirectoryNode::GetChildType() const
{
return NODE_TYPE_NONE;
}
// Add an "* All ..." folder to the CFileItemList
// depending on the child node
-void CDirectoryNode::AddQueuingFolder(CFileItemList& items)
+void CDirectoryNode::AddQueuingFolder(CFileItemList& items) const
{
CFileItemPtr pItem;
}
}
-bool CDirectoryNode::CanCache()
+bool CDirectoryNode::CanCache() const
{
// Only cache the directorys in the root
//NODE_TYPE childnode=GetChildType();
NODE_TYPE_COUNTRY
} NODE_TYPE;
+ typedef struct {
+ NODE_TYPE node;
+ int id;
+ int label;
+ } Node;
+
class CDirectoryNode
{
public:
static void GetDatabaseInfo(const CStdString& strPath, CQueryParams& params);
virtual ~CDirectoryNode();
- NODE_TYPE GetType();
+ NODE_TYPE GetType() const;
bool GetChilds(CFileItemList& items);
- virtual NODE_TYPE GetChildType();
+ virtual NODE_TYPE GetChildType() const;
+ virtual CStdString GetLocalizedName() const;
- CDirectoryNode* GetParent();
+ CDirectoryNode* GetParent() const;
- bool CanCache();
+ bool CanCache() const;
protected:
CDirectoryNode(NODE_TYPE Type, const CStdString& strName, CDirectoryNode* pParent);
static CDirectoryNode* CreateNode(NODE_TYPE Type, const CStdString& strName, CDirectoryNode* pParent);
- void CollectQueryParams(CQueryParams& params);
+ void CollectQueryParams(CQueryParams& params) const;
- const CStdString& GetName();
+ const CStdString& GetName() const;
+ int GetID() const;
void RemoveParent();
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
- CStdString BuildPath();
+ CStdString BuildPath() const;
private:
- void AddQueuingFolder(CFileItemList& items);
+ void AddQueuingFolder(CFileItemList& items) const;
private:
NODE_TYPE m_Type;
}
-NODE_TYPE CDirectoryNodeActor::GetChildType()
+NODE_TYPE CDirectoryNodeActor::GetChildType() const
{
CQueryParams params;
CollectQueryParams(params);
return NODE_TYPE_TITLE_TVSHOWS;
}
-bool CDirectoryNodeActor::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeActor::GetLocalizedName() const
+{
+ CVideoDatabase db;
+ if (db.Open())
+ return db.GetPersonById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeActor::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeActor(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeCountry::GetChildType()
+NODE_TYPE CDirectoryNodeCountry::GetChildType() const
{
- CQueryParams params;
- CollectQueryParams(params);
return NODE_TYPE_TITLE_MOVIES;
}
-bool CDirectoryNodeCountry::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeCountry::GetLocalizedName() const
+{
+ CVideoDatabase db;
+ if (db.Open())
+ return db.GetCountryById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeCountry::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeCountry(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeDirector::GetChildType()
+NODE_TYPE CDirectoryNodeDirector::GetChildType() const
{
CQueryParams params;
CollectQueryParams(params);
return NODE_TYPE_TITLE_TVSHOWS;
}
-bool CDirectoryNodeDirector::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeDirector::GetLocalizedName() const
+{
+ CVideoDatabase db;
+ if (db.Open())
+ return db.GetPersonById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeDirector::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeDirector(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-bool CDirectoryNodeEpisodes::GetContent(CFileItemList& items)
+bool CDirectoryNodeEpisodes::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeEpisodes(const CStdString& strEntryName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
}
-NODE_TYPE CDirectoryNodeGenre::GetChildType()
+NODE_TYPE CDirectoryNodeGenre::GetChildType() const
{
CQueryParams params;
CollectQueryParams(params);
return NODE_TYPE_TITLE_TVSHOWS;
}
-bool CDirectoryNodeGenre::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeGenre::GetLocalizedName() const
+{
+ CVideoDatabase db;
+ if (db.Open())
+ return db.GetGenreById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeGenre::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeGenre(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
using namespace XFILE::VIDEODATABASEDIRECTORY;
using namespace std;
+Node MovieChildren[] = {
+ { NODE_TYPE_GENRE, 1, 135 },
+ { NODE_TYPE_TITLE_MOVIES, 2, 369 },
+ { NODE_TYPE_YEAR, 3, 562 },
+ { NODE_TYPE_ACTOR, 4, 344 },
+ { NODE_TYPE_DIRECTOR, 5, 20348 },
+ { NODE_TYPE_STUDIO, 6, 20388 },
+ { NODE_TYPE_SETS, 7, 20434 },
+ { NODE_TYPE_COUNTRY, 8, 20451 },
+ };
+
CDirectoryNodeMoviesOverview::CDirectoryNodeMoviesOverview(const CStdString& strName, CDirectoryNode* pParent)
: CDirectoryNode(NODE_TYPE_MOVIES_OVERVIEW, strName, pParent)
{
}
-NODE_TYPE CDirectoryNodeMoviesOverview::GetChildType()
+NODE_TYPE CDirectoryNodeMoviesOverview::GetChildType() const
{
- if (GetName()=="1")
- return NODE_TYPE_GENRE;
- else if (GetName()=="2")
- return NODE_TYPE_TITLE_MOVIES;
- else if (GetName()=="3")
- return NODE_TYPE_YEAR;
- else if (GetName()=="4")
- return NODE_TYPE_ACTOR;
- else if (GetName()=="5")
- return NODE_TYPE_DIRECTOR;
- else if (GetName()=="6")
- return NODE_TYPE_STUDIO;
- else if (GetName()=="7")
- return NODE_TYPE_SETS;
- else if (GetName()=="8")
- return NODE_TYPE_COUNTRY;
-
+ for (unsigned int i = 0; i < sizeof(MovieChildren) / sizeof(Node); ++i)
+ if (GetID() == MovieChildren[i].id)
+ return MovieChildren[i].node;
+
return NODE_TYPE_NONE;
}
-bool CDirectoryNodeMoviesOverview::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeMoviesOverview::GetLocalizedName() const
{
- vector<pair<const char*, int> > vecRoot;
- vecRoot.push_back(make_pair("1", 135)); // Genres
- vecRoot.push_back(make_pair("2", 369)); // Title
- vecRoot.push_back(make_pair("3", 562)); // Year
- vecRoot.push_back(make_pair("4", 344)); // Actors
- vecRoot.push_back(make_pair("5", 20348)); // Directors
- vecRoot.push_back(make_pair("6", 20388)); // Studios
- CVideoDatabase db;
- if (db.Open())
- {
- if (db.HasSets())
- vecRoot.push_back(make_pair("7", 20434)); // Sets
- db.Close();
- }
- vecRoot.push_back(make_pair("8", 20451)); // Countries
+ for (unsigned int i = 0; i < sizeof(MovieChildren) / sizeof(Node); ++i)
+ if (GetID() == MovieChildren[i].id)
+ return g_localizeStrings.Get(MovieChildren[i].label);
+ return "";
+}
- CStdString path = BuildPath();
- for (unsigned int i = 0; i < vecRoot.size(); ++i)
+bool CDirectoryNodeMoviesOverview::GetContent(CFileItemList& items) const
+{
+ for (unsigned int i = 0; i < sizeof(MovieChildren) / sizeof(Node); ++i)
{
- CFileItemPtr pItem(new CFileItem(path + vecRoot[i].first + "/", true));
- pItem->SetLabel(g_localizeStrings.Get(vecRoot[i].second));
+ if (i == 6)
+ {
+ CVideoDatabase db;
+ if (db.Open() && !db.HasSets())
+ continue;
+ }
+ CStdString path;
+ path.Format("%s%ld/", BuildPath().c_str(), MovieChildren[i].id);
+ CFileItemPtr pItem(new CFileItem(path, true));
+ pItem->SetLabel(g_localizeStrings.Get(MovieChildren[i].label));
pItem->SetCanQueue(false);
items.Add(pItem);
}
public:
CDirectoryNodeMoviesOverview(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeMusicVideoAlbum::GetChildType()
+NODE_TYPE CDirectoryNodeMusicVideoAlbum::GetChildType() const
{
return NODE_TYPE_TITLE_MUSICVIDEOS;
}
-bool CDirectoryNodeMusicVideoAlbum::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeMusicVideoAlbum::GetLocalizedName() const
+{
+ CVideoDatabase db;
+ if (db.Open())
+ return db.GetMusicVideoAlbumById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeMusicVideoAlbum::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeMusicVideoAlbum(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
using namespace XFILE::VIDEODATABASEDIRECTORY;
+Node MusicVideoChildren[] = {
+ { NODE_TYPE_GENRE, 1, 135 },
+ { NODE_TYPE_TITLE_MOVIES, 2, 369 },
+ { NODE_TYPE_YEAR, 3, 562 },
+ { NODE_TYPE_ACTOR, 4, 133 },
+ { NODE_TYPE_MUSICVIDEOS_ALBUM, 5, 132 },
+ { NODE_TYPE_DIRECTOR, 6, 20348 },
+ { NODE_TYPE_STUDIO, 7, 20388 },
+ };
+
CDirectoryNodeMusicVideosOverview::CDirectoryNodeMusicVideosOverview(const CStdString& strName, CDirectoryNode* pParent)
: CDirectoryNode(NODE_TYPE_MUSICVIDEOS_OVERVIEW, strName, pParent)
{
}
-NODE_TYPE CDirectoryNodeMusicVideosOverview::GetChildType()
+NODE_TYPE CDirectoryNodeMusicVideosOverview::GetChildType() const
{
- if (GetName()=="1")
- return NODE_TYPE_GENRE;
- else if (GetName()=="2")
- return NODE_TYPE_TITLE_MUSICVIDEOS;
- else if (GetName()=="3")
- return NODE_TYPE_YEAR;
- else if (GetName()=="4")
- return NODE_TYPE_ACTOR;
- else if (GetName()=="5")
- return NODE_TYPE_MUSICVIDEOS_ALBUM;
- else if (GetName()=="6")
- return NODE_TYPE_DIRECTOR;
- else if (GetName()=="7")
- return NODE_TYPE_STUDIO;
+ for (unsigned int i = 0; i < sizeof(MusicVideoChildren) / sizeof(Node); ++i)
+ if (GetID() == MusicVideoChildren[i].id)
+ return MusicVideoChildren[i].node;
return NODE_TYPE_NONE;
}
-bool CDirectoryNodeMusicVideosOverview::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeMusicVideosOverview::GetLocalizedName() const
{
- CStdStringArray vecRoot;
- vecRoot.push_back(g_localizeStrings.Get(135)); // Genres
- vecRoot.push_back(g_localizeStrings.Get(369)); // Title
- vecRoot.push_back(g_localizeStrings.Get(562)); // Year
- vecRoot.push_back(g_localizeStrings.Get(133)); // Artists
- vecRoot.push_back(g_localizeStrings.Get(132)); // Albums
- vecRoot.push_back(g_localizeStrings.Get(20348)); // Directors
- vecRoot.push_back(g_localizeStrings.Get(20388)); // Studios
+ for (unsigned int i = 0; i < sizeof(MusicVideoChildren) / sizeof(Node); ++i)
+ if (GetID() == MusicVideoChildren[i].id)
+ return g_localizeStrings.Get(MusicVideoChildren[i].label);
+ return "";
+}
- for (int i = 0; i < (int)vecRoot.size(); ++i)
+bool CDirectoryNodeMusicVideosOverview::GetContent(CFileItemList& items) const
+{
+ for (unsigned int i = 0; i < sizeof(MusicVideoChildren) / sizeof(Node); ++i)
{
- CFileItemPtr pItem(new CFileItem(vecRoot[i]));
+ CFileItemPtr pItem(new CFileItem(g_localizeStrings.Get(MusicVideoChildren[i].label)));
CStdString strDir;
- strDir.Format("%i/", i+1);
+ strDir.Format("%ld/", MusicVideoChildren[i].id);
pItem->m_strPath = BuildPath() + strDir;
pItem->m_bIsFolder = true;
pItem->SetCanQueue(false);
public:
CDirectoryNodeMusicVideosOverview(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
using namespace XFILE::VIDEODATABASEDIRECTORY;
using namespace std;
+
+Node OverviewChildren[] = {
+ { NODE_TYPE_MOVIES_OVERVIEW, 1, 342 },
+ { NODE_TYPE_TVSHOWS_OVERVIEW, 2, 20343 },
+ { NODE_TYPE_MUSICVIDEOS_OVERVIEW, 3, 20389 },
+ { NODE_TYPE_RECENTLY_ADDED_MOVIES, 4, 20386 },
+ { NODE_TYPE_RECENTLY_ADDED_EPISODES, 5, 20387 },
+ { NODE_TYPE_RECENTLY_ADDED_MUSICVIDEOS, 6, 20390 },
+ };
+
CDirectoryNodeOverview::CDirectoryNodeOverview(const CStdString& strName, CDirectoryNode* pParent)
: CDirectoryNode(NODE_TYPE_OVERVIEW, strName, pParent)
{
}
-NODE_TYPE CDirectoryNodeOverview::GetChildType()
+NODE_TYPE CDirectoryNodeOverview::GetChildType() const
{
- if (GetName()=="1")
- return NODE_TYPE_MOVIES_OVERVIEW;
- else if (GetName()=="2")
- return NODE_TYPE_TVSHOWS_OVERVIEW;
- else if (GetName() == "3")
- return NODE_TYPE_MUSICVIDEOS_OVERVIEW;
- else if (GetName() == "4")
- return NODE_TYPE_RECENTLY_ADDED_MOVIES;
- else if (GetName() == "5")
- return NODE_TYPE_RECENTLY_ADDED_EPISODES;
- else if (GetName() == "6")
- return NODE_TYPE_RECENTLY_ADDED_MUSICVIDEOS;
+ for (unsigned int i = 0; i < sizeof(OverviewChildren) / sizeof(Node); ++i)
+ if (GetID() == OverviewChildren[i].id)
+ return OverviewChildren[i].node;
return NODE_TYPE_NONE;
}
-bool CDirectoryNodeOverview::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeOverview::GetLocalizedName() const
+{
+ for (unsigned int i = 0; i < sizeof(OverviewChildren) / sizeof(Node); ++i)
+ if (GetID() == OverviewChildren[i].id)
+ return g_localizeStrings.Get(OverviewChildren[i].label);
+ return "";
+}
+
+bool CDirectoryNodeOverview::GetContent(CFileItemList& items) const
{
CVideoDatabase database;
database.Open();
public:
CDirectoryNodeOverview(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeRecentlyAddedEpisodes::GetChildType()
+NODE_TYPE CDirectoryNodeRecentlyAddedEpisodes::GetChildType() const
{
return NODE_TYPE_EPISODES;
}
-bool CDirectoryNodeRecentlyAddedEpisodes::GetContent(CFileItemList& items)
+bool CDirectoryNodeRecentlyAddedEpisodes::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeRecentlyAddedEpisodes(const CStdString& strEntryName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
- virtual NODE_TYPE GetChildType();
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual NODE_TYPE GetChildType() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeRecentlyAddedMovies::GetChildType()
+NODE_TYPE CDirectoryNodeRecentlyAddedMovies::GetChildType() const
{
return NODE_TYPE_TITLE_MOVIES;
}
-bool CDirectoryNodeRecentlyAddedMovies::GetContent(CFileItemList& items)
+bool CDirectoryNodeRecentlyAddedMovies::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeRecentlyAddedMovies(const CStdString& strEntryName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
- virtual NODE_TYPE GetChildType();
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual NODE_TYPE GetChildType() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeRecentlyAddedMusicVideos::GetChildType()
+NODE_TYPE CDirectoryNodeRecentlyAddedMusicVideos::GetChildType() const
{
return NODE_TYPE_TITLE_MUSICVIDEOS;
}
-bool CDirectoryNodeRecentlyAddedMusicVideos::GetContent(CFileItemList& items)
+bool CDirectoryNodeRecentlyAddedMusicVideos::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeRecentlyAddedMusicVideos(const CStdString& strEntryName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
- virtual NODE_TYPE GetChildType();
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual NODE_TYPE GetChildType() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeRoot::GetChildType()
+NODE_TYPE CDirectoryNodeRoot::GetChildType() const
{
return NODE_TYPE_OVERVIEW;
}
public:
CDirectoryNodeRoot(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
+ virtual NODE_TYPE GetChildType() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeSeasons::GetChildType()
+NODE_TYPE CDirectoryNodeSeasons::GetChildType() const
{
return NODE_TYPE_EPISODES;
}
-bool CDirectoryNodeSeasons::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeSeasons::GetLocalizedName() const
+{
+ switch (GetID())
+ {
+ case 0:
+ return g_localizeStrings.Get(20381); // Specials
+ case -1:
+ return g_localizeStrings.Get(20366); // All Seasons
+ default:
+ CStdString season;
+ season.Format(g_localizeStrings.Get(20358), GetID()); // Season <season>
+ return season;
+ }
+}
+
+bool CDirectoryNodeSeasons::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeSeasons(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeSets::GetChildType()
+NODE_TYPE CDirectoryNodeSets::GetChildType() const
{
- CQueryParams params;
- CollectQueryParams(params);
return NODE_TYPE_TITLE_MOVIES;
}
-bool CDirectoryNodeSets::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeSets::GetLocalizedName() const
+{
+ CVideoDatabase db;
+ if (db.Open())
+ return db.GetSetById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeSets::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeSets(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeStudio::GetChildType()
+NODE_TYPE CDirectoryNodeStudio::GetChildType() const
{
CQueryParams params;
CollectQueryParams(params);
return NODE_TYPE_TITLE_TVSHOWS;
}
-bool CDirectoryNodeStudio::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeStudio::GetLocalizedName() const
+{
+ CVideoDatabase db;
+ if (db.Open())
+ return db.GetStudioById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeStudio::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeStudio(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-bool CDirectoryNodeTitleMovies::GetContent(CFileItemList& items)
+bool CDirectoryNodeTitleMovies::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeTitleMovies(const CStdString& strEntryName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& items) const;
};
}
}
}
-bool CDirectoryNodeTitleMusicVideos::GetContent(CFileItemList& items)
+bool CDirectoryNodeTitleMusicVideos::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeTitleMusicVideos(const CStdString& strEntryName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
+ virtual bool GetContent(CFileItemList& item) const;
};
}
}
}
-NODE_TYPE CDirectoryNodeTitleTvShows::GetChildType()
+NODE_TYPE CDirectoryNodeTitleTvShows::GetChildType() const
{
return NODE_TYPE_SEASONS;
}
-bool CDirectoryNodeTitleTvShows::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeTitleTvShows::GetLocalizedName() const
+{
+ CVideoDatabase db;
+ if (db.Open())
+ return db.GetTvShowTitleById(GetID());
+ return "";
+}
+
+bool CDirectoryNodeTitleTvShows::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeTitleTvShows(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
using namespace XFILE::VIDEODATABASEDIRECTORY;
+Node TvShowChildren[] = {
+ { NODE_TYPE_GENRE, 1, 135 },
+ { NODE_TYPE_TITLE_TVSHOWS, 2, 369 },
+ { NODE_TYPE_YEAR, 3, 562 },
+ { NODE_TYPE_ACTOR, 4, 344 },
+ { NODE_TYPE_STUDIO, 5, 20388 },
+ };
+
CDirectoryNodeTvShowsOverview::CDirectoryNodeTvShowsOverview(const CStdString& strName, CDirectoryNode* pParent)
: CDirectoryNode(NODE_TYPE_TVSHOWS_OVERVIEW, strName, pParent)
{
}
-NODE_TYPE CDirectoryNodeTvShowsOverview::GetChildType()
+NODE_TYPE CDirectoryNodeTvShowsOverview::GetChildType() const
{
if (GetName()=="0")
return NODE_TYPE_EPISODES;
- else if (GetName()=="1")
- return NODE_TYPE_GENRE;
- else if (GetName()=="2")
- return NODE_TYPE_TITLE_TVSHOWS;
- else if (GetName()=="3")
- return NODE_TYPE_YEAR;
- else if (GetName()=="4")
- return NODE_TYPE_ACTOR;
- else if (GetName()=="5")
- return NODE_TYPE_STUDIO;
+
+ for (unsigned int i = 0; i < sizeof(TvShowChildren) / sizeof(Node); ++i)
+ if (GetID() == TvShowChildren[i].id)
+ return TvShowChildren[i].node;
return NODE_TYPE_NONE;
}
-bool CDirectoryNodeTvShowsOverview::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeTvShowsOverview::GetLocalizedName() const
{
- CStdStringArray vecRoot;
- vecRoot.push_back(g_localizeStrings.Get(135)); // Genres
- vecRoot.push_back(g_localizeStrings.Get(369)); // Title
- vecRoot.push_back(g_localizeStrings.Get(562)); // Year
- vecRoot.push_back(g_localizeStrings.Get(344)); // Actors
- vecRoot.push_back(g_localizeStrings.Get(20388));// Studios
+ for (unsigned int i = 0; i < sizeof(TvShowChildren) / sizeof(Node); ++i)
+ if (GetID() == TvShowChildren[i].id)
+ return g_localizeStrings.Get(TvShowChildren[i].label);
+ return "";
+}
- for (int i = 0; i < (int)vecRoot.size(); ++i)
+bool CDirectoryNodeTvShowsOverview::GetContent(CFileItemList& items) const
+{
+ for (unsigned int i = 0; i < sizeof(TvShowChildren) / sizeof(Node); ++i)
{
- CFileItemPtr pItem(new CFileItem(vecRoot[i]));
+ CFileItemPtr pItem(new CFileItem(g_localizeStrings.Get(TvShowChildren[i].label)));
CStdString strDir;
- strDir.Format("%i/", i+1);
+ strDir.Format("%ld/", TvShowChildren[i].id);
pItem->m_strPath = BuildPath() + strDir;
pItem->m_bIsFolder = true;
pItem->SetCanQueue(false);
public:
CDirectoryNodeTvShowsOverview(const CStdString& strName, CDirectoryNode* pParent);
protected:
- virtual NODE_TYPE GetChildType();
- virtual bool GetContent(CFileItemList& items);
+ virtual NODE_TYPE GetChildType() const;
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
}
-NODE_TYPE CDirectoryNodeYear::GetChildType()
+NODE_TYPE CDirectoryNodeYear::GetChildType() const
{
CQueryParams params;
CollectQueryParams(params);
return NODE_TYPE_TITLE_TVSHOWS;
}
-bool CDirectoryNodeYear::GetContent(CFileItemList& items)
+CStdString CDirectoryNodeYear::GetLocalizedName() const
+{
+ return GetName();
+}
+
+bool CDirectoryNodeYear::GetContent(CFileItemList& items) const
{
CVideoDatabase videodatabase;
if (!videodatabase.Open())
public:
CDirectoryNodeYear(const CStdString& strEntryName, CDirectoryNode* pParent);
protected:
- virtual bool GetContent(CFileItemList& items);
- virtual NODE_TYPE GetChildType();
+ virtual bool GetContent(CFileItemList& items) const;
+ virtual NODE_TYPE GetChildType() const;
+ virtual CStdString GetLocalizedName() const;
};
}
}
\note The parameter \e strPath can not be a share with directory. Eg. "iso9660://dir" will return \e false.
It must be "iso9660://".
*/
-bool CVirtualDirectory::IsSource(const CStdString& strPath) const
+bool CVirtualDirectory::IsSource(const CStdString& strPath, VECSOURCES *sources, CStdString *name) const
{
CStdString strPathCpy = strPath;
strPathCpy.TrimRight("/");
strPathCpy.Replace("/", "\\");
VECSOURCES shares;
- GetSources(shares);
+ if (sources)
+ shares = *sources;
+ else
+ GetSources(shares);
for (int i = 0; i < (int)shares.size(); ++i)
{
const CMediaSource& share = shares.at(i);
strShare.TrimRight("\\");
if(URIUtils::IsDOSPath(strShare))
strShare.Replace("/", "\\");
- if (strShare == strPathCpy) return true;
+ if (strShare == strPathCpy)
+ {
+ if (name)
+ *name = share.strName;
+ return true;
+ }
}
return false;
}
return m_vecSources.size();
}
- bool IsSource(const CStdString& strPath) const;
+ bool IsSource(const CStdString& strPath, VECSOURCES *sources = NULL, CStdString *name = NULL) const;
bool IsInSource(const CStdString& strPath) const;
inline const CMediaSource& operator [](const int index) const
bool bResult = GetAlbumsByWhere(strBaseDir, strWhere, "", items);
if (bResult && idArtist != -1)
{
- CStdString strArtist;
- GetArtistById(idArtist,strArtist);
+ CStdString strArtist = GetArtistById(idArtist);
CStdString strFanart = items.GetCachedThumb(strArtist,g_settings.GetMusicFanartFolder());
if (CFile::Exists(strFanart))
items.SetProperty("fanart_image",strFanart);
bool bResult = GetSongsByWhere(strBaseDir, strWhere, items);
if (bResult && idArtist != -1)
{
- CStdString strArtist;
- GetArtistById(idArtist,strArtist);
+ CStdString strArtist = GetArtistById(idArtist);
CStdString strFanart = items.GetCachedThumb(strArtist,g_settings.GetMusicFanartFolder());
if (CFile::Exists(strFanart))
items.SetProperty("fanart_image",strFanart);
return -1;
}
-bool CMusicDatabase::GetGenreById(int idGenre, CStdString& strGenre)
+CStdString CMusicDatabase::GetGenreById(int id)
{
- strGenre = "";
- try
- {
- if (NULL == m_pDB.get()) return false;
- if (NULL == m_pDS.get()) return false;
+ return GetSingleValue("genre", "strGenre", PrepareSQL("idGenre=%i", id));
+}
- CStdString strSQL=PrepareSQL("select strGenre from genre where genre.idGenre = %i", idGenre);
+CStdString CMusicDatabase::GetArtistById(int id)
+{
+ return GetSingleValue("artist", "strArtist", PrepareSQL("idArtist=%i", id));
+}
- // run query
- if (!m_pDS->query(strSQL.c_str())) return false;
- int iRowsFound = m_pDS->num_rows();
- if (iRowsFound != 1)
- {
- m_pDS->close();
- return false;
- }
- strGenre = m_pDS->fv("genre.strGenre").get_asString();
- return true;
- }
- catch (...)
- {
- CLog::Log(LOGERROR, "%s failed", __FUNCTION__);
- }
- return false;
+CStdString CMusicDatabase::GetAlbumById(int id)
+{
+ return GetSingleValue("album", "strAlbum", PrepareSQL("idAlbum=%i", id));
}
int CMusicDatabase::GetGenreByName(const CStdString& strGenre)
return -1;
}
-bool CMusicDatabase::GetArtistById(int idArtist, CStdString& strArtist)
-{
- strArtist = "";
- try
- {
- if (NULL == m_pDB.get()) return false;
- if (NULL == m_pDS.get()) return false;
-
- CStdString strSQL=PrepareSQL("select strArtist from artist where artist.idArtist = %i", idArtist);
-
- // run query
- if (!m_pDS->query(strSQL.c_str())) return false;
- int iRowsFound = m_pDS->num_rows();
- if (iRowsFound != 1)
- {
- m_pDS->close();
- return false;
- }
- strArtist = m_pDS->fv("artist.strArtist").get_asString();
- return true;
- }
- catch (...)
- {
- CLog::Log(LOGERROR, "%s failed", __FUNCTION__);
- }
- return false;
-}
-
-bool CMusicDatabase::GetAlbumById(int idAlbum, CStdString& strAlbum)
-{
- strAlbum = "";
- try
- {
- if (NULL == m_pDB.get()) return false;
- if (NULL == m_pDS.get()) return false;
-
- CStdString strSQL=PrepareSQL("select strAlbum from album where album.idAlbum = %ld", idAlbum);
-
- // run query
- if (!m_pDS->query(strSQL.c_str())) return false;
- int iRowsFound = m_pDS->num_rows();
- if (iRowsFound != 1)
- {
- m_pDS->close();
- return false;
- }
- strAlbum = m_pDS->fv("album.strAlbum").get_asString();
- return true;
- }
- catch (...)
- {
- CLog::Log(LOGERROR, "%s failed", __FUNCTION__);
- }
- return false;
-}
-
bool CMusicDatabase::GetRandomSong(CFileItem* item, int& idSong, const CStdString& strWhere)
{
try
bool GetAlbumThumb(int idAlbum, CStdString &thumb);
bool GetArtistPath(int idArtist, CStdString &path);
- bool GetGenreById(int idGenre, CStdString& strGenre);
- bool GetArtistById(int idArtist, CStdString& strArtist);
- bool GetAlbumById(int idAlbum, CStdString& strAlbum);
+ CStdString GetGenreById(int id);
+ CStdString GetArtistById(int id);
+ CStdString GetAlbumById(int id);
int GetArtistByName(const CStdString& strArtist);
int GetAlbumByName(const CStdString& strAlbum, const CStdString& strArtist="");
// check for .CUE files here.
items.FilterCueItems();
+ CStdString label;
+ if (items.GetLabel().IsEmpty() && m_rootDir.IsSource(items.m_strPath, g_settings.GetSourcesFromType("music"), &label))
+ items.SetLabel(label);
+
return true;
}
return false;
}
+bool CGUIWindowPictures::GetDirectory(const CStdString &strDirectory, CFileItemList& items)
+{
+ if (!CGUIMediaWindow::GetDirectory(strDirectory, items))
+ return false;
+
+ CStdString label;
+ if (items.GetLabel().IsEmpty() && m_rootDir.IsSource(items.m_strPath, g_settings.GetSourcesFromType("pictures"), &label))
+ items.SetLabel(label);
+
+ return true;
+}
+
bool CGUIWindowPictures::OnPlayMedia(int iItem)
{
if (m_vecItems->Get(iItem)->IsVideo())
virtual bool OnMessage(CGUIMessage& message);
protected:
+ virtual bool GetDirectory(const CStdString &strDirectory, CFileItemList& items);
virtual void OnInfo(int item);
virtual bool OnClick(int iItem);
virtual void UpdateButtons();
return GetMusicVideosByWhere(strBaseDir, where, items);
}
-bool CVideoDatabase::GetGenreById(int idGenre, CStdString& strGenre)
+CStdString CVideoDatabase::GetGenreById(int id)
{
- try
- {
- if (NULL == m_pDB.get()) return false;
- if (NULL == m_pDS.get()) return false;
+ return GetSingleValue("genre", "strGenre", PrepareSQL("idGenre=%i", id));
+}
- CStdString strSQL=PrepareSQL("select genre.strGenre from genre where genre.idGenre=%i", idGenre);
- m_pDS->query( strSQL.c_str() );
+CStdString CVideoDatabase::GetCountryById(int id)
+{
+ return GetSingleValue("country", "strCountry", PrepareSQL("idCountry=%i", id));
+}
- bool bResult = false;
- if (!m_pDS->eof())
- {
- strGenre = m_pDS->fv("genre.strGenre").get_asString();
- bResult = true;
- }
- m_pDS->close();
- return bResult;
- }
- catch (...)
- {
- CLog::Log(LOGERROR, "%s (%s) failed", __FUNCTION__, strGenre.c_str());
- }
- return false;
+CStdString CVideoDatabase::GetSetById(int id)
+{
+ return GetSingleValue("sets", "strSet", PrepareSQL("idSet=%i", id));
}
-bool CVideoDatabase::GetCountryById(int idCountry, CStdString& strCountry)
+CStdString CVideoDatabase::GetPersonById(int id)
{
- try
- {
- if (NULL == m_pDB.get()) return false;
- if (NULL == m_pDS.get()) return false;
+ return GetSingleValue("actors", "strActor", PrepareSQL("idActor=%i", id));
+}
- CStdString strSQL=PrepareSQL("select country.strCountry from country where country.idCountry=%i", idCountry);
- m_pDS->query( strSQL.c_str() );
+CStdString CVideoDatabase::GetStudioById(int id)
+{
+ return GetSingleValue("studio", "strStudio", PrepareSQL("idStudio=%i", id));
+}
- bool bResult = false;
- if (!m_pDS->eof())
- {
- strCountry = m_pDS->fv("country.strCountry").get_asString();
- bResult = true;
- }
- m_pDS->close();
- return bResult;
- }
- catch (...)
- {
- CLog::Log(LOGERROR, "%s (%s) failed", __FUNCTION__, strCountry.c_str());
- }
- return false;
+CStdString CVideoDatabase::GetTvShowTitleById(int id)
+{
+ return GetSingleValue("tvshow", PrepareSQL("c%02d", VIDEODB_ID_TV_TITLE), PrepareSQL("idShow=%i", id));
+}
+
+CStdString CVideoDatabase::GetMusicVideoAlbumById(int id)
+{
+ return GetSingleValue("musicvideo", PrepareSQL("c%02d", VIDEODB_ID_MUSICVIDEO_ALBUM), PrepareSQL("idMVideo=%i", id));
}
bool CVideoDatabase::HasSets() const
return false;
}
-bool CVideoDatabase::GetSetById(int idSet, CStdString& strSet)
-{
- try
- {
- if (NULL == m_pDB.get()) return false;
- if (NULL == m_pDS.get()) return false;
-
- CStdString strSQL=PrepareSQL("select sets.strSet from sets where sets.idSet=%i", idSet);
- m_pDS->query( strSQL.c_str() );
-
- bool bResult = false;
- if (!m_pDS->eof())
- {
- strSet = m_pDS->fv("sets.strSet").get_asString();
- bResult = true;
- }
- m_pDS->close();
- return bResult;
- }
- catch (...)
- {
- CLog::Log(LOGERROR, "%s (%s) failed", __FUNCTION__, strSet.c_str());
- }
- return false;
-}
-
int CVideoDatabase::GetTvShowForEpisode(int idEpisode)
{
try
bool HasMusicVideoInfo(const CStdString& strFilenameAndPath);
void GetFilePathById(int idMovie, CStdString &filePath, VIDEODB_CONTENT_TYPE iType);
- bool GetGenreById(int idGenre, CStdString& strGenre);
- bool GetCountryById(int idCountry, CStdString& strCountry);
- bool GetSetById(int idSet, CStdString& strSet);
+ CStdString GetGenreById(int id);
+ CStdString GetCountryById(int id);
+ CStdString GetSetById(int id);
+ CStdString GetPersonById(int id);
+ CStdString GetStudioById(int id);
+ CStdString GetTvShowTitleById(int id);
+ CStdString GetMusicVideoAlbumById(int id);
int GetTvShowForEpisode(int idEpisode);
void GetMovieInfo(const CStdString& strFilenameAndPath, CVideoInfoTag& details, int idMovie = -1);
database.GetMovieInfo("", detail, pItem->GetVideoInfoTag()->m_iDbId);
if (iType == VIDEODB_CONTENT_MOVIE_SETS)
{
- database.GetSetById(params.GetSetId(),detail.m_strTitle);
+ detail.m_strTitle = database.GetSetById(params.GetSetId());
iDbId = params.GetSetId();
}
if (iType == VIDEODB_CONTENT_EPISODES)
}
else
{ // load info from the database
+ CStdString label;
+ if (items.GetLabel().IsEmpty() && m_rootDir.IsSource(items.m_strPath, g_settings.GetSourcesFromType("video"), &label))
+ items.SetLabel(label);
LoadVideoInfo(items);
}
}
return false;
}
+ if (items.GetLabel().IsEmpty())
+ items.SetLabel(CUtil::GetTitleFromPath(items.m_strPath, true));
+
ClearFileItems();
m_vecItems->Copy(items);