void CGUIWindowPVRBase::SetInvalid() { VECFILEITEMS items = m_vecItems->GetList(); for (VECFILEITEMS::iterator it = items.begin(); it != items.end(); ++it) (*it)->SetInvalid(); CGUIMediaWindow::SetInvalid(); }
bool CGUIWindowPVRBase::ActionInputChannelNumber(int input) { std::string strInput = StringUtils::Format("%i", input); if (CGUIDialogNumeric::ShowAndGetNumber(strInput, g_localizeStrings.Get(19103))) { int iChannelNumber = atoi(strInput.c_str()); if (iChannelNumber >= 0) { int itemIndex = 0; VECFILEITEMS items = m_vecItems->GetList(); for (VECFILEITEMS::iterator it = items.begin(); it != items.end(); ++it) { if(((*it)->HasPVRChannelInfoTag() && (*it)->GetPVRChannelInfoTag()->ChannelNumber() == iChannelNumber) || ((*it)->HasEPGInfoTag() && (*it)->GetEPGInfoTag()->HasPVRChannel() && (*it)->GetEPGInfoTag()->PVRChannelNumber() == iChannelNumber)) { // different handling for guide grid if ((GetID() == WINDOW_TV_GUIDE || GetID() == WINDOW_RADIO_GUIDE) && m_viewControl.GetCurrentControl() == GUIDE_VIEW_TIMELINE) { CGUIEPGGridContainer* epgGridContainer = (CGUIEPGGridContainer*) GetControl(m_viewControl.GetCurrentControl()); epgGridContainer->SetChannel((*(*it)->GetEPGInfoTag()->ChannelTag())); } else m_viewControl.SetSelectedItem(itemIndex); return true; } itemIndex++; } } } return false; }
void CGUIWindowPVRRecordings::OnPrepareFileItems(CFileItemList& items) { if (items.IsEmpty()) return; CFileItemList files; VECFILEITEMS vecItems = items.GetList(); for (VECFILEITEMS::const_iterator it = vecItems.begin(); it != vecItems.end(); ++it) { if (!(*it)->m_bIsFolder) files.Add((*it)); } if (!files.IsEmpty()) { if (m_database.Open()) { CGUIWindowVideoNav::LoadVideoInfo(files, m_database, false); m_database.Close(); } m_thumbLoader.Load(files); } CGUIWindowPVRBase::OnPrepareFileItems(items); }
void CGUIWindowPVRBase::SetInvalid() { if (m_refreshTimeout.IsTimePast()) { VECFILEITEMS items = m_vecItems->GetList(); for (VECFILEITEMS::iterator it = items.begin(); it != items.end(); ++it) (*it)->SetInvalid(); CGUIMediaWindow::SetInvalid(); m_refreshTimeout.Set(MAX_INVALIDATION_FREQUENCY); } }
void CGUIDialogPVRChannelsOSD::SetInvalid() { if (m_refreshTimeout.IsTimePast()) { VECFILEITEMS items = m_vecItems->GetList(); for (VECFILEITEMS::iterator it = items.begin(); it != items.end(); ++it) (*it)->SetInvalid(); CGUIDialog::SetInvalid(); m_refreshTimeout.Set(MAX_INVALIDATION_FREQUENCY); } }
bool CPVRRecordings::DeleteDirectory(const CFileItem& directory) { CFileItemList items; XFILE::CDirectory::GetDirectory(directory.GetPath(), items); bool allDeleted = true; VECFILEITEMS itemList = items.GetList(); CFileItem item; for (VECFILEITEMS::const_iterator it = itemList.begin(); it != itemList.end(); ++it) allDeleted &= Delete(*(it->get())); return allDeleted; }
// this functions can check for: // * presence of directory on remove share (smb://server/share/dir) // * presence of remote share on server (smb://server/share) // * presence of smb server in network (smb://server) bool CWin32SMBDirectory::RealExists(const CURL& url, bool tryToConnect) { assert(url.GetProtocol() == "smb"); if (url.GetHostName().empty()) return true; // 'root' of network is always exist // TODO: use real caseless string comparison everywhere in this function if (url.GetShareName().empty() || url.GetShareName() == url.GetFileName()) { if (!url.GetShareName().empty()) { std::wstring serverNameW; std::wstring shareNameW; SHARE_INFO_1* info = NULL; // try fast way if (g_charsetConverter.utf8ToW("\\\\" + url.GetHostName(), serverNameW, false, false, true) && g_charsetConverter.utf8ToW(url.GetShareName(), shareNameW, false, false, true) && NetShareGetInfo((LPWSTR)serverNameW.c_str(), (LPWSTR)shareNameW.c_str(), 1, (LPBYTE*)&info) == NERR_Success) { const bool ret = ((info->shi1_type & STYPE_MASK) == STYPE_DISKTREE); NetApiBufferFree(info); return ret; } // fallback to slow check } CFileItemList entries; CURL baseUrl(url); if (url.GetShareName().empty()) baseUrl.SetHostName(""); // scan network for servers else { baseUrl.Reset(); // hack to reset ShareName baseUrl.SetProtocol("smb"); baseUrl.SetHostName(url.GetHostName()); // scan server for shares } if (!GetNetworkResources(baseUrl, entries)) { if (tryToConnect && !url.GetShareName().empty()) { CURL authUrl(url); if (ConnectAndAuthenticate(authUrl)) return RealExists(authUrl, false); } return false; } const std::string& searchStr = (url.GetShareName().empty()) ? url.GetHostName() : url.GetShareName(); const VECFILEITEMS entrVec = entries.GetList(); for (VECFILEITEMS::const_iterator it = entrVec.begin(); it != entrVec.end(); ++it) { if ((*it)->GetLabel() == searchStr) return true; } return false; } // use standard win32 file API std::wstring nameW(prepareWin32SMBDirectoryName(url)); if (nameW.empty()) return false; DWORD fileAttrs = GetFileAttributesW(nameW.c_str()); if (fileAttrs != INVALID_FILE_ATTRIBUTES) return (fileAttrs & FILE_ATTRIBUTE_DIRECTORY) != 0; // is file or directory? if (tryToConnect) { CURL authUrl(url); if (ConnectAndAuthenticate(authUrl)) return RealExists(authUrl, false); } return false; }