bool CGUIWindowMusicBase::GetDirectory(const CStdString &strDirectory, CFileItemList &items) { CStdString directory = strDirectory; // check if the path contains a filter and if so load it and // remove it from the path to get proper GUI view states etc CSmartPlaylist filterXsp; CMusicDbUrl musicUrl; if (musicUrl.FromString(strDirectory)) { CVariant filter; if (musicUrl.GetOption("filter", filter)) { // load the filter and if it's type does not match the // path's item type reset it if (filterXsp.LoadFromJson(filter.asString()) && !filterXsp.GetType().Equals(musicUrl.GetType().c_str())) filterXsp.Reset(); // remove the "filter" option from the path musicUrl.AddOption("filter", ""); } directory = musicUrl.ToString(); } items.SetArt("thumb", ""); bool bResult = CGUIMediaWindow::GetDirectory(directory, items); if (bResult) CMusicThumbLoader::FillThumb(items); // (re-)apply the previously retrieved filter // because it was reset in CGUIMediaWindow::GetDirectory() if (!filterXsp.IsEmpty()) m_filter = filterXsp; // add in the "New Playlist" item if we're in the playlists folder if ((items.GetPath() == "special://musicplaylists/") && !items.Contains("newplaylist://")) { CFileItemPtr newPlaylist(new CFileItem(g_settings.GetUserDataItem("PartyMode.xsp"),false)); newPlaylist->SetLabel(g_localizeStrings.Get(16035)); newPlaylist->SetLabelPreformated(true); newPlaylist->m_bIsFolder = true; items.Add(newPlaylist); newPlaylist.reset(new CFileItem("newplaylist://", false)); newPlaylist->SetLabel(g_localizeStrings.Get(525)); newPlaylist->SetLabelPreformated(true); newPlaylist->SetSpecialSort(SortSpecialOnBottom); newPlaylist->SetCanQueue(false); items.Add(newPlaylist); newPlaylist.reset(new CFileItem("newsmartplaylist://music", false)); newPlaylist->SetLabel(g_localizeStrings.Get(21437)); newPlaylist->SetLabelPreformated(true); newPlaylist->SetSpecialSort(SortSpecialOnBottom); newPlaylist->SetCanQueue(false); items.Add(newPlaylist); } return bResult; }