void CAutorun::ExecuteAutorun( bool bypassSettings, bool ignoreplaying ) { if ((!ignoreplaying && (g_application.IsPlayingAudio() || g_application.IsPlayingVideo() || g_windowManager.HasModalDialog())) || g_windowManager.GetActiveWindow() == WINDOW_LOGIN_SCREEN) return ; CCdInfo* pInfo = g_mediaManager.GetCdInfo(); if ( pInfo == NULL ) return ; g_application.WakeUpScreenSaverAndDPMS(); // turn off the screensaver if it's active if ( pInfo->IsAudio( 1 ) ) { if( !bypassSettings && !g_guiSettings.GetBool("autorun.cdda") ) return; if (!g_passwordManager.IsMasterLockUnlocked(false)) if (g_settings.m_vecProfiles[g_settings.m_iLastLoadedProfileIndex].musicLocked()) return ; RunCdda(); } else { RunMedia(bypassSettings); } }
std::string CMediaManager::GetDiskUniqueId(const std::string& devicePath) { std::string mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(devicePath); if (pInfo == NULL) return ""; if (mediaPath.empty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.empty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.empty()) mediaPath = devicePath; #ifdef TARGET_WINDOWS if (mediaPath.empty() || mediaPath == "iso9660://") { mediaPath = g_mediaManager.TranslateDevicePath(""); URIUtils::AddSlashAtEnd(mediaPath); } #endif // Try finding VIDEO_TS/VIDEO_TS.IFO - this indicates a DVD disc is inserted std::string pathVideoTS = URIUtils::AddFileToFolder(mediaPath, "VIDEO_TS"); if(!CFile::Exists(URIUtils::AddFileToFolder(pathVideoTS, "VIDEO_TS.IFO"))) return ""; // return empty // correct the filename if needed if (StringUtils::StartsWith(pathVideoTS, "dvd://") || StringUtils::StartsWith(pathVideoTS, "iso9660://")) pathVideoTS = g_mediaManager.TranslateDevicePath(""); CLog::Log(LOGDEBUG, "GetDiskUniqueId: Trying to retrieve ID for path %s", pathVideoTS.c_str()); CDVDInputStreamNavigator dvdNavigator(NULL); dvdNavigator.Open(pathVideoTS.c_str(), ""); std::string labelString; dvdNavigator.GetDVDTitleString(labelString); std::string serialString; dvdNavigator.GetDVDSerialString(serialString); std::string strID = StringUtils::Format("removable://%s_%s", labelString.c_str(), serialString.c_str()); CLog::Log(LOGDEBUG, "GetDiskUniqueId: Got ID %s for DVD disk", strID.c_str()); return strID; }
bool CCDDADirectory::GetDirectory(const CStdString& strPath, CFileItemList &items) { // Reads the tracks from an audio cd // This class can only provide .cdda files if (!IsAllowed(".cdda")) return true; if (!CDetectDVDMedia::IsDiscInDrive()) return false; // Get information for the inserted disc CCdInfo* pCdInfo = CDetectDVDMedia::GetCdInfo(); if (pCdInfo == NULL) return false; // Preload CDDB info CMusicDatabase musicdatabase; musicdatabase.LookupCDDBInfo(); // If the disc has no tracks, we are finished here. int nTracks = pCdInfo->GetTrackCount(); if (nTracks <= 0) return false; // Generate fileitems for (int i = 1;i <= nTracks;++i) { // Skip Datatracks for display, // but needed to query cddb if (!pCdInfo->IsAudio(i)) continue; // Format standard cdda item label CStdString strLabel; strLabel.Format("Track %02.2i", i); CFileItem* pItem = new CFileItem(strLabel); pItem->m_bIsFolder = false; pItem->m_strPath.Format("cdda://local/%02.2i.cdda", i); __stat64 s64; if (CFile::Stat(pItem->m_strPath, &s64) == 0) pItem->m_dwSize = s64.st_size; items.Add(pItem); } return true; }
bool CCDDADirectory::GetDirectory(const CStdString& strPath, CFileItemList &items) { // Reads the tracks from an audio cd if (!g_mediaManager.IsDiscInDrive(strPath)) return false; // Get information for the inserted disc CCdInfo* pCdInfo = g_mediaManager.GetCdInfo(strPath); if (pCdInfo == NULL) return false; // Preload CDDB info CMusicDatabase musicdatabase; musicdatabase.LookupCDDBInfo(); // If the disc has no tracks, we are finished here. int nTracks = pCdInfo->GetTrackCount(); if (nTracks <= 0) return false; // Generate fileitems for (int i = 1;i <= nTracks;++i) { // Skip Datatracks for display, // but needed to query cddb if (!pCdInfo->IsAudio(i)) continue; // Format standard cdda item label CStdString strLabel; strLabel.Format("Track %02.2i", i); CFileItemPtr pItem(new CFileItem(strLabel)); pItem->m_bIsFolder = false; CStdString path; path.Format("cdda://local/%02.2i.cdda", i); pItem->SetPath(path); struct __stat64 s64; if (CFile::Stat(pItem->GetPath(), &s64) == 0) pItem->m_dwSize = s64.st_size; items.Add(pItem); } return true; }
bool CAutorun::PlayDisc(const std::string& path, bool bypassSettings, bool startFromBeginning) { if ( !bypassSettings && CSettings::Get().GetInt("audiocds.autoaction") != AUTOCD_PLAY && !CSettings::Get().GetBool("dvds.autorun")) return false; int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size(); int nAddedToPlaylist = 0; std::string mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(path); if (pInfo == NULL) return false; if (mediaPath.empty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.empty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.empty()) mediaPath = path; #ifdef TARGET_WINDOWS if (mediaPath.empty() || mediaPath == "iso9660://") mediaPath = g_mediaManager.TranslateDevicePath(""); #endif const CURL pathToUrl(mediaPath); auto_ptr<IDirectory> pDir ( CDirectoryFactory::Create( pathToUrl )); bool bPlaying = RunDisc(pDir.get(), mediaPath, nAddedToPlaylist, true, bypassSettings, startFromBeginning); if ( !bPlaying && nAddedToPlaylist > 0 ) { CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 ); g_windowManager.SendMessage( msg ); g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC); // Start playing the items we inserted return g_playlistPlayer.Play(nSize); } return bPlaying; }
bool CAutorun::PlayDisc(const CStdString& path, bool bypassSettings, bool startFromBeginning) { if ( !bypassSettings && !g_guiSettings.GetBool("audiocds.autorun") && !g_guiSettings.GetBool("dvds.autorun")) return false; int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size(); int nAddedToPlaylist = 0; CStdString mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(path); if (pInfo == NULL) return false; if (mediaPath.IsEmpty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.IsEmpty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.IsEmpty()) mediaPath = path; #ifdef _WIN32 if (mediaPath.IsEmpty() || mediaPath.CompareNoCase("iso9660://") == 0) mediaPath = g_mediaManager.TranslateDevicePath(""); #endif auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( mediaPath )); bool bPlaying = RunDisc(pDir.get(), mediaPath, nAddedToPlaylist, true, bypassSettings, startFromBeginning); if ( !bPlaying && nAddedToPlaylist > 0 ) { CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 ); g_windowManager.SendMessage( msg ); g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC); // Start playing the items we inserted return g_playlistPlayer.Play(nSize); } return bPlaying; }
bool CAutorun::PlayDisc(const std::string& path, bool bypassSettings, bool startFromBeginning) { if ( !bypassSettings && CServiceBroker::GetSettings().GetInt(CSettings::SETTING_AUDIOCDS_AUTOACTION) != AUTOCD_PLAY && !CServiceBroker::GetSettings().GetBool(CSettings::SETTING_DVDS_AUTORUN)) return false; int nSize = CServiceBroker::GetPlaylistPlayer().GetPlaylist( PLAYLIST_MUSIC ).size(); int nAddedToPlaylist = 0; std::string mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(path); if (pInfo == NULL) return false; if (mediaPath.empty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.empty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.empty()) mediaPath = path; if (mediaPath.empty() || mediaPath == "iso9660://") mediaPath = g_mediaManager.GetDiscPath(); const CURL pathToUrl(mediaPath); std::unique_ptr<IDirectory> pDir ( CDirectoryFactory::Create( pathToUrl )); bool bPlaying = RunDisc(pDir.get(), mediaPath, nAddedToPlaylist, true, bypassSettings, startFromBeginning); if ( !bPlaying && nAddedToPlaylist > 0 ) { CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 ); g_windowManager.SendMessage( msg ); CServiceBroker::GetPlaylistPlayer().SetCurrentPlaylist(PLAYLIST_MUSIC); // Start playing the items we inserted return CServiceBroker::GetPlaylistPlayer().Play(nSize, ""); } return bPlaying; }
bool CMediaManager::IsAudio(const std::string& devicePath) { #ifdef HAS_DVD_DRIVE #ifdef TARGET_WINDOWS if(!m_bhasoptical) return false; CCdInfo* pCdInfo = GetCdInfo(devicePath); if(pCdInfo != NULL && pCdInfo->IsAudio(1)) return true; return false; #else //! @todo switch all ports to use auto sources MEDIA_DETECT::CCdInfo* pInfo = MEDIA_DETECT::CDetectDVDMedia::GetCdInfo(); if (pInfo != NULL && pInfo->IsAudio(1)) return true; #endif #endif return false; }
void CAutorun::ExecuteAutorun(const CStdString& path, bool bypassSettings, bool ignoreplaying, bool startFromBeginning ) { if ((!ignoreplaying && (g_application.m_pPlayer->IsPlayingAudio() || g_application.m_pPlayer->IsPlayingVideo() || g_windowManager.HasModalDialog())) || g_windowManager.GetActiveWindow() == WINDOW_LOGIN_SCREEN) return ; CCdInfo* pInfo = g_mediaManager.GetCdInfo(path); if ( pInfo == NULL ) return ; g_application.ResetScreenSaver(); g_application.WakeUpScreenSaverAndDPMS(); // turn off the screensaver if it's active #ifdef HAS_CDDA_RIPPER if (CSettings::Get().GetInt("audiocds.autoaction") == AUTOCD_RIP && pInfo->IsAudio(1) && !CProfilesManager::Get().GetCurrentProfile().musicLocked()) { CCDDARipper::GetInstance().RipCD(); } else #endif PlayDisc(path, bypassSettings, startFromBeginning); }
void CGUIWindowMusicBase::OnRipTrack(int iItem) { CCdInfo *pCdInfo = CDetectDVDMedia::GetCdInfo(); if (CDetectDVDMedia::IsDiscInDrive() && pCdInfo && pCdInfo->IsAudio(1)) { if (!g_application.CurrentFileItem().IsCDDA()) { #ifdef HAS_CDDA_RIPPER CCDDARipper ripper; ripper.RipTrack(m_vecItems->Get(iItem)); #endif } else { CGUIDialogOK* pDlgOK = (CGUIDialogOK*)m_gWindowManager.GetWindow(WINDOW_DIALOG_OK); pDlgOK->SetHeading(257); // Error pDlgOK->SetLine(0, g_localizeStrings.Get(20099)); // pDlgOK->SetLine(1, ""); // pDlgOK->SetLine(2, ""); pDlgOK->DoModal(); } } }
std::string CMediaManager::GetDiskUniqueId(const std::string& devicePath) { std::string mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(devicePath); if (pInfo == NULL) return ""; if (mediaPath.empty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.empty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.empty()) mediaPath = devicePath; #ifdef TARGET_WINDOWS if (mediaPath.empty() || mediaPath == "iso9660://") { mediaPath = g_mediaManager.TranslateDevicePath(devicePath); URIUtils::AddSlashAtEnd(mediaPath); } #endif DiscInfo info = GetDiscInfo(mediaPath); if (info.empty()) { CLog::Log(LOGDEBUG, "GetDiskUniqueId: Retrieving ID for path %s failed, ID is empty.", CURL::GetRedacted(mediaPath).c_str()); return ""; } std::string strID = StringUtils::Format("removable://%s_%s", info.name.c_str(), info.serial.c_str()); CLog::Log(LOGDEBUG, "GetDiskUniqueId: Got ID %s for %s with path %s", strID.c_str(), info.type.c_str(), CURL::GetRedacted(mediaPath).c_str()); return strID; }
void CAutorun::ExecuteAutorun( bool bypassSettings, bool ignoreplaying ) { if ( (!ignoreplaying && (g_application.IsPlayingAudio() || g_application.IsPlayingVideo() || m_gWindowManager.HasModalDialog()) || m_gWindowManager.GetActiveWindow() == WINDOW_LOGIN_SCREEN)) return ; CCdInfo* pInfo = CDetectDVDMedia::GetCdInfo(); if ( pInfo == NULL ) return ; g_application.ResetScreenSaverWindow(); // turn off the screensaver if it's active if ( pInfo->IsAudio( 1 ) ) { if( !bypassSettings && !g_guiSettings.GetBool("autorun.cdda") ) return; if (!g_passwordManager.IsMasterLockUnlocked(false)) if (g_settings.m_vecProfiles[g_settings.m_iLastLoadedProfileIndex].musicLocked()) return ; RunCdda(); } else if (pInfo->IsUDFX( 1 ) || pInfo->IsUDF(1) || (pInfo->IsISOUDF(1) && g_advancedSettings.m_detectAsUdf)) { RunXboxCd(bypassSettings); } else if (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1)) { RunISOMedia(bypassSettings); } else { RunXboxCd(bypassSettings); } }
void CGUIWindowMusicSongs::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (item) { // are we in the playlists location? bool inPlaylists = m_vecItems->GetPath().Equals(CUtil::MusicPlaylistsLocation()) || m_vecItems->GetPath().Equals("special://musicplaylists/"); if (m_vecItems->IsVirtualDirectoryRoot() || m_vecItems->GetPath() == "sources://music/") { // get the usual music shares, and anything for all media windows CGUIDialogContextMenu::GetContextButtons("music", item, buttons); #ifdef HAS_DVD_DRIVE // enable Rip CD an audio disc if (g_mediaManager.IsDiscInDrive() && item->IsCDDA()) { // those cds can also include Audio Tracks: CDExtra and MixedMode! CCdInfo *pCdInfo = g_mediaManager.GetCdInfo(); if (pCdInfo->IsAudio(1) || pCdInfo->IsCDExtra(1) || pCdInfo->IsMixedMode(1)) { if (CJobManager::GetInstance().IsProcessing("cdrip")) buttons.Add(CONTEXT_BUTTON_CANCEL_RIP_CD, 14100); else buttons.Add(CONTEXT_BUTTON_RIP_CD, 600); } } #endif CGUIMediaWindow::GetContextButtons(itemNumber, buttons); } else { CGUIWindowMusicBase::GetContextButtons(itemNumber, buttons); if (item->GetProperty("pluginreplacecontextitems").asBoolean()) return; if (!item->IsPlayList() && !item->IsPlugin() && !item->IsScript()) { if (item->IsAudio()) buttons.Add(CONTEXT_BUTTON_SONG_INFO, 658); // Song Info else if (!item->IsParentFolder() && !StringUtils::StartsWithNoCase(item->GetPath(), "new") && item->m_bIsFolder) { #if 0 if (m_musicdatabase.GetAlbumIdByPath(item->GetPath()) > -1) #endif buttons.Add(CONTEXT_BUTTON_INFO, 13351); // Album Info } } #ifdef HAS_DVD_DRIVE // enable Rip CD Audio or Track button if we have an audio disc if (g_mediaManager.IsDiscInDrive() && m_vecItems->IsCDDA()) { // those cds can also include Audio Tracks: CDExtra and MixedMode! CCdInfo *pCdInfo = g_mediaManager.GetCdInfo(); if (pCdInfo->IsAudio(1) || pCdInfo->IsCDExtra(1) || pCdInfo->IsMixedMode(1)) buttons.Add(CONTEXT_BUTTON_RIP_TRACK, 610); } #endif // enable CDDB lookup if the current dir is CDDA if (g_mediaManager.IsDiscInDrive() && m_vecItems->IsCDDA() && (CProfilesManager::Get().GetCurrentProfile().canWriteDatabases() || g_passwordManager.bMasterUser)) { buttons.Add(CONTEXT_BUTTON_CDDB, 16002); } if (!item->IsParentFolder() && !item->IsReadOnly()) { // either we're at the playlist location or its been explicitly allowed if (inPlaylists || CSettings::Get().GetBool("filelists.allowfiledeletion")) { buttons.Add(CONTEXT_BUTTON_DELETE, 117); buttons.Add(CONTEXT_BUTTON_RENAME, 118); } } } // Add the scan button(s) if (g_application.IsMusicScanning()) buttons.Add(CONTEXT_BUTTON_STOP_SCANNING, 13353); // Stop Scanning else if (!inPlaylists && !m_vecItems->IsInternetStream() && !item->GetPath().Equals("add") && !item->IsParentFolder() && !item->IsPlugin() && !StringUtils::StartsWithNoCase(item->GetPath(), "addons://") && (CProfilesManager::Get().GetCurrentProfile().canWriteDatabases() || g_passwordManager.bMasterUser)) { buttons.Add(CONTEXT_BUTTON_SCAN, 13352); } if (item->IsPlugin() || item->IsScript() || m_vecItems->IsPlugin()) buttons.Add(CONTEXT_BUTTON_PLUGIN_SETTINGS, 1045); } if (!m_vecItems->IsVirtualDirectoryRoot() && !m_vecItems->IsPlugin()) buttons.Add(CONTEXT_BUTTON_SWITCH_MEDIA, 523); CGUIWindowMusicBase::GetNonContextButtons(buttons); }
void CGUIWindowMusicSongs::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (item) { // are we in the playlists location? bool inPlaylists = m_vecItems->m_strPath.Equals(CUtil::MusicPlaylistsLocation()) || m_vecItems->m_strPath.Equals("special://musicplaylists/"); if (m_vecItems->IsVirtualDirectoryRoot()) { // get the usual music shares, and anything for all media windows CGUIDialogContextMenu::GetContextButtons("music", item, buttons); // enable Rip CD an audio disc if (CDetectDVDMedia::IsDiscInDrive() && item->IsCDDA()) { // those cds can also include Audio Tracks: CDExtra and MixedMode! CCdInfo *pCdInfo = CDetectDVDMedia::GetCdInfo(); if (pCdInfo->IsAudio(1) || pCdInfo->IsCDExtra(1) || pCdInfo->IsMixedMode(1)) buttons.Add(CONTEXT_BUTTON_RIP_CD, 600); } CGUIMediaWindow::GetContextButtons(itemNumber, buttons); } else { CGUIWindowMusicBase::GetContextButtons(itemNumber, buttons); if (item->GetPropertyBOOL("pluginreplacecontextitems")) return; if (!item->IsPlayList()) { if (item->IsAudio() && !item->IsLastFM() && !item->IsShoutCast()) buttons.Add(CONTEXT_BUTTON_SONG_INFO, 658); // Song Info else if (!item->IsParentFolder() && !item->IsLastFM() && !item->IsShoutCast() && !item->m_strPath.Left(3).Equals("new") && item->m_bIsFolder) { #if 0 if (m_musicdatabase.GetAlbumIdByPath(item->m_strPath) > -1) #endif buttons.Add(CONTEXT_BUTTON_INFO, 13351); // Album Info } } // enable Rip CD Audio or Track button if we have an audio disc if (CDetectDVDMedia::IsDiscInDrive() && m_vecItems->IsCDDA()) { // those cds can also include Audio Tracks: CDExtra and MixedMode! CCdInfo *pCdInfo = CDetectDVDMedia::GetCdInfo(); if (pCdInfo->IsAudio(1) || pCdInfo->IsCDExtra(1) || pCdInfo->IsMixedMode(1)) buttons.Add(CONTEXT_BUTTON_RIP_TRACK, 610); } // enable CDDB lookup if the current dir is CDDA if (CDetectDVDMedia::IsDiscInDrive() && m_vecItems->IsCDDA() && (g_settings.m_vecProfiles[g_settings.m_iLastLoadedProfileIndex].canWriteDatabases() || g_passwordManager.bMasterUser)) { buttons.Add(CONTEXT_BUTTON_CDDB, 16002); } if (!item->IsParentFolder() && !item->IsReadOnly()) { // either we're at the playlist location or its been explicitly allowed if (inPlaylists || g_guiSettings.GetBool("filelists.allowfiledeletion")) { buttons.Add(CONTEXT_BUTTON_DELETE, 117); buttons.Add(CONTEXT_BUTTON_RENAME, 118); } } } // Add the scan button(s) CGUIDialogMusicScan *pScanDlg = (CGUIDialogMusicScan *)m_gWindowManager.GetWindow(WINDOW_DIALOG_MUSIC_SCAN); if (g_guiSettings.GetBool("musiclibrary.enabled") && pScanDlg) { if (pScanDlg->IsScanning()) buttons.Add(CONTEXT_BUTTON_STOP_SCANNING, 13353); // Stop Scanning else if (!inPlaylists && !m_vecItems->IsInternetStream() && !item->IsLastFM() && !item->IsShoutCast() && !item->m_strPath.Equals("add") && !item->IsParentFolder() && (g_settings.m_vecProfiles[g_settings.m_iLastLoadedProfileIndex].canWriteDatabases() || g_passwordManager.bMasterUser)) { buttons.Add(CONTEXT_BUTTON_SCAN, 13352); } } } if (!m_vecItems->IsVirtualDirectoryRoot()) buttons.Add(CONTEXT_BUTTON_SWITCH_MEDIA, 523); CGUIWindowMusicBase::GetNonContextButtons(buttons); }
void CGUIWindowMusicSongs::UpdateButtons() { CGUIWindowMusicBase::UpdateButtons(); bool bIsPlaying = g_application.IsPlayingAudio(); bool bCanRecord = false; bool bIsRecording = false; if (bIsPlaying) { bCanRecord = g_application.m_pPlayer->CanRecord(); bIsRecording = g_application.m_pPlayer->IsRecording(); } // Update Record button if (bIsPlaying && bCanRecord) { CONTROL_ENABLE(CONTROL_BTNREC); if (bIsRecording) { SET_CONTROL_LABEL(CONTROL_BTNREC, 265); //Stop Recording } else { SET_CONTROL_LABEL(CONTROL_BTNREC, 264); //Record } } else { SET_CONTROL_LABEL(CONTROL_BTNREC, 264); //Record CONTROL_DISABLE(CONTROL_BTNREC); } // Update CDDA Rip button CCdInfo *pCdInfo = CDetectDVDMedia::GetCdInfo(); if (CDetectDVDMedia::IsDiscInDrive() && pCdInfo && pCdInfo->IsAudio(1)) { CONTROL_ENABLE(CONTROL_BTNRIP); } else { CONTROL_DISABLE(CONTROL_BTNRIP); } // Disable scan button if shoutcast if (m_vecItems->IsVirtualDirectoryRoot() || m_vecItems->IsShoutCast() || m_vecItems->IsLastFM() || m_vecItems->IsMusicDb()) { CONTROL_DISABLE(CONTROL_BTNSCAN); } else { CONTROL_ENABLE(CONTROL_BTNSCAN); } CGUIDialogMusicScan *musicScan = (CGUIDialogMusicScan *)m_gWindowManager.GetWindow(WINDOW_DIALOG_MUSIC_SCAN); if (musicScan && musicScan->IsScanning()) { SET_CONTROL_LABEL(CONTROL_BTNSCAN, 14056); // Stop Scan } else { SET_CONTROL_LABEL(CONTROL_BTNSCAN, 102); // Scan } // Update object count label CStdString items; items.Format("%i %s", m_vecItems->GetObjectCount(), g_localizeStrings.Get(127).c_str()); SET_CONTROL_LABEL(CONTROL_LABELFILES, items); }