void CGUIWindowMusicBase::ShowAlbumInfo(const CAlbum& album, const CStdString& path, bool bRefresh, bool bShowInfo) { bool saveDb = album.idAlbum != -1; if (!g_settings.GetCurrentProfile().canWriteDatabases() && !g_passwordManager.bMasterUser) saveDb = false; // check cache CAlbum albumInfo; if (!bRefresh && m_musicdatabase.GetAlbumInfo(album.idAlbum, albumInfo, &albumInfo.songs)) { if (!bShowInfo) return; CGUIDialogMusicInfo *pDlgAlbumInfo = (CGUIDialogMusicInfo*)g_windowManager.GetWindow(WINDOW_DIALOG_MUSIC_INFO); if (pDlgAlbumInfo) { pDlgAlbumInfo->SetAlbum(albumInfo, path); if (bShowInfo) pDlgAlbumInfo->DoModal(); else pDlgAlbumInfo->RefreshThumb(); // downloads the thumb if we don't already have one if (!pDlgAlbumInfo->NeedRefresh()) { if (pDlgAlbumInfo->HasUpdatedThumb()) UpdateThumb(albumInfo, path); return; } bRefresh = true; m_musicdatabase.DeleteAlbumInfo(albumInfo.idAlbum); } } // If we are scanning for music info in the background, // other writing access to the database is prohibited. if (g_application.IsMusicScanning()) { CGUIDialogOK::ShowAndGetInput(189, 14057, 0, 0); return; } CMusicAlbumInfo info; if (FindAlbumInfo(album.strAlbum, StringUtils::Join(album.artist, g_advancedSettings.m_musicItemSeparator), info, bShowInfo ? (bRefresh ? SELECTION_FORCED : SELECTION_ALLOWED) : SELECTION_AUTO)) { // download the album info if ( info.Loaded() ) { // set album title from musicinfotag, not the one we got from allmusic.com info.SetTitle(album.strAlbum); if (saveDb) { // save to database m_musicdatabase.SetAlbumInfo(album.idAlbum, info.GetAlbum(), info.GetSongs()); } if (m_dlgProgress && bShowInfo) m_dlgProgress->Close(); UpdateThumb(album, path); // ok, show album info CGUIDialogMusicInfo *pDlgAlbumInfo = (CGUIDialogMusicInfo*)g_windowManager.GetWindow(WINDOW_DIALOG_MUSIC_INFO); if (pDlgAlbumInfo) { pDlgAlbumInfo->SetAlbum(info.GetAlbum(), path); if (bShowInfo) pDlgAlbumInfo->DoModal(); else pDlgAlbumInfo->RefreshThumb(); // downloads the thumb if we don't already have one CAlbum albumInfo = info.GetAlbum(); albumInfo.idAlbum = album.idAlbum; if (pDlgAlbumInfo->HasUpdatedThumb()) UpdateThumb(albumInfo, path); if (pDlgAlbumInfo->NeedRefresh()) { m_musicdatabase.DeleteAlbumInfo(albumInfo.idAlbum); ShowAlbumInfo(album, path, true, bShowInfo); return; } } } else { // failed 2 download album info CGUIDialogOK::ShowAndGetInput(185, 0, 500, 0); } } if (m_dlgProgress && bShowInfo) m_dlgProgress->Close(); }
void CGUIWindowMusicBase::ShowArtistInfo(const CArtist& artist, const CStdString& path, bool bRefresh, bool bShowInfo) { bool saveDb = artist.idArtist != -1; if (!g_settings.GetCurrentProfile().canWriteDatabases() && !g_passwordManager.bMasterUser) saveDb = false; // check cache CArtist artistInfo; if (!bRefresh && m_musicdatabase.GetArtistInfo(artist.idArtist, artistInfo)) { if (!bShowInfo) return; CGUIDialogMusicInfo *pDlgArtistInfo = (CGUIDialogMusicInfo*)g_windowManager.GetWindow(WINDOW_DIALOG_MUSIC_INFO); if (pDlgArtistInfo) { pDlgArtistInfo->SetArtist(artistInfo, path); if (bShowInfo) pDlgArtistInfo->DoModal(); else pDlgArtistInfo->RefreshThumb(); // downloads the thumb if we don't already have one if (!pDlgArtistInfo->NeedRefresh()) { if (pDlgArtistInfo->HasUpdatedThumb()) Update(m_vecItems->GetPath()); return; } bRefresh = true; m_musicdatabase.DeleteArtistInfo(artistInfo.idArtist); } } // If we are scanning for music info in the background, // other writing access to the database is prohibited. if (g_application.IsMusicScanning()) { CGUIDialogOK::ShowAndGetInput(189, 14057, 0, 0); return; } CMusicArtistInfo info; if (FindArtistInfo(artist.strArtist, info, bShowInfo ? (bRefresh ? SELECTION_FORCED : SELECTION_ALLOWED) : SELECTION_AUTO)) { // download the album info if ( info.Loaded() ) { if (saveDb) { // save to database m_musicdatabase.SetArtistInfo(artist.idArtist, info.GetArtist()); } if (m_dlgProgress && bShowInfo) m_dlgProgress->Close(); // ok, show album info CGUIDialogMusicInfo *pDlgArtistInfo = (CGUIDialogMusicInfo*)g_windowManager.GetWindow(WINDOW_DIALOG_MUSIC_INFO); if (pDlgArtistInfo) { pDlgArtistInfo->SetArtist(info.GetArtist(), path); if (bShowInfo) pDlgArtistInfo->DoModal(); else pDlgArtistInfo->RefreshThumb(); // downloads the thumb if we don't already have one CArtist artistInfo = info.GetArtist(); artistInfo.idArtist = artist.idArtist; /* if (pDlgAlbumInfo->HasUpdatedThumb()) UpdateThumb(artistInfo, path); */ // just update for now Update(m_vecItems->GetPath()); if (pDlgArtistInfo->NeedRefresh()) { m_musicdatabase.DeleteArtistInfo(artistInfo.idArtist); ShowArtistInfo(artist, path, true, bShowInfo); return; } } } else { // failed 2 download album info CGUIDialogOK::ShowAndGetInput(21889, 0, 20199, 0); } } if (m_dlgProgress && bShowInfo) m_dlgProgress->Close(); }