bool CMusicGUIInfo::GetBool(bool& value, const CGUIListItem *gitem, int contextWindow, const CGUIInfo &info) const { switch (info.m_info) { /////////////////////////////////////////////////////////////////////////////////////////////// // MUSICPLAYER_* /////////////////////////////////////////////////////////////////////////////////////////////// case MUSICPLAYER_CONTENT: value = StringUtils::EqualsNoCase(info.GetData3(), "files"); return value; // if no match for this provider, other providers shall be asked. case MUSICPLAYER_HASPREVIOUS: // requires current playlist be PLAYLIST_MUSIC if (CServiceBroker::GetPlaylistPlayer().GetCurrentPlaylist() == PLAYLIST_MUSIC) { value = (CServiceBroker::GetPlaylistPlayer().GetCurrentSong() > 0); // not first song return true; } break; case MUSICPLAYER_HASNEXT: // requires current playlist be PLAYLIST_MUSIC if (CServiceBroker::GetPlaylistPlayer().GetCurrentPlaylist() == PLAYLIST_MUSIC) { value = (CServiceBroker::GetPlaylistPlayer().GetCurrentSong() < (CServiceBroker::GetPlaylistPlayer().GetPlaylist(PLAYLIST_MUSIC).size() - 1)); // not last song return true; } break; case MUSICPLAYER_PLAYLISTPLAYING: if (g_application.GetAppPlayer().IsPlayingAudio() && CServiceBroker::GetPlaylistPlayer().GetCurrentPlaylist() == PLAYLIST_MUSIC) { value = true; return true; } break; case MUSICPLAYER_EXISTS: { int index = info.GetData2(); if (info.GetData1() == 1) { // relative index if (CServiceBroker::GetPlaylistPlayer().GetCurrentPlaylist() != PLAYLIST_MUSIC) { value = false; return true; } index += CServiceBroker::GetPlaylistPlayer().GetCurrentSong(); } value = (index >= 0 && index < CServiceBroker::GetPlaylistPlayer().GetPlaylist(PLAYLIST_MUSIC).size()); return true; } /////////////////////////////////////////////////////////////////////////////////////////////// // MUSICPM_* /////////////////////////////////////////////////////////////////////////////////////////////// case MUSICPM_ENABLED: value = g_partyModeManager.IsEnabled(); return true; } return false; }
bool CMusicGUIInfo::GetPlaylistInfo(std::string& value, const CGUIInfo &info) const { PLAYLIST::CPlayList& playlist = CServiceBroker::GetPlaylistPlayer().GetPlaylist(PLAYLIST_MUSIC); if (playlist.size() < 1) return false; int index = info.GetData2(); if (info.GetData1() == 1) { // relative index (requires current playlist is PLAYLIST_MUSIC) if (CServiceBroker::GetPlaylistPlayer().GetCurrentPlaylist() != PLAYLIST_MUSIC) return false; index = CServiceBroker::GetPlaylistPlayer().GetNextSong(index); } if (index < 0 || index >= playlist.size()) return false; const CFileItemPtr playlistItem = playlist[index]; if (!playlistItem->GetMusicInfoTag()->Loaded()) { playlistItem->LoadMusicTag(); playlistItem->GetMusicInfoTag()->SetLoaded(); } // try to set a thumbnail if (!playlistItem->HasArt("thumb")) { CMusicThumbLoader loader; loader.LoadItem(playlistItem.get()); // still no thumb? then just the set the default cover if (!playlistItem->HasArt("thumb")) playlistItem->SetArt("thumb", "DefaultAlbumCover.png"); } if (info.m_info == MUSICPLAYER_PLAYLISTPOS) { value = StringUtils::Format("%i", index + 1); return true; } else if (info.m_info == MUSICPLAYER_COVER) { value = playlistItem->GetArt("thumb"); return true; } return GetLabel(value, playlistItem.get(), 0, CGUIInfo(info.m_info), nullptr); }
bool CPlayerGUIInfo::GetBool(bool& value, const CGUIListItem *gitem, int contextWindow, const CGUIInfo &info) const { const CFileItem *item = nullptr; if (gitem->IsFileItem()) item = static_cast<const CFileItem*>(gitem); switch (info.m_info) { /////////////////////////////////////////////////////////////////////////////////////////////// // PLAYER_* /////////////////////////////////////////////////////////////////////////////////////////////// case PLAYER_SHOWINFO: value = m_playerShowInfo; return true; case PLAYER_DISPLAY_AFTER_SEEK: value = GetDisplayAfterSeek(); return true; case PLAYER_SHOWTIME: value = m_playerShowTime; return true; case PLAYER_MUTED: value = (g_application.IsMuted() || g_application.GetVolume(false) <= VOLUME_MINIMUM); return true; case PLAYER_HAS_MEDIA: value = g_application.GetAppPlayer().IsPlaying(); return true; case PLAYER_HAS_AUDIO: value = g_application.GetAppPlayer().IsPlayingAudio(); return true; case PLAYER_HAS_VIDEO: value = g_application.GetAppPlayer().IsPlayingVideo(); return true; case PLAYER_HAS_GAME: value = g_application.GetAppPlayer().IsPlayingGame(); return true; case PLAYER_PLAYING: value = g_application.GetAppPlayer().GetPlaySpeed() == 1.0; return true; case PLAYER_PAUSED: value = g_application.GetAppPlayer().IsPausedPlayback(); return true; case PLAYER_REWINDING: value = g_application.GetAppPlayer().GetPlaySpeed() < 0; return true; case PLAYER_FORWARDING: value = g_application.GetAppPlayer().GetPlaySpeed() > 1.5; return true; case PLAYER_REWINDING_2x: value = g_application.GetAppPlayer().GetPlaySpeed() == -2; return true; case PLAYER_REWINDING_4x: value = g_application.GetAppPlayer().GetPlaySpeed() == -4; return true; case PLAYER_REWINDING_8x: value = g_application.GetAppPlayer().GetPlaySpeed() == -8; return true; case PLAYER_REWINDING_16x: value = g_application.GetAppPlayer().GetPlaySpeed() == -16; return true; case PLAYER_REWINDING_32x: value = g_application.GetAppPlayer().GetPlaySpeed() == -32; return true; case PLAYER_FORWARDING_2x: value = g_application.GetAppPlayer().GetPlaySpeed() == 2; return true; case PLAYER_FORWARDING_4x: value = g_application.GetAppPlayer().GetPlaySpeed() == 4; return true; case PLAYER_FORWARDING_8x: value = g_application.GetAppPlayer().GetPlaySpeed() == 8; return true; case PLAYER_FORWARDING_16x: value = g_application.GetAppPlayer().GetPlaySpeed() == 16; return true; case PLAYER_FORWARDING_32x: value = g_application.GetAppPlayer().GetPlaySpeed() == 32; return true; case PLAYER_CAN_PAUSE: value = g_application.GetAppPlayer().CanPause(); return true; case PLAYER_CAN_SEEK: value = g_application.GetAppPlayer().CanSeek(); return true; case PLAYER_SUPPORTS_TEMPO: value = g_application.GetAppPlayer().SupportsTempo(); return true; case PLAYER_IS_TEMPO: { value = (g_application.GetAppPlayer().GetPlayTempo() != 1.0 && g_application.GetAppPlayer().GetPlaySpeed() == 1.0); return true; } case PLAYER_CACHING: value = g_application.GetAppPlayer().IsCaching(); return true; case PLAYER_SEEKBAR: { CGUIDialog *seekBar = CServiceBroker::GetGUI()->GetWindowManager().GetDialog(WINDOW_DIALOG_SEEK_BAR); value = seekBar ? seekBar->IsDialogRunning() : false; return true; } case PLAYER_SEEKING: value = g_application.GetAppPlayer().GetSeekHandler().InProgress(); return true; case PLAYER_PASSTHROUGH: value = g_application.GetAppPlayer().IsPassthrough(); return true; case PLAYER_ISINTERNETSTREAM: if (item) { value = URIUtils::IsInternetStream(item->GetPath()); return true; } break; case PLAYER_HAS_PROGRAMS: value = (g_application.GetAppPlayer().GetProgramsCount() > 1) ? true : false; return true; case PLAYER_HASDURATION: value = g_application.GetTotalTime() > 0; return true; /////////////////////////////////////////////////////////////////////////////////////////////// // PLAYLIST_* /////////////////////////////////////////////////////////////////////////////////////////////// case PLAYLIST_ISRANDOM: { PLAYLIST::CPlayListPlayer& player = CServiceBroker::GetPlaylistPlayer(); int playlistid = info.GetData1(); if (info.GetData2() > 0 && playlistid > PLAYLIST_NONE) value = player.IsShuffled(playlistid); else value = player.IsShuffled(player.GetCurrentPlaylist()); return true; } case PLAYLIST_ISREPEAT: { PLAYLIST::CPlayListPlayer& player = CServiceBroker::GetPlaylistPlayer(); int playlistid = info.GetData1(); if (info.GetData2() > 0 && playlistid > PLAYLIST_NONE) value = (player.GetRepeat(playlistid) == PLAYLIST::REPEAT_ALL); else value = player.GetRepeat(player.GetCurrentPlaylist()) == PLAYLIST::REPEAT_ALL; return true; } case PLAYLIST_ISREPEATONE: { PLAYLIST::CPlayListPlayer& player = CServiceBroker::GetPlaylistPlayer(); int playlistid = info.GetData1(); if (info.GetData2() > 0 && playlistid > PLAYLIST_NONE) value = (player.GetRepeat(playlistid) == PLAYLIST::REPEAT_ONE); else value = player.GetRepeat(player.GetCurrentPlaylist()) == PLAYLIST::REPEAT_ONE; return true; } /////////////////////////////////////////////////////////////////////////////////////////////// // PLAYER_PROCESS_* /////////////////////////////////////////////////////////////////////////////////////////////// case PLAYER_PROCESS_VIDEOHWDECODER: value = CServiceBroker::GetDataCacheCore().IsVideoHwDecoder(); return true; /////////////////////////////////////////////////////////////////////////////////////////////// // LISTITEM_* /////////////////////////////////////////////////////////////////////////////////////////////// case LISTITEM_ISPLAYING: { if (item) { if (item->HasProperty("playlistposition")) { value = static_cast<int>(item->GetProperty("playlisttype").asInteger()) == CServiceBroker::GetPlaylistPlayer().GetCurrentPlaylist() && static_cast<int>(item->GetProperty("playlistposition").asInteger()) == CServiceBroker::GetPlaylistPlayer().GetCurrentSong(); return true; } else if (m_currentItem && !m_currentItem->GetPath().empty()) { if (!g_application.m_strPlayListFile.empty()) { //playlist file that is currently playing or the playlistitem that is currently playing. value = item->IsPath(g_application.m_strPlayListFile) || m_currentItem->IsSamePath(item); } else { value = m_currentItem->IsSamePath(item); } return true; } } break; } } return false; }
bool CSystemGUIInfo::GetBool(bool& value, const CGUIListItem *gitem, int contextWindow, const CGUIInfo &info) const { switch (info.m_info) { /////////////////////////////////////////////////////////////////////////////////////////////// // SYSTEM_* /////////////////////////////////////////////////////////////////////////////////////////////// case SYSTEM_ALWAYS_TRUE: value = true; return true; case SYSTEM_ALWAYS_FALSE: value = false; return true; case SYSTEM_ETHERNET_LINK_ACTIVE: // wtf: not implementated - always returns true?! value = true; return true; case SYSTEM_PLATFORM_LINUX: #if defined(TARGET_LINUX) || defined(TARGET_FREEBSD) value = true; #else value = false; #endif return true; case SYSTEM_PLATFORM_WINDOWS: #ifdef TARGET_WINDOWS value = true; #else value = false; #endif return true; case SYSTEM_PLATFORM_UWP: #ifdef TARGET_WINDOWS_STORE value = true; #else value = false; #endif return true; case SYSTEM_PLATFORM_DARWIN: #ifdef TARGET_DARWIN value = true; #else value = false; #endif return true; case SYSTEM_PLATFORM_DARWIN_OSX: #ifdef TARGET_DARWIN_OSX value = true; #else value = false; #endif return true; case SYSTEM_PLATFORM_DARWIN_IOS: #ifdef TARGET_DARWIN_IOS value = true; #else value = false; #endif return true; case SYSTEM_PLATFORM_ANDROID: #if defined(TARGET_ANDROID) value = true; #else value = false; #endif return true; case SYSTEM_PLATFORM_LINUX_RASPBERRY_PI: #if defined(TARGET_RASPBERRY_PI) value = true; #else value = false; #endif return true; case SYSTEM_MEDIA_DVD: value = g_mediaManager.IsDiscInDrive(); return true; case SYSTEM_MEDIA_AUDIO_CD: #ifdef HAS_DVD_DRIVE if (g_mediaManager.IsDiscInDrive()) { MEDIA_DETECT::CCdInfo *pCdInfo = g_mediaManager.GetCdInfo(); value = pCdInfo && (pCdInfo->IsAudio(1) || pCdInfo->IsCDExtra(1) || pCdInfo->IsMixedMode(1)); } else #endif { value = false; } return true; #ifdef HAS_DVD_DRIVE case SYSTEM_DVDREADY: value = g_mediaManager.GetDriveStatus() != DRIVE_NOT_READY; return true; case SYSTEM_TRAYOPEN: value = g_mediaManager.GetDriveStatus() == DRIVE_OPEN; return true; #endif case SYSTEM_CAN_POWERDOWN: value = CServiceBroker::GetPowerManager().CanPowerdown(); return true; case SYSTEM_CAN_SUSPEND: value = CServiceBroker::GetPowerManager().CanSuspend(); return true; case SYSTEM_CAN_HIBERNATE: value = CServiceBroker::GetPowerManager().CanHibernate(); return true; case SYSTEM_CAN_REBOOT: value = CServiceBroker::GetPowerManager().CanReboot(); return true; case SYSTEM_SCREENSAVER_ACTIVE: value = g_application.IsInScreenSaver(); return true; case SYSTEM_DPMS_ACTIVE: value = g_application.IsDPMSActive(); return true; case SYSTEM_HASLOCKS: value = CServiceBroker::GetSettingsComponent()->GetProfileManager()->GetMasterProfile().getLockMode() != LOCK_MODE_EVERYONE; return true; case SYSTEM_HAS_PVR: value = true; return true; case SYSTEM_HAS_PVR_ADDON: { ADDON::VECADDONS pvrAddons; ADDON::CBinaryAddonCache &addonCache = CServiceBroker::GetBinaryAddonCache(); addonCache.GetAddons(pvrAddons, ADDON::ADDON_PVRDLL); value = (pvrAddons.size() > 0); return true; } case SYSTEM_HAS_CMS: #if defined(HAS_GL) || defined(HAS_DX) value = true; #else value = false; #endif return true; case SYSTEM_ISMASTER: value = CServiceBroker::GetSettingsComponent()->GetProfileManager()->GetMasterProfile().getLockMode() != LOCK_MODE_EVERYONE && g_passwordManager.bMasterUser; return true; case SYSTEM_ISFULLSCREEN: value = CServiceBroker::GetWinSystem()->IsFullScreen(); return true; case SYSTEM_ISSTANDALONE: value = g_application.IsStandAlone(); return true; case SYSTEM_ISINHIBIT: value = g_application.IsIdleShutdownInhibited(); return true; case SYSTEM_HAS_SHUTDOWN: value = (CServiceBroker::GetSettingsComponent()->GetSettings()->GetInt(CSettings::SETTING_POWERMANAGEMENT_SHUTDOWNTIME) > 0); return true; case SYSTEM_LOGGEDON: value = !(CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow() == WINDOW_LOGIN_SCREEN); return true; case SYSTEM_SHOW_EXIT_BUTTON: value = CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_showExitButton; return true; case SYSTEM_HAS_LOGINSCREEN: value = CServiceBroker::GetSettingsComponent()->GetProfileManager()->UsingLoginScreen(); return true; case SYSTEM_INTERNET_STATE: { g_sysinfo.GetInfo(info.m_info); value = g_sysinfo.HasInternet(); return true; } case SYSTEM_IDLE_TIME: value = g_application.GlobalIdleTime() >= static_cast<int>(info.GetData1()); return true; case SYSTEM_HAS_CORE_ID: value = g_cpuInfo.HasCoreId(info.GetData1()); return true; case SYSTEM_DATE: { if (info.GetData2() == -1) // info doesn't contain valid startDate return false; const CDateTime date = CDateTime::GetCurrentDateTime(); int currentDate = date.GetMonth() * 100 + date.GetDay(); int startDate = info.GetData1(); int stopDate = info.GetData2(); if (stopDate < startDate) value = currentDate >= startDate || currentDate < stopDate; else value = currentDate >= startDate && currentDate < stopDate; return true; } case SYSTEM_TIME: { int currentTime = CDateTime::GetCurrentDateTime().GetMinuteOfDay(); int startTime = info.GetData1(); int stopTime = info.GetData2(); if (stopTime < startTime) value = currentTime >= startTime || currentTime < stopTime; else value = currentTime >= startTime && currentTime < stopTime; return true; } case SYSTEM_ALARM_LESS_OR_EQUAL: { int time = std::lrint(g_alarmClock.GetRemaining(info.GetData3())); int timeCompare = info.GetData2(); if (time > 0) value = timeCompare >= time; else value = false; return true; } case SYSTEM_HAS_ALARM: value = g_alarmClock.HasAlarm(info.GetData3()); return true; case SYSTEM_GET_BOOL: value = CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(info.GetData3()); return true; case SYSTEM_SETTING: { if (StringUtils::EqualsNoCase(info.GetData3(), "hidewatched")) { CGUIMediaWindow* window = GUIINFO::GetMediaWindow(contextWindow); if (window) { value = CMediaSettings::GetInstance().GetWatchedMode(window->CurrentDirectory().GetContent()) == WatchedModeUnwatched; return true; } } break; } } return false; }