本文整理汇总了C++中VECPLAYERCORES类的典型用法代码示例。如果您正苦于以下问题:C++ VECPLAYERCORES类的具体用法?C++ VECPLAYERCORES怎么用?C++ VECPLAYERCORES使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了VECPLAYERCORES类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: GetPlayers
void CPlayerCoreFactory::GetPlayers( VECPLAYERCORES &vecCores )
{
vecCores.push_back(EPC_DVDPLAYER);
vecCores.push_back(EPC_PAPLAYER);
vecCores.push_back(EPC_QTPLAYER);
vecCores.push_back(EPC_PMSPLAYER);
}
开发者ID:Castlecard,项目名称:plex,代码行数:7,代码来源:PlayerCoreFactory.cpp
示例2: GetDefaultPlayer
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;
}
开发者ID:Gemini88,项目名称:xbmc-1,代码行数:10,代码来源:PlayerCoreFactory.cpp
示例3: GetContextButtons
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);
}
开发者ID:ntamvl,项目名称:xbmc,代码行数:51,代码来源:GUIWindowVideoPlaylist.cpp
示例4: CVariant
JSONRPC_STATUS CPlayerOperations::GetPlayers(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
{
std::string media = parameterObject["media"].asString();
result = CVariant(CVariant::VariantTypeArray);
VECPLAYERCORES players;
if (media == "all")
CPlayerCoreFactory::GetInstance().GetPlayers(players);
else
{
bool video = false;
if (media == "video")
video = true;
CPlayerCoreFactory::GetInstance().GetPlayers(players, true, video);
}
for (VECPLAYERCORES::const_iterator itPlayer = players.begin(); itPlayer != players.end(); ++itPlayer)
{
PLAYERCOREID playerId = *itPlayer;
const CPlayerCoreConfig* playerConfig = CPlayerCoreFactory::GetInstance().GetPlayerConfig(playerId);
if (playerConfig == NULL)
continue;
CVariant player(CVariant::VariantTypeObject);
player["playercoreid"] = static_cast<int>(playerId);
player["name"] = playerConfig->GetName();
switch (playerConfig->GetType())
{
case EPC_EXTPLAYER:
player["type"] = "external";
break;
case EPC_UPNPPLAYER:
player["type"] = "remote";
break;
default:
player["type"] = "internal";
break;
}
player["playsvideo"] = playerConfig->PlaysVideo();
player["playsaudio"] = playerConfig->PlaysAudio();
result.push_back(player);
}
return OK;
}
开发者ID:Karlson2k,项目名称:xbmc,代码行数:51,代码来源:PlayerOperations.cpp
示例5: SelectPlayerDialog
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;
}
开发者ID:derobert,项目名称:debianlink-xbmc,代码行数:51,代码来源:PlayerCoreFactory.cpp
示例6: GetContextButtons
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);
}
开发者ID:krattai,项目名称:sht_tv,代码行数:51,代码来源:GUIWindowMusicPlaylist.cpp
示例7: GetRemotePlayers
void CPlayerCoreFactory::GetRemotePlayers( VECPLAYERCORES &vecCores ) const
{
CSingleLock lock(m_section);
for(unsigned int i = 0; i < m_vecCoreConfigs.size(); i++)
{
if(m_vecCoreConfigs[i]->m_eCore != EPC_UPNPPLAYER)
continue;
vecCores.push_back(i+1);
}
}
开发者ID:AndyPeterman,项目名称:mrmc,代码行数:10,代码来源:PlayerCoreFactory.cpp
示例8: GetPlayers
void CPlayerCoreFactory::GetPlayers( VECPLAYERCORES &vecCores ) const
{
CSingleLock lock(m_section);
for(unsigned int i = 0; i < m_vecCoreConfigs.size(); i++)
{
if(m_vecCoreConfigs[i]->m_eCore == EPC_NONE)
continue;
if (m_vecCoreConfigs[i]->m_bPlaysAudio || m_vecCoreConfigs[i]->m_bPlaysVideo)
vecCores.push_back(i+1);
}
}
开发者ID:AndyPeterman,项目名称:mrmc,代码行数:11,代码来源:PlayerCoreFactory.cpp
示例9: GetPlayers
void CPlayerCoreFactory::GetPlayers( VECPLAYERCORES &vecCores, const bool audio, const bool video )
{
CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: for video=%d, audio=%d", video, audio);
for(unsigned int i = 0; i < s_vecCoreConfigs.size(); i++)
{
if (audio == s_vecCoreConfigs[i]->m_bPlaysAudio && video == s_vecCoreConfigs[i]->m_bPlaysVideo)
{
CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: adding player: %s (%d)", s_vecCoreConfigs[i]->m_name.c_str(), i+1);
vecCores.push_back(i+1);
}
}
}
开发者ID:Gemini88,项目名称:xbmc-1,代码行数:13,代码来源:PlayerCoreFactory.cpp
示例10: SelectPlayerDialog
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;
}
开发者ID:Gemini88,项目名称:xbmc-1,代码行数:22,代码来源:PlayerCoreFactory.cpp
示例11: GetContextButtons
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);
}
开发者ID:pollonamid,项目名称:xbmc,代码行数:72,代码来源:GUIWindowMusicBase.cpp
示例12: GetPlayers
void CPlayerCoreFactory::GetPlayers( const CFileItem& item, VECPLAYERCORES &vecCores)
{
CURL url(item.m_strPath);
CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers(%s)", item.m_strPath.c_str());
// ugly hack for ReplayTV. our filesystem is broken against real ReplayTV's (not the psuedo DVArchive)
// it breaks down for small requests. As we can't allow truncated reads for all emulated dll file functions
// we are often forced to do small reads to fill up the full buffer size wich seems gives garbage back
if (url.GetProtocol().Equals("rtv"))
{
vecCores.push_back(EPC_MPLAYER); // vecCores.push_back(EPC_DVDPLAYER);
}
if (url.GetProtocol().Equals("hdhomerun")
|| url.GetProtocol().Equals("myth")
|| url.GetProtocol().Equals("cmyth")
|| url.GetProtocol().Equals("rtmp"))
{
vecCores.push_back(EPC_DVDPLAYER);
}
if (url.GetProtocol().Equals("lastfm") ||
url.GetProtocol().Equals("shout"))
{
vecCores.push_back(EPC_PAPLAYER);
}
if (url.GetProtocol().Equals("mms"))
{
vecCores.push_back(EPC_DVDPLAYER);
}
// dvdplayer can play standard rtsp streams
if (url.GetProtocol().Equals("rtsp")
&& !url.GetFileType().Equals("rm")
&& !url.GetFileType().Equals("ra"))
{
vecCores.push_back(EPC_DVDPLAYER);
}
// Special care in case it's an internet stream
if (item.IsInternetStream())
{
CStdString content = item.GetContentType();
CLog::Log(LOGDEBUG, "%s - Item is an internet stream, content-type=%s", __FUNCTION__, content.c_str());
if (content == "video/x-flv"
|| content == "video/flv")
{
vecCores.push_back(EPC_DVDPLAYER);
}
else if (content == "audio/aacp")
{
vecCores.push_back(EPC_DVDPLAYER);
}
else if (content == "application/sdp")
{
vecCores.push_back(EPC_DVDPLAYER);
}
else if (content == "application/octet-stream")
{
//unknown contenttype, send mp2 to pap
if( url.GetFileType() == "mp2")
vecCores.push_back(EPC_PAPLAYER);
}
}
if (item.IsDVD() || item.IsDVDFile() || item.IsDVDImage())
{
if ( g_advancedSettings.m_videoDefaultDVDPlayer == "externalplayer" )
{
vecCores.push_back(EPC_EXTPLAYER);
vecCores.push_back(EPC_DVDPLAYER);
}
else
{
vecCores.push_back(EPC_DVDPLAYER);
vecCores.push_back(EPC_EXTPLAYER);
}
}
// only dvdplayer can handle these normally
if (url.GetFileType().Equals("sdp")
|| url.GetFileType().Equals("asf"))
{
vecCores.push_back(EPC_DVDPLAYER);
}
// 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())
{
if ( g_advancedSettings.m_videoDefaultPlayer == "externalplayer" )
{
vecCores.push_back(EPC_EXTPLAYER);
vecCores.push_back(EPC_DVDPLAYER);
}
else
//.........这里部分代码省略.........
开发者ID:derobert,项目名称:debianlink-xbmc,代码行数:101,代码来源:PlayerCoreFactory.cpp
示例13: switch
//.........这里部分代码省略.........
CPVRRecordings *recordingsContainer = g_PVRRecordings;
if (recordingsContainer == NULL)
return FailedToExecute;
CFileItemPtr fileItem = recordingsContainer->GetById((int)parameterObject["item"]["recordingid"].asInteger());
if (fileItem == NULL)
return InvalidParams;
CFileItemList *l = new CFileItemList; //don't delete,
l->Add(std::make_shared<CFileItem>(*fileItem));
CApplicationMessenger::GetInstance().PostMsg(TMSG_MEDIA_PLAY, -1, -1, static_cast<void*>(l));
return ACK;
}
else
{
CFileItemList list;
if (FillFileItemList(parameterObject["item"], list) && list.Size() > 0)
{
bool slideshow = true;
for (int index = 0; index < list.Size(); index++)
{
if (!list[index]->IsPicture())
{
slideshow = false;
break;
}
}
if (slideshow)
{
CGUIWindowSlideShow *slideshow = (CGUIWindowSlideShow*)g_windowManager.GetWindow(WINDOW_SLIDESHOW);
if (!slideshow)
return FailedToExecute;
SendSlideshowAction(ACTION_STOP);
slideshow->Reset();
for (int index = 0; index < list.Size(); index++)
slideshow->Add(list[index].get());
return StartSlideshow("", false, optionShuffled.isBoolean() && optionShuffled.asBoolean());
}
else
{
// Handle the "playerid" option
if (!optionPlayer.isNull())
{
PLAYERCOREID playerId = EPC_NONE;
if (optionPlayer.isInteger())
{
playerId = (PLAYERCOREID)optionPlayer.asInteger();
// check if the there's actually a player with the given player ID
if (CPlayerCoreFactory::GetInstance().GetPlayerConfig(playerId) == NULL)
return InvalidParams;
// check if the player can handle at least the first item in the list
VECPLAYERCORES possiblePlayers;
CPlayerCoreFactory::GetInstance().GetPlayers(*list.Get(0).get(), possiblePlayers);
VECPLAYERCORES::const_iterator matchingPlayer = std::find(possiblePlayers.begin(), possiblePlayers.end(), playerId);
if (matchingPlayer == possiblePlayers.end())
return InvalidParams;
}
else if (!optionPlayer.isString() || optionPlayer.asString().compare("default") != 0)
return InvalidParams;
// set the next player to be used
g_application.m_eForcedNextPlayer = playerId;
}
// Handle "shuffled" option
if (optionShuffled.isBoolean())
list.SetProperty("shuffled", optionShuffled);
// Handle "repeat" option
if (!optionRepeat.isNull())
list.SetProperty("repeat", ParseRepeatState(optionRepeat));
// Handle "resume" option
if (list.Size() == 1)
{
if (optionResume.isBoolean() && optionResume.asBoolean())
list[0]->m_lStartOffset = STARTOFFSET_RESUME;
else if (optionResume.isDouble())
list[0]->SetProperty("StartPercent", optionResume);
else if (optionResume.isObject())
list[0]->m_lStartOffset = (int)(ParseTimeInSeconds(optionResume) * 75.0);
}
auto l = new CFileItemList(); //don't delete
l->Copy(list);
CApplicationMessenger::GetInstance().SendMsg(TMSG_MEDIA_PLAY, -1, -1, static_cast<void*>(l));
}
return ACK;
}
else
return InvalidParams;
}
return InvalidParams;
}
开发者ID:Karlson2k,项目名称:xbmc,代码行数:101,代码来源:PlayerOperations.cpp
示例14: SelectItem
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;
//.........这里部分代码省略.........
开发者ID:derobert,项目名称:debianlink-xbmc,代码行数:101,代码来源:GUIWindowFileManager.cpp
注:本文中的VECPLAYERCORES类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论