// \brief Sorts Fileitems based on the sort method and sort oder provided by guiViewState void CGUIMediaWindow::SortItems(CFileItemList &items) { auto_ptr<CGUIViewState> guiState(CGUIViewState::GetViewState(GetID(), items)); if (guiState.get()) { items.Sort(guiState->GetSortMethod(), guiState->GetDisplaySortOrder()); // Should these items be saved to the hdd if (items.GetCacheToDisc()) items.Save(); } }
/*! \brief Overwrite to fill fileitems from a source \param strDirectory Path to read \param items Fill with items specified in \e strDirectory */ bool CGUIMediaWindow::GetDirectory(const CStdString &strDirectory, CFileItemList &items) { // cleanup items if (items.Size()) items.Clear(); CStdString strParentPath=m_history.GetParentPath(); CLog::Log(LOGDEBUG,"CGUIMediaWindow::GetDirectory (%s)", strDirectory.c_str()); CLog::Log(LOGDEBUG," ParentPath = [%s]", strParentPath.c_str()); if (m_guiState.get() && !m_guiState->HideParentDirItems()) { CFileItem *pItem = new CFileItem(".."); pItem->m_strPath = strParentPath; pItem->m_bIsFolder = true; pItem->m_bIsShareOrDrive = false; items.Add(pItem); } // see if we can load a previously cached folder CFileItemList cachedItems(strDirectory); if (!strDirectory.IsEmpty() && cachedItems.Load()) { items.AssignPointer(cachedItems, true); // true to keep any previous items (".." item) cachedItems.ClearKeepPointer(); } else { DWORD time = timeGetTime(); if (!m_rootDir.GetDirectory(strDirectory, items)) return false; // took over a second, and not normally cached, so cache it if (time + 1000 < timeGetTime() && !items.GetCacheToDisc()) items.Save(); // if these items should replace the current listing, then pop it off the top if (items.GetReplaceListing()) m_history.RemoveParentPath(); } return true; }