EPLAYERCORES CPlayerCoreFactory::SelectPlayerDialog(VECPLAYERCORES &vecCores, float posX, float posY) { CGUIDialogContextMenu *pMenu = (CGUIDialogContextMenu *)m_gWindowManager.GetWindow(WINDOW_DIALOG_CONTEXT_MENU); // Reset menu pMenu->Initialize(); // Add all possible players auto_aptr<int> btn_Cores(NULL); if( vecCores.size() > 0 ) { btn_Cores = new int[ vecCores.size() ]; btn_Cores[0] = 0; CStdString strCaption; //Add default player strCaption = CPlayerCoreFactory::GetPlayerName(vecCores[0]); strCaption += " ("; strCaption += g_localizeStrings.Get(13278); strCaption += ")"; btn_Cores[0] = pMenu->AddButton(strCaption); //Add all other players for( unsigned int i = 1; i < vecCores.size(); i++ ) { strCaption = CPlayerCoreFactory::GetPlayerName(vecCores[i]); btn_Cores[i] = pMenu->AddButton(strCaption); } } // Display menu if (posX && posY) pMenu->OffsetPosition(posX, posY); else pMenu->CenterWindow(); pMenu->DoModal(); //Check what player we selected int btnid = pMenu->GetButton(); for( unsigned int i = 0; i < vecCores.size(); i++ ) { if( btnid == btn_Cores[i] ) { return vecCores[i]; } } return EPC_NONE; }
PLAYERCOREID CPlayerCoreFactory::GetDefaultPlayer( const CFileItem& item ) { VECPLAYERCORES vecCores; GetPlayers(item, vecCores); //If we have any players return the first one if( vecCores.size() > 0 ) return vecCores.at(0); return EPC_NONE; }
PLAYERCOREID CPlayerCoreFactory::SelectPlayerDialog(VECPLAYERCORES &vecCores, float posX, float posY) { CContextButtons choices; if (vecCores.size()) { //Add default player CStdString strCaption = CPlayerCoreFactory::GetPlayerName(vecCores[0]); strCaption += " ("; strCaption += g_localizeStrings.Get(13278); strCaption += ")"; choices.Add(0, strCaption); //Add all other players for( unsigned int i = 1; i < vecCores.size(); i++ ) choices.Add(i, CPlayerCoreFactory::GetPlayerName(vecCores[i])); int choice = CGUIDialogContextMenu::ShowAndGetChoice(choices); if (choice >= 0) return vecCores[choice]; } return EPC_NONE; }
void CGUIWindowMusicBase::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) { if (item && !item->IsParentFolder()) { if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript())) buttons.Add(CONTEXT_BUTTON_INFO,24003); // Add-on info if (item->GetExtraInfo().Equals("lastfmloved")) { buttons.Add(CONTEXT_BUTTON_LASTFM_UNLOVE_ITEM, 15295); //unlove } else if (item->GetExtraInfo().Equals("lastfmbanned")) { buttons.Add(CONTEXT_BUTTON_LASTFM_UNBAN_ITEM, 15296); //unban } else if (item->CanQueue() && !item->IsAddonsPath() && !item->IsScript()) { buttons.Add(CONTEXT_BUTTON_QUEUE_ITEM, 13347); //queue // allow a folder to be ad-hoc queued and played by the default player if (item->m_bIsFolder || (item->IsPlayList() && !g_advancedSettings.m_playlistAsFolders)) { buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 208); // Play } else { // check what players we have, if we have multiple display play with option VECPLAYERCORES vecCores; CPlayerCoreFactory::GetPlayers(*item, vecCores); if (vecCores.size() >= 1) buttons.Add(CONTEXT_BUTTON_PLAY_WITH, 15213); // Play With... } if (item->IsSmartPlayList()) { buttons.Add(CONTEXT_BUTTON_PLAY_PARTYMODE, 15216); // Play in Partymode } if (item->IsSmartPlayList() || m_vecItems->IsSmartPlayList()) buttons.Add(CONTEXT_BUTTON_EDIT_SMART_PLAYLIST, 586); else if (item->IsPlayList() || m_vecItems->IsPlayList()) buttons.Add(CONTEXT_BUTTON_EDIT, 586); } } } CGUIMediaWindow::GetContextButtons(itemNumber, buttons); }
void CGUIWindowMusicPlayList::GetContextButtons(int itemNumber, CContextButtons &buttons) { // is this playlist playing? int itemPlaying = g_playlistPlayer.GetCurrentSong(); if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) { CFileItemPtr item; item = m_vecItems->Get(itemNumber); if (m_movingFrom >= 0) { // we can move the item to any position not where we are, and any position not above currently // playing item in party mode if (itemNumber != m_movingFrom && (!g_partyModeManager.IsEnabled() || itemNumber > itemPlaying)) buttons.Add(CONTEXT_BUTTON_MOVE_HERE, 13252); // move item here buttons.Add(CONTEXT_BUTTON_CANCEL_MOVE, 13253); } else { // aren't in a move // check what players we have, if we have multiple display play with option VECPLAYERCORES vecCores; CPlayerCoreFactory::GetInstance().GetPlayers(*item, vecCores); if (vecCores.size() > 1) buttons.Add(CONTEXT_BUTTON_PLAY_WITH, 15213); // Play With... buttons.Add(CONTEXT_BUTTON_SONG_INFO, 658); // Song Info if (XFILE::CFavouritesDirectory::IsFavourite(item.get(), GetID())) buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14077); // Remove Favourite else buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14076); // Add To Favourites; if (itemNumber > (g_partyModeManager.IsEnabled() ? 1 : 0)) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_UP, 13332); if (itemNumber + 1 < m_vecItems->Size()) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_DOWN, 13333); if (!g_partyModeManager.IsEnabled() || itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM, 13251); if (itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_DELETE, 1210); // Remove } } if (g_partyModeManager.IsEnabled()) { buttons.Add(CONTEXT_BUTTON_EDIT_PARTYMODE, 21439); buttons.Add(CONTEXT_BUTTON_CANCEL_PARTYMODE, 588); // cancel party mode } if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) CContextMenuManager::GetInstance().AddVisibleItems(m_vecItems->Get(itemNumber), buttons); }
void CGUIWindowVideoPlaylist::GetContextButtons(int itemNumber, CContextButtons &buttons) { int itemPlaying = g_playlistPlayer.GetCurrentSong(); if (m_movingFrom >= 0) { if (itemNumber != m_movingFrom && (!g_partyModeManager.IsEnabled() || itemNumber > itemPlaying)) buttons.Add(CONTEXT_BUTTON_MOVE_HERE, 13252); // move item here buttons.Add(CONTEXT_BUTTON_CANCEL_MOVE, 13253); } else { if (itemNumber > -1) { CFileItemPtr item = m_vecItems->Get(itemNumber); // check what players we have, if we have multiple display play with option VECPLAYERCORES vecCores; if (item->IsVideoDb()) { CFileItem item2(item->GetVideoInfoTag()->m_strFileNameAndPath, false); CPlayerCoreFactory::Get().GetPlayers(item2, vecCores); } else CPlayerCoreFactory::Get().GetPlayers(*item, vecCores); if (vecCores.size() > 1) buttons.Add(CONTEXT_BUTTON_PLAY_WITH, 15213); // Play With... if (XFILE::CFavouritesDirectory::IsFavourite(item.get(), GetID())) buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14077); // Remove Favourite else buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14076); // Add To Favourites; } if (itemNumber > (g_partyModeManager.IsEnabled() ? 1 : 0)) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_UP, 13332); if (itemNumber + 1 < m_vecItems->Size()) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM_DOWN, 13333); if (!g_partyModeManager.IsEnabled() || itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_MOVE_ITEM, 13251); if (itemNumber != itemPlaying) buttons.Add(CONTEXT_BUTTON_DELETE, 15015); } if (g_partyModeManager.IsEnabled()) { buttons.Add(CONTEXT_BUTTON_EDIT_PARTYMODE, 21439); buttons.Add(CONTEXT_BUTTON_CANCEL_PARTYMODE, 588); // cancel party mode } if(itemNumber > 0 && itemNumber < m_vecItems->Size()) CContextMenuManager::Get().AddVisibleItems(m_vecItems->Get(itemNumber), buttons); }
void CPlayerCoreFactory::GetPlayers( const CFileItem& item, VECPLAYERCORES &vecCores) { CURL url(item.GetPath()); CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers(%s)", item.GetPath().c_str()); // Process rules for(unsigned int i = 0; i < s_vecCoreSelectionRules.size(); i++) s_vecCoreSelectionRules[i]->GetPlayers(item, vecCores); CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: matched %"PRIuS" rules with players", vecCores.size()); if( PAPlayer::HandlesType(url.GetFileType()) ) { // We no longer force PAPlayer as our default audio player (used to be true): bool bAdd = false; if (url.GetProtocol().Equals("mms")) { bAdd = false; } else if (item.IsType(".wma")) { // bAdd = true; // DVDPlayerCodec codec; // if (!codec.Init(item.GetPath(),2048)) // bAdd = false; // codec.DeInit(); } if (bAdd) { if( g_guiSettings.GetInt("audiooutput.mode") == AUDIO_ANALOG && !AUDIO_IS_BITSTREAM(g_guiSettings.GetInt("audiooutput2.mode")) ) { CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: adding PAPlayer (%d)", EPC_PAPLAYER); vecCores.push_back(EPC_PAPLAYER); } else if (url.GetFileType().Equals("ac3") || url.GetFileType().Equals("dts")) { CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: adding DVDPlayer (%d)", EPC_DVDPLAYER); vecCores.push_back(EPC_DVDPLAYER); } else { CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: adding PAPlayer (%d)", EPC_PAPLAYER); vecCores.push_back(EPC_PAPLAYER); } } } // Process defaults // Set video default player. Check whether it's video first (overrule audio check) // Also push these players in case it is NOT audio either if (item.IsVideo() || !item.IsAudio()) { PLAYERCOREID eVideoDefault = GetPlayerCore("videodefaultplayer"); if (eVideoDefault != EPC_NONE) { CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: adding videodefaultplayer (%d)", eVideoDefault); vecCores.push_back(eVideoDefault); } GetPlayers(vecCores, false, true); // Video-only players GetPlayers(vecCores, true, true); // Audio & video players } // Set audio default player // Pushback all audio players in case we don't know the type if (item.IsAudio()) { PLAYERCOREID eAudioDefault = GetPlayerCore("audiodefaultplayer"); if (eAudioDefault != EPC_NONE) { CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: adding audiodefaultplayer (%d)", eAudioDefault); vecCores.push_back(eAudioDefault); } GetPlayers(vecCores, true, false); // Audio-only players GetPlayers(vecCores, true, true); // Audio & video players } /* make our list unique, preserving first added players */ unique(vecCores); CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: added %"PRIuS" players", vecCores.size()); }
void CGUIWindowFileManager::OnPopupMenu(int list, int item, bool bContextDriven /* = true */) { /* 歌方: 1、 卦指: 1、 傍苧: 1、 */ if (list < 0 || list > 2) return ; bool bDeselect = SelectItem(list, item); // calculate the position for our menu float posX = 200; float posY = 100; const CGUIControl *pList = GetControl(CONTROL_LEFT_LIST + list); if (pList) { posX = pList->GetXPosition() + pList->GetWidth() / 2; posY = pList->GetYPosition() + pList->GetHeight() / 2; } CFileItemPtr pItem = m_vecItems[list]->Get(item); if (!pItem.get()) return; if (m_Directory[list]->IsVirtualDirectoryRoot()) { if (item < 0) { // TODO: We should add the option here for shares to be added if there aren't any return ; } // and do the popup menu if (CGUIDialogContextMenu::SourcesMenu("files", pItem, posX, posY)) { m_rootDir.SetSources(g_settings.m_fileSources); if (m_Directory[1 - list]->IsVirtualDirectoryRoot()) Refresh(); else Refresh(list); return ; } pItem->Select(false); return ; } // popup the context menu bool showEntry = false; if (item >= m_vecItems[list]->Size()) item = -1; if (item >= 0) showEntry=(!pItem->IsParentFolder() || (pItem->IsParentFolder() && m_vecItems[list]->GetSelectedCount()>0)); // determine available players VECPLAYERCORES vecCores; CPlayerCoreFactory::GetPlayers(*pItem, vecCores); // add the needed buttons CContextButtons choices; if (item >= 0) { choices.Add(1, 188); // SelectAll if (!pItem->IsParentFolder()) choices.Add(2, CFavourites::IsFavourite(pItem.get(), GetID()) ? 14077 : 14076); // Add/Remove Favourite if (vecCores.size() > 1) choices.Add(3, 15213); // Play Using... if (CanRename(list) && !pItem->IsParentFolder()) choices.Add(4, 118); // Rename if (CanDelete(list) && showEntry) choices.Add(5, 117); // Delete if (CanCopy(list) && showEntry) choices.Add(6, 115); // Copy if (CanMove(list) && showEntry) choices.Add(7, 116); // Move } if (CanNewFolder(list)) choices.Add(8, 20309); // New Folder if (item >= 0 && pItem->m_bIsFolder && !pItem->IsParentFolder()) choices.Add(9, 13393); // Calculate Size choices.Add(10, 5); // Settings choices.Add(11, 20128); // Go To Root choices.Add(12, 523); // switch media int btnid = CGUIDialogContextMenu::ShowAndGetChoice(choices); if (btnid == 1) { OnSelectAll(list); bDeselect=false; } if (btnid == 2) { CFavourites::AddOrRemove(pItem.get(), GetID()); return; } if (btnid == 3) { VECPLAYERCORES vecCores; CPlayerCoreFactory::GetPlayers(*pItem, vecCores); g_application.m_eForcedNextPlayer = CPlayerCoreFactory::SelectPlayerDialog(vecCores); if (g_application.m_eForcedNextPlayer != EPC_NONE) OnStart(pItem.get()); } if (btnid == 4) OnRename(list); if (btnid == 5) OnDelete(list); if (btnid == 6) OnCopy(list); if (btnid == 7) OnMove(list); if (btnid == 8) OnNewFolder(list); if (btnid == 9) { // setup the progress dialog, and show it CGUIDialogProgress *progress = (CGUIDialogProgress *)g_windowManager.GetWindow(WINDOW_DIALOG_PROGRESS); if (progress) { progress->SetHeading(13394); for (int i=0; i < 3; i++) progress->SetLine(i, ""); progress->StartModal(); } // Calculate folder size for each selected item for (int i=0; i<m_vecItems[list]->Size(); ++i) { CFileItemPtr pItem2=m_vecItems[list]->Get(i); if (pItem2->m_bIsFolder && pItem2->IsSelected()) { int64_t folderSize = CalculateFolderSize(pItem2->GetPath(), progress); if (folderSize >= 0) { pItem2->m_dwSize = folderSize; if (folderSize == 0) pItem2->SetLabel2(StringUtils::SizeToString(folderSize)); else pItem2->SetFileSizeLabel(); } } } if (progress) progress->Close(); } if (btnid == 10) { g_windowManager.ActivateWindow(WINDOW_SETTINGS_MENU); return; } if (btnid == 11) { Update(list,""); return; } if (btnid == 12) { CGUIDialogContextMenu::SwitchMedia("files", m_vecItems[list]->GetPath()); return; } if (bDeselect && item >= 0 && item < m_vecItems[list]->Size()) { // deselect item as we didn't do anything pItem->Select(false); } }
void CGUIWindowMusicBase::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) { if (item && !item->IsParentFolder()) { if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript())) buttons.Add(CONTEXT_BUTTON_INFO,24003); // Add-on info if (item->CanQueue() && !item->IsAddonsPath() && !item->IsScript()) { buttons.Add(CONTEXT_BUTTON_QUEUE_ITEM, 13347); //queue // allow a folder to be ad-hoc queued and played by the default player if (item->m_bIsFolder || (item->IsPlayList() && !g_advancedSettings.m_playlistAsFolders)) { buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 208); // Play } else { // check what players we have, if we have multiple display play with option VECPLAYERCORES vecCores; CPlayerCoreFactory::GetInstance().GetPlayers(*item, vecCores); if (vecCores.size() >= 1) buttons.Add(CONTEXT_BUTTON_PLAY_WITH, 15213); // Play With... } if (item->IsSmartPlayList()) { buttons.Add(CONTEXT_BUTTON_PLAY_PARTYMODE, 15216); // Play in Partymode } if (item->IsSmartPlayList() || m_vecItems->IsSmartPlayList()) buttons.Add(CONTEXT_BUTTON_EDIT_SMART_PLAYLIST, 586); else if (item->IsPlayList() || m_vecItems->IsPlayList()) buttons.Add(CONTEXT_BUTTON_EDIT, 586); } // Add the scan button(s) if (g_application.IsMusicScanning()) buttons.Add(CONTEXT_BUTTON_STOP_SCANNING, 13353); // Stop Scanning else if (!m_vecItems->IsMusicDb() && !m_vecItems->IsInternetStream() && !item->IsPath("add") && !item->IsParentFolder() && !item->IsPlugin() && !item->IsMusicDb() && !item->IsLibraryFolder() && !StringUtils::StartsWithNoCase(item->GetPath(), "addons://") && (CProfilesManager::GetInstance().GetCurrentProfile().canWriteDatabases() || g_passwordManager.bMasterUser)) { buttons.Add(CONTEXT_BUTTON_SCAN, 13352); } #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! MEDIA_DETECT::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::GetInstance().GetCurrentProfile().canWriteDatabases() || g_passwordManager.bMasterUser)) { buttons.Add(CONTEXT_BUTTON_CDDB, 16002); } } CGUIMediaWindow::GetContextButtons(itemNumber, buttons); }
void CGUIWindowFileManager::OnPopupMenu(int list, int item, bool bContextDriven /* = true */) { if (list < 0 || list > 2) return ; bool bDeselect = SelectItem(list, item); // calculate the position for our menu float posX = 200; float posY = 100; const CGUIControl *pList = GetControl(CONTROL_LEFT_LIST + list); if (pList) { posX = pList->GetXPosition() + pList->GetWidth() / 2; posY = pList->GetYPosition() + pList->GetHeight() / 2; } CFileItemPtr pItem = m_vecItems[list]->Get(item); if (!pItem.get()) return; if (m_Directory[list]->IsVirtualDirectoryRoot()) { if (item < 0) { // TODO: We should add the option here for shares to be added if there aren't any return ; } // and do the popup menu if (CGUIDialogContextMenu::SourcesMenu("files", pItem, posX, posY)) { m_rootDir.SetSources(g_settings.m_fileSources); if (m_Directory[1 - list]->IsVirtualDirectoryRoot()) Refresh(); else Refresh(list); return ; } pItem->Select(false); return ; } // popup the context menu CGUIDialogContextMenu *pMenu = (CGUIDialogContextMenu *)m_gWindowManager.GetWindow(WINDOW_DIALOG_CONTEXT_MENU); if (pMenu) { bool showEntry = false; if (item >= m_vecItems[list]->Size()) item = -1; if (item >= 0) showEntry=(!pItem->IsParentFolder() || (pItem->IsParentFolder() && m_vecItems[list]->GetSelectedCount()>0)); // determine available players VECPLAYERCORES vecCores; CPlayerCoreFactory::GetPlayers(*pItem, vecCores); // load our menu pMenu->Initialize(); // add the needed buttons int btn_SelectAll = pMenu->AddButton(188); // SelectAll int btn_HandleFavourite; // Add/Remove Favourite if (CFavourites::IsFavourite(pItem.get(), GetID())) btn_HandleFavourite = pMenu->AddButton(14077); else btn_HandleFavourite = pMenu->AddButton(14076); int btn_PlayUsing = pMenu->AddButton(15213); // Play Using .. int btn_Rename = pMenu->AddButton(118); // Rename int btn_Delete = pMenu->AddButton(117); // Delete int btn_Copy = pMenu->AddButton(115); // Copy int btn_Move = pMenu->AddButton(116); // Move int btn_NewFolder = pMenu->AddButton(20309); // New Folder int btn_Size = pMenu->AddButton(13393); // Calculate Size int btn_Settings = pMenu->AddButton(5); // Settings int btn_GoToRoot = pMenu->AddButton(20128); // Go To Root int btn_Switch = pMenu->AddButton(523); // switch media pMenu->EnableButton(btn_SelectAll, item >= 0); pMenu->EnableButton(btn_HandleFavourite, item >=0 && !pItem->IsParentFolder()); pMenu->EnableButton(btn_PlayUsing, item >= 0 && vecCores.size() > 1); pMenu->EnableButton(btn_Rename, item >= 0 && CanRename(list) && !pItem->IsParentFolder()); pMenu->EnableButton(btn_Delete, item >= 0 && CanDelete(list) && showEntry); pMenu->EnableButton(btn_Copy, item >= 0 && CanCopy(list) && showEntry); pMenu->EnableButton(btn_Move, item >= 0 && CanMove(list) && showEntry); pMenu->EnableButton(btn_NewFolder, CanNewFolder(list)); pMenu->EnableButton(btn_Size, item >=0 && pItem->m_bIsFolder && !pItem->IsParentFolder()); // position it correctly pMenu->OffsetPosition(posX, posY); pMenu->DoModal(); int btnid = pMenu->GetButton(); if (btnid == btn_SelectAll) { OnSelectAll(list); bDeselect=false; } if (btnid == btn_HandleFavourite) { CFavourites::AddOrRemove(pItem.get(), GetID()); return; } if (btnid == btn_PlayUsing) { VECPLAYERCORES vecCores; CPlayerCoreFactory::GetPlayers(*pItem, vecCores); g_application.m_eForcedNextPlayer = CPlayerCoreFactory::SelectPlayerDialog(vecCores); if (g_application.m_eForcedNextPlayer != EPC_NONE) OnStart(pItem.get()); } if (btnid == btn_Rename) OnRename(list); if (btnid == btn_Delete) OnDelete(list); if (btnid == btn_Copy) OnCopy(list); if (btnid == btn_Move) OnMove(list); if (btnid == btn_NewFolder) OnNewFolder(list); if (btnid == btn_Size) { // setup the progress dialog, and show it CGUIDialogProgress *progress = (CGUIDialogProgress *)m_gWindowManager.GetWindow(WINDOW_DIALOG_PROGRESS); if (progress) { progress->SetHeading(13394); for (int i=0; i < 3; i++) progress->SetLine(i, ""); progress->StartModal(); } // Calculate folder size for each selected item for (int i=0; i<m_vecItems[list]->Size(); ++i) { CFileItemPtr pItem2=m_vecItems[list]->Get(i); if (pItem2->m_bIsFolder && pItem2->IsSelected()) { __int64 folderSize = CalculateFolderSize(pItem2->m_strPath, progress); if (folderSize >= 0) { pItem2->m_dwSize = folderSize; if (folderSize == 0) pItem2->SetLabel2(StringUtils::SizeToString(folderSize)); else pItem2->SetFileSizeLabel(); } } } if (progress) progress->Close(); } if (btnid == btn_Settings) { m_gWindowManager.ActivateWindow(WINDOW_SETTINGS_MENU); return; } if (btnid == btn_GoToRoot) { Update(list,""); return; } if (btnid == btn_Switch) { CGUIDialogContextMenu::SwitchMedia("files", m_vecItems[list]->m_strPath); return; } if (bDeselect && item >= 0 && item < m_vecItems[list]->Size()) { // deselect item as we didn't do anything pItem->Select(false); } } }