From 2ef3cc6a372704e51a9ee52d25dbf1d6e58db246 Mon Sep 17 00:00:00 2001 From: Dale Hamel Date: Tue, 16 Apr 2019 21:25:17 -0400 Subject: [PATCH] Add new timeline states to try and bring in line with new API --- plex/Client/PlexTimeline.cpp | 6 +++--- plex/Client/PlexTimeline.h | 2 +- plex/Client/PlexTimelineManager.cpp | 4 ++-- plex/PlexTypes.h | 4 +++- plex/PlexUtils.cpp | 20 +++++++++++++++----- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/plex/Client/PlexTimeline.cpp b/plex/Client/PlexTimeline.cpp index 1df46a968..2801da1b8 100644 --- a/plex/Client/PlexTimeline.cpp +++ b/plex/Client/PlexTimeline.cpp @@ -141,10 +141,10 @@ CUrlOptions CPlexTimeline::getTimeline(bool forServer) controllable.push_back("skipNext"); } - if (controllable.size() > 0 && m_state != PLEX_MEDIA_STATE_STOPPED) + if (controllable.size() > 0 && m_state != PLEX_MEDIA_STATE_FINISHED) options.AddOption("controllable", StringUtils::Join(controllable, ",")); - if (g_application.m_pPlayer->IsPlaying() && m_state != PLEX_MEDIA_STATE_STOPPED) + if (g_application.m_pPlayer->IsPlaying() && m_state != PLEX_MEDIA_STATE_FINISHED) { options.AddOption("volume", g_application.GetVolume()); @@ -174,7 +174,7 @@ CUrlOptions CPlexTimeline::getTimeline(bool forServer) } } - if (m_state != PLEX_MEDIA_STATE_STOPPED) + if (m_state != PLEX_MEDIA_STATE_FINISHED) { std::string location = "navigation"; diff --git a/plex/Client/PlexTimeline.h b/plex/Client/PlexTimeline.h index dff3dbb26..d99fba169 100644 --- a/plex/Client/PlexTimeline.h +++ b/plex/Client/PlexTimeline.h @@ -11,7 +11,7 @@ class CPlexTimeline { public: - CPlexTimeline(ePlexMediaType type = PLEX_MEDIA_TYPE_UNKNOWN) : m_state(PLEX_MEDIA_STATE_STOPPED), m_continuing(false), m_type(type) {} + CPlexTimeline(ePlexMediaType type = PLEX_MEDIA_TYPE_UNKNOWN) : m_state(PLEX_MEDIA_STATE_FINISHED), m_continuing(false), m_type(type) {} CPlexTimeline(const CPlexTimeline& other) { diff --git a/plex/Client/PlexTimelineManager.cpp b/plex/Client/PlexTimelineManager.cpp index 82d8fbe77..70dd6bb46 100644 --- a/plex/Client/PlexTimelineManager.cpp +++ b/plex/Client/PlexTimelineManager.cpp @@ -142,7 +142,7 @@ void CPlexTimelineManager::ReportProgress(const CFileItemPtr &newItem, ePlexMedi if ((oldTimeline && !oldTimeline->getItem()) || timeline->getItem()->GetPath() != oldTimeline->getItem()->GetPath()) { - if (oldTimeline->getState() != PLEX_MEDIA_STATE_STOPPED && oldTimeline) + if (oldTimeline->getState() != PLEX_MEDIA_STATE_CANCELLED && oldTimeline) { CFileItemPtr oldItem = oldTimeline->getItem(); if (oldItem->HasProperty("playQueueID") && newItem->HasProperty("playQueueID") && oldItem->GetProperty("playQueueID").asString() == newItem->GetProperty("playQueueID").asString()) @@ -190,7 +190,7 @@ void CPlexTimelineManager::ReportProgress(const CFileItemPtr &newItem, ePlexMedi ReportProgress(timeline, reallyForce); - if (timeline->getState() == PLEX_MEDIA_STATE_STOPPED) + if (timeline->getState() == PLEX_MEDIA_STATE_FINISHED) // || Should this OR with cancelled? { /* Now we need to make sure that if this item is cached it's removed */ if (timeline->getItem()) diff --git a/plex/PlexTypes.h b/plex/PlexTypes.h index 74f4cd86e..223f62ce2 100644 --- a/plex/PlexTypes.h +++ b/plex/PlexTypes.h @@ -67,7 +67,9 @@ enum ePlexMediaType { }; enum ePlexMediaState { - PLEX_MEDIA_STATE_STOPPED, + PLEX_MEDIA_STATE_FINISHED, + PLEX_MEDIA_STATE_CANCELLED, + PLEX_MEDIA_STATE_ERROR, PLEX_MEDIA_STATE_PLAYING, PLEX_MEDIA_STATE_BUFFERING, PLEX_MEDIA_STATE_PAUSED diff --git a/plex/PlexUtils.cpp b/plex/PlexUtils.cpp index bc59fc3ac..b5aea8df2 100755 --- a/plex/PlexUtils.cpp +++ b/plex/PlexUtils.cpp @@ -784,8 +784,14 @@ std::string PlexUtils::GetMediaStateString(ePlexMediaState state) { CStdString strstate; switch (state) { - case PLEX_MEDIA_STATE_STOPPED: - strstate = "stopped"; + case PLEX_MEDIA_STATE_FINISHED: + strstate = "finished"; + break; + case PLEX_MEDIA_STATE_CANCELLED: + strstate = "cancelled"; + break; + case PLEX_MEDIA_STATE_ERROR: + strstate = "error"; break; case PLEX_MEDIA_STATE_BUFFERING: strstate = "buffering"; @@ -802,8 +808,12 @@ std::string PlexUtils::GetMediaStateString(ePlexMediaState state) /////////////////////////////////////////////////////////////////////////////////////////////////// ePlexMediaState PlexUtils::GetMediaStateFromString(const std::string& statestr) -{ if (statestr == "stopped") - return PLEX_MEDIA_STATE_STOPPED; +{ if (statestr == "finished") + return PLEX_MEDIA_STATE_FINISHED; + else if (statestr == "cancelled") + return PLEX_MEDIA_STATE_CANCELLED; + else if (statestr == "error") + return PLEX_MEDIA_STATE_ERROR; else if (statestr == "buffering") return PLEX_MEDIA_STATE_BUFFERING; else if (statestr == "playing") @@ -811,7 +821,7 @@ ePlexMediaState PlexUtils::GetMediaStateFromString(const std::string& statestr) else if (statestr == "paused") return PLEX_MEDIA_STATE_PAUSED; - return PLEX_MEDIA_STATE_STOPPED; + return PLEX_MEDIA_STATE_FINISHED; } ///////////////////////////////////////////////////////////////////////////////////////////////////