本文整理汇总了C++中CFileItem::IsAudio方法的典型用法代码示例。如果您正苦于以下问题:C++ CFileItem::IsAudio方法的具体用法?C++ CFileItem::IsAudio怎么用?C++ CFileItem::IsAudio使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFileItem
的用法示例。
在下文中一共展示了CFileItem::IsAudio方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetPlayers
void CPlayerCoreFactory::GetPlayers(const CFileItem& item, std::vector<std::string>&players) const
{
CURL url(item.GetPath());
CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers(%s)", CURL::GetRedacted(item.GetPath()).c_str());
std::vector<std::string>validPlayers;
GetPlayers(validPlayers);
// Process rules
for (auto rule: m_vecCoreSelectionRules)
rule->GetPlayers(item, validPlayers, players);
CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: matched {0} rules with players", players.size());
// Process defaults
// Set video default player. Check whether it's video first (overrule audio and
// game check). Also push these players in case it is NOT audio or game either.
if (item.IsVideo() || (!item.IsAudio() && !item.IsGame()))
{
int idx = GetPlayerIndex("videodefaultplayer");
if (idx > -1)
{
std::string eVideoDefault = GetPlayerName(idx);
CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: adding videodefaultplayer (%s)", eVideoDefault.c_str());
players.push_back(eVideoDefault);
}
GetPlayers(players, false, true); // Video-only players
GetPlayers(players, true, true); // Audio & video players
}
// Set audio default player
// Pushback all audio players in case we don't know the type
if (item.IsAudio())
{
int idx = GetPlayerIndex("audiodefaultplayer");
if (idx > -1)
{
std::string eAudioDefault = GetPlayerName(idx);
CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: adding audiodefaultplayer (%s)", eAudioDefault.c_str());
players.push_back(eAudioDefault);
}
GetPlayers(players, true, false); // Audio-only players
GetPlayers(players, true, true); // Audio & video players
}
if (item.IsGame())
{
CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: adding retroplayer");
players.push_back("RetroPlayer");
}
CLog::Log(LOGDEBUG, "CPlayerCoreFactory::GetPlayers: added {0} players", players.size());
}
示例2: MediaPlay
void CApplicationMessenger::MediaPlay(string filename)
{
CFileItem item;
item.m_strPath = filename;
item.m_bIsFolder = false;
if (item.IsAudio())
item.SetMusicThumb();
else
item.SetVideoThumb();
item.FillInDefaultIcon();
MediaPlay(item);
}
示例3: GetPlayers
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());
}
示例4: 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
//.........这里部分代码省略.........
示例5: GetPlayers
void CPlayerSelectionRule::GetPlayers(const CFileItem& item, std::vector<std::string>&validPlayers, std::vector<std::string>&players)
{
CLog::Log(LOGDEBUG, "CPlayerSelectionRule::GetPlayers: considering rule: %s", m_name.c_str());
if (m_bStreamDetails && !item.HasVideoInfoTag())
return;
if (m_tAudio >= 0 && (m_tAudio > 0) != item.IsAudio())
return;
if (m_tVideo >= 0 && (m_tVideo > 0) != item.IsVideo())
return;
if (m_tInternetStream >= 0 && (m_tInternetStream > 0) != item.IsInternetStream())
return;
if (m_tRemote >= 0 && (m_tRemote > 0) != item.IsRemote())
return;
if (m_tBD >= 0 && (m_tBD > 0) != (item.IsBDFile() && item.IsOnDVD()))
return;
if (m_tDVD >= 0 && (m_tDVD > 0) != item.IsDVD())
return;
if (m_tDVDFile >= 0 && (m_tDVDFile > 0) != item.IsDVDFile())
return;
if (m_tDVDImage >= 0 && (m_tDVDImage > 0) != item.IsDiscImage())
return;
CRegExp regExp(false, CRegExp::autoUtf8);
if (m_bStreamDetails)
{
if (!item.GetVideoInfoTag()->HasStreamDetails())
{
CLog::Log(LOGDEBUG, "CPlayerSelectionRule::GetPlayers: cannot check rule: %s, no StreamDetails", m_name.c_str());
return;
}
CStreamDetails streamDetails = item.GetVideoInfoTag()->m_streamDetails;
if (CompileRegExp(m_audioCodec, regExp) && !MatchesRegExp(streamDetails.GetAudioCodec(), regExp))
return;
std::stringstream itoa;
itoa << streamDetails.GetAudioChannels();
std::string audioChannelsstr = itoa.str();
if (CompileRegExp(m_audioChannels, regExp) && !MatchesRegExp(audioChannelsstr, regExp))
return;
if (CompileRegExp(m_videoCodec, regExp) && !MatchesRegExp(streamDetails.GetVideoCodec(), regExp))
return;
if (CompileRegExp(m_videoResolution, regExp) &&
!MatchesRegExp(CStreamDetails::VideoDimsToResolutionDescription(streamDetails.GetVideoWidth(), streamDetails.GetVideoHeight()), regExp))
return;
if (CompileRegExp(m_videoAspect, regExp) &&
!MatchesRegExp(CStreamDetails::VideoAspectToAspectDescription(streamDetails.GetVideoAspect()), regExp))
return;
}
CURL url(item.GetPath());
if (CompileRegExp(m_fileTypes, regExp) && !MatchesRegExp(url.GetFileType(), regExp))
return;
if (CompileRegExp(m_protocols, regExp) && !MatchesRegExp(url.GetProtocol(), regExp))
return;
if (CompileRegExp(m_mimeTypes, regExp) && !MatchesRegExp(item.GetMimeType(), regExp))
return;
if (CompileRegExp(m_fileName, regExp) && !MatchesRegExp(item.GetPath(), regExp))
return;
CLog::Log(LOGDEBUG, "CPlayerSelectionRule::GetPlayers: matches rule: %s", m_name.c_str());
for (unsigned int i = 0; i < vecSubRules.size(); i++)
vecSubRules[i]->GetPlayers(item, validPlayers, players);
if (std::find(validPlayers.begin(), validPlayers.end(), m_playerName) != validPlayers.end())
{
CLog::Log(LOGDEBUG, "CPlayerSelectionRule::GetPlayers: adding player: %s for rule: %s", m_playerName.c_str(), m_name.c_str());
players.push_back(m_playerName);
}
}
示例6: GetContextButtons
void CGUIWindowMusicNav::GetContextButtons(int itemNumber, CContextButtons &buttons)
{
CGUIWindowMusicBase::GetContextButtons(itemNumber, buttons);
CGUIDialogMusicScan *musicScan = (CGUIDialogMusicScan *)m_gWindowManager.GetWindow(WINDOW_DIALOG_MUSIC_SCAN);
CFileItem *item = (itemNumber >= 0 && itemNumber < m_vecItems->Size()) ? m_vecItems->Get(itemNumber) : NULL;
if (item && (item->GetExtraInfo().Find("lastfm") < 0))
{
// are we in the playlists location?
bool inPlaylists = m_vecItems->m_strPath.Equals(CUtil::MusicPlaylistsLocation()) ||
m_vecItems->m_strPath.Equals("special://musicplaylists/");
CMusicDatabaseDirectory dir;
SScraperInfo info;
m_musicdatabase.GetScraperForPath(item->m_strPath,info);
// enable music info button on an album or on a song.
if (item->IsAudio() && !item->IsPlayList() && !item->IsSmartPlayList() &&
!item->IsLastFM() && !item->IsShoutCast())
{
buttons.Add(CONTEXT_BUTTON_SONG_INFO, 658);
}
else if (item->IsVideoDb())
{
if (!item->m_bIsFolder) // music video
buttons.Add(CONTEXT_BUTTON_INFO, 20393);
if (item->m_strPath.Left(14).Equals("videodb://3/4/") &&
item->m_strPath.size() > 14 && item->m_bIsFolder)
{
long idArtist = m_musicdatabase.GetArtistByName(m_vecItems->Get(itemNumber)->GetLabel());
if (idArtist > - 1)
buttons.Add(CONTEXT_BUTTON_INFO,21891);
}
}
else if (!inPlaylists && (dir.HasAlbumInfo(item->m_strPath)||
dir.IsArtistDir(item->m_strPath) ) &&
!dir.IsAllItem(item->m_strPath) && !item->IsParentFolder() &&
!item->IsLastFM() && !item->IsShoutCast() &&
!item->m_strPath.Left(14).Equals("musicsearch://"))
{
if (dir.IsArtistDir(item->m_strPath))
buttons.Add(CONTEXT_BUTTON_INFO, 21891);
else
buttons.Add(CONTEXT_BUTTON_INFO, 13351);
}
// enable query all albums button only in album view
if (dir.HasAlbumInfo(item->m_strPath) && !dir.IsAllItem(item->m_strPath) &&
item->m_bIsFolder && !item->IsVideoDb() && !item->IsParentFolder() &&
!item->IsLastFM() && !item->IsShoutCast() &&
!item->m_strPath.Left(14).Equals("musicsearch://"))
{
buttons.Add(CONTEXT_BUTTON_INFO_ALL, 20059);
}
// enable query all artist button only in album view
if (dir.IsArtistDir(item->m_strPath) && !dir.IsAllItem(item->m_strPath) &&
item->m_bIsFolder && !item->IsVideoDb() && !info.strContent.IsEmpty())
{
buttons.Add(CONTEXT_BUTTON_INFO_ALL, 21884);
}
// turn off set artist image if not at artist listing.
if (dir.IsArtistDir(item->m_strPath) && !dir.IsAllItem(item->m_strPath) ||
(item->m_strPath.Left(14).Equals("videodb://3/4/") &&
item->m_strPath.size() > 14 && item->m_bIsFolder))
{
buttons.Add(CONTEXT_BUTTON_SET_ARTIST_THUMB, 13359);
}
if (m_vecItems->m_strPath.Equals("plugin://music/"))
buttons.Add(CONTEXT_BUTTON_SET_PLUGIN_THUMB, 1044);
//Set default or clear default
NODE_TYPE nodetype = dir.GetDirectoryType(item->m_strPath);
if (!item->IsParentFolder() && !inPlaylists &&
(nodetype == NODE_TYPE_ROOT ||
nodetype == NODE_TYPE_OVERVIEW ||
nodetype == NODE_TYPE_TOP100))
{
if (!item->m_strPath.Equals(g_settings.m_defaultMusicLibSource))
buttons.Add(CONTEXT_BUTTON_SET_DEFAULT, 13335); // set default
if (strcmp(g_settings.m_defaultMusicLibSource, ""))
buttons.Add(CONTEXT_BUTTON_CLEAR_DEFAULT, 13403); // clear default
}
NODE_TYPE childtype = dir.GetDirectoryChildType(item->m_strPath);
if (childtype == NODE_TYPE_ALBUM || childtype == NODE_TYPE_ARTIST ||
nodetype == NODE_TYPE_GENRE || nodetype == NODE_TYPE_ALBUM)
{
// we allow the user to set content for
// 1. general artist and album nodes
// 2. specific per genre
// 3. specific per artist
// 4. specific per album
buttons.Add(CONTEXT_BUTTON_SET_CONTENT,20195);
}
if (item->HasMusicInfoTag() && item->GetMusicInfoTag()->GetArtist().size() > 0)
{
CVideoDatabase database;
database.Open();
if (database.GetMusicVideoArtistByName(item->GetMusicInfoTag()->GetArtist()) > -1)
//.........这里部分代码省略.........
示例7: RunDisc
//.........这里部分代码省略.........
// check video first
if (!nAddedToPlaylist && !bPlaying && (bypassSettings || g_guiSettings.GetBool("autorun.video")))
{
// stack video files
CFileItemList tempItems;
tempItems.Append(vecItems);
tempItems.Stack();
CFileItemList itemlist;
for (int i = 0; i < tempItems.Size(); i++)
{
CFileItem *pItem = tempItems[i];
if (!pItem->m_bIsFolder && pItem->IsVideo())
{
bPlaying = true;
if (pItem->IsStack())
{
// TODO: remove this once the app/player is capable of handling stacks immediately
CStackDirectory dir;
CFileItemList items;
dir.GetDirectory(pItem->m_strPath, items);
for (int i = 0; i < items.Size(); i++)
{
itemlist.Add(new CFileItem(*items[i]));
}
}
else
itemlist.Add(new CFileItem(*pItem));
}
}
if (itemlist.Size())
{
if (!bAllowVideo)
{
if (!bypassSettings)
return false;
if (m_gWindowManager.GetActiveWindow() != WINDOW_VIDEO_FILES)
if (!g_passwordManager.IsMasterLockUnlocked(true))
return false;
}
g_playlistPlayer.ClearPlaylist(PLAYLIST_VIDEO);
g_playlistPlayer.Add(PLAYLIST_VIDEO, itemlist);
g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_VIDEO);
g_playlistPlayer.Play(0);
}
}
// then music
if (!bPlaying && (bypassSettings || g_guiSettings.GetBool("autorun.music")) && bAllowMusic)
{
for (int i = 0; i < vecItems.Size(); i++)
{
CFileItem *pItem = vecItems[i];
if (!pItem->m_bIsFolder && pItem->IsAudio())
{
nAddedToPlaylist++;
g_playlistPlayer.Add(PLAYLIST_MUSIC, pItem);
}
}
}
// and finally pictures
if (!nAddedToPlaylist && !bPlaying && (bypassSettings || g_guiSettings.GetBool("autorun.pictures")) && bAllowPictures)
{
for (int i = 0; i < vecItems.Size(); i++)
{
CFileItem *pItem = vecItems[i];
if (!pItem->m_bIsFolder && pItem->IsPicture())
{
bPlaying = true;
CStdString strExec;
strExec.Format("XBMC.RecursiveSlideShow(%s)", strDrive.c_str());
CUtil::ExecBuiltIn(strExec);
break;
}
}
}
// check subdirs if we are not playing yet
if (!bPlaying)
{
for (int i = 0; i < vecItems.Size(); i++)
{
CFileItem* pItem = vecItems[i];
if (pItem->m_bIsFolder)
{
if (pItem->m_strPath != "." && pItem->m_strPath != ".." )
{
if (RunDisc(pDir, pItem->m_strPath, nAddedToPlaylist, false, bypassSettings))
{
bPlaying = true;
break;
}
}
}
}
}
return bPlaying;
}
示例8: GetPlayers
//.........这里部分代码省略.........
// ugly hack for ReplayTV. our filesystem is broken against real ReplayTV's (not the psuevdo 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);
// only dvdplayer can handle these normally
if (url.GetFileType().Equals("sdp") ||
url.GetFileType().Equals("asf"))
vecCores.push_back(EPC_DVDPLAYER);
if ( item.IsInternetStream() )
{
CStdString content = item.GetContentType();
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()))
{
vecCores.push_back(EPC_DVDPLAYER);
}
if( PAPlayer::HandlesType(url.GetFileType()) )
{
bool bAdd = true;
if (url.GetProtocol().Equals("mms"))
{
bAdd = false;
}
else if (item.IsType(".wma"))
{
DVDPlayerCodec codec;
if (!codec.Init(item.m_strPath,2048))
bAdd = false;
codec.DeInit();
}
if (bAdd)
{
if(!g_audioConfig.UseDigitalOutput())
{
vecCores.push_back(EPC_PAPLAYER);
}
//else if( ( url.GetFileType().Equals("ac3") && g_audioConfig.GetAC3Enabled() )
// || ( url.GetFileType().Equals("dts") && g_audioConfig.GetDTSEnabled() ) )
//{
// vecCores.push_back(EPC_DVDPLAYER);
//}
//else
{
vecCores.push_back(EPC_PAPLAYER);
}
}
}
//Add all normal players last so you can force them, should you want to
if ( item.IsAudio() )
vecCores.push_back(EPC_PAPLAYER);
vecCores.push_back(EPC_DVDPLAYER);
/* make our list unique, presevering first added players */
unique(vecCores);
}
示例9: ProcessMessage
//.........这里部分代码省略.........
case TMSG_MEDIA_PLAY:
{
// first check if we were called from the PlayFile() function
if (pMsg->lpVoid && pMsg->dwParam2 == 0)
{
CFileItem *item = (CFileItem *)pMsg->lpVoid;
g_application.PlayFile(*item, pMsg->dwParam1 != 0);
delete item;
return;
}
// restore to previous window if needed
if (g_windowManager.GetActiveWindow() == WINDOW_SLIDESHOW ||
g_windowManager.GetActiveWindow() == WINDOW_FULLSCREEN_VIDEO ||
g_windowManager.GetActiveWindow() == WINDOW_VISUALISATION)
g_windowManager.PreviousWindow();
g_application.ResetScreenSaver();
g_application.WakeUpScreenSaverAndDPMS();
//g_application.StopPlaying();
// play file
CFileItem *item;
if (pMsg->lpVoid && pMsg->dwParam2 == 1)
{
item = (CFileItem *)pMsg->lpVoid;
}
else
{
item = new CFileItem(pMsg->strParam, false);
}
if (item->IsAudio())
item->SetMusicThumb();
else
item->SetVideoThumb();
item->FillInDefaultIcon();
g_application.PlayMedia(*item, item->IsAudio() ? PLAYLIST_MUSIC : PLAYLIST_VIDEO); //Note: this will play playlists always in the temp music playlist (default 2nd parameter), maybe needs some tweaking.
delete item;
}
break;
case TMSG_MEDIA_RESTART:
g_application.Restart(true);
break;
case TMSG_MEDIA_QUEUE_NEXT_ITEM:
{
CFileItem *item = (CFileItem *)pMsg->lpVoid;
//g_application.QueueNextMedia(*item);
delete item;
return;
}
case TMSG_MEDIA_UPDATE_ITEM:
{
CGUIMessage msg(GUI_MSG_NOTIFY_ALL, 0, 0, GUI_MSG_UPDATE_ITEM, 0);
msg.SetItem(CFileItemPtr((CFileItem*)pMsg->lpVoid));
g_windowManager.SendMessage(msg);
return;
}