void CGUIWindowJukeboxSongs::DoScan(const CStdString &strPath) { CGUIDialogMusicScan *musicScan = (CGUIDialogMusicScan *) g_windowManager.GetWindow(WINDOW_DIALOG_MUSIC_SCAN); if (musicScan && musicScan->IsScanning()) { musicScan->StopScanning(); return; } // Start background loader int iControl = GetFocusedControlID(); if (musicScan) musicScan->StartScanning(strPath); SET_CONTROL_FOCUS(iControl, 0); UpdateButtons(); return; }
bool CGUIWindowMusicBase::OnContextButton(int itemNumber, CONTEXT_BUTTON button) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); switch (button) { case CONTEXT_BUTTON_QUEUE_ITEM: OnQueueItem(itemNumber); return true; case CONTEXT_BUTTON_INFO: OnInfo(itemNumber); return true; case CONTEXT_BUTTON_SONG_INFO: { ShowSongInfo(item.get()); return true; } case CONTEXT_BUTTON_EDIT: { CStdString playlist = item->IsPlayList() ? item->GetPath() : m_vecItems->GetPath(); // save path as activatewindow will destroy our items g_windowManager.ActivateWindow(WINDOW_MUSIC_PLAYLIST_EDITOR, playlist); // need to update m_vecItems->RemoveDiscCache(GetID()); return true; } case CONTEXT_BUTTON_EDIT_SMART_PLAYLIST: { CStdString playlist = item->IsSmartPlayList() ? item->GetPath() : m_vecItems->GetPath(); // save path as activatewindow will destroy our items if (CGUIDialogSmartPlaylistEditor::EditPlaylist(playlist, "music")) { // need to update m_vecItems->RemoveDiscCache(GetID()); Update(m_vecItems->GetPath()); } return true; } case CONTEXT_BUTTON_PLAY_ITEM: PlayItem(itemNumber); return true; case CONTEXT_BUTTON_PLAY_WITH: { VECPLAYERCORES vecCores; // base class? CPlayerCoreFactory::GetPlayers(*item, vecCores); g_application.m_eForcedNextPlayer = CPlayerCoreFactory::SelectPlayerDialog(vecCores); if( g_application.m_eForcedNextPlayer != EPC_NONE ) OnClick(itemNumber); return true; } case CONTEXT_BUTTON_PLAY_PARTYMODE: g_partyModeManager.Enable(PARTYMODECONTEXT_MUSIC, item->GetPath()); return true; case CONTEXT_BUTTON_STOP_SCANNING: { CGUIDialogMusicScan *scanner = (CGUIDialogMusicScan *)g_windowManager.GetWindow(WINDOW_DIALOG_MUSIC_SCAN); if (scanner) scanner->StopScanning(); return true; } case CONTEXT_BUTTON_NOW_PLAYING: g_windowManager.ActivateWindow(WINDOW_MUSIC_PLAYLIST); return true; case CONTEXT_BUTTON_GOTO_ROOT: Update(""); return true; case CONTEXT_BUTTON_SETTINGS: g_windowManager.ActivateWindow(WINDOW_SETTINGS_MYMUSIC); return true; case CONTEXT_BUTTON_LASTFM_UNBAN_ITEM: if (CLastFmManager::GetInstance()->Unban(*item->GetMusicInfoTag())) { g_directoryCache.ClearDirectory(m_vecItems->GetPath()); m_vecItems->RemoveDiscCache(GetID()); Update(m_vecItems->GetPath()); } return true; case CONTEXT_BUTTON_LASTFM_UNLOVE_ITEM: if (CLastFmManager::GetInstance()->Unlove(*item->GetMusicInfoTag())) { g_directoryCache.ClearDirectory(m_vecItems->GetPath()); m_vecItems->RemoveDiscCache(GetID()); Update(m_vecItems->GetPath()); } return true; default: break; } return CGUIMediaWindow::OnContextButton(itemNumber, button); }