From 98f45e9ee6b4f5179ffed95a3d3c658cac3d798c Mon Sep 17 00:00:00 2001
From: Kai Sommerfeld <kai.sommerfeld@gmx.com>
Date: Sat, 24 Sep 2022 16:58:53 +0200
Subject: [PVR] Add CPVRGUIActionsRecordings to PVR components.

---
 xbmc/pvr/PVRComponentRegistration.cpp       |  3 +++
 xbmc/pvr/PVRContextMenus.cpp                | 14 ++++++++------
 xbmc/pvr/guilib/PVRGUIActions.h             |  5 +----
 xbmc/pvr/guilib/PVRGUIActionsRecordings.h   | 10 +++++++++-
 xbmc/pvr/guilib/PVRGUIActionsUtils.cpp      |  4 ++--
 xbmc/pvr/windows/GUIWindowPVRRecordings.cpp | 11 ++++++-----
 6 files changed, 29 insertions(+), 18 deletions(-)

diff --git a/xbmc/pvr/PVRComponentRegistration.cpp b/xbmc/pvr/PVRComponentRegistration.cpp
index 655f9aba40..c504bce64d 100644
--- a/xbmc/pvr/PVRComponentRegistration.cpp
+++ b/xbmc/pvr/PVRComponentRegistration.cpp
@@ -15,6 +15,7 @@
 #include "pvr/guilib/PVRGUIActionsParentalControl.h"
 #include "pvr/guilib/PVRGUIActionsPlayback.h"
 #include "pvr/guilib/PVRGUIActionsPowerManagement.h"
+#include "pvr/guilib/PVRGUIActionsRecordings.h"
 
 #include <memory>
 
@@ -29,10 +30,12 @@ CPVRComponentRegistration::CPVRComponentRegistration()
   RegisterComponent(std::make_shared<CPVRGUIActionsParentalControl>());
   RegisterComponent(std::make_shared<CPVRGUIActionsPlayback>());
   RegisterComponent(std::make_shared<CPVRGUIActionsPowerManagement>());
+  RegisterComponent(std::make_shared<CPVRGUIActionsRecordings>());
 }
 
 CPVRComponentRegistration::~CPVRComponentRegistration()
 {
+  DeregisterComponent(typeid(CPVRGUIActionsRecordings));
   DeregisterComponent(typeid(CPVRGUIActionsPowerManagement));
   DeregisterComponent(typeid(CPVRGUIActionsPlayback));
   DeregisterComponent(typeid(CPVRGUIActionsParentalControl));
diff --git a/xbmc/pvr/PVRContextMenus.cpp b/xbmc/pvr/PVRContextMenus.cpp
index c4a83ed33c..00269c5090 100644
--- a/xbmc/pvr/PVRContextMenus.cpp
+++ b/xbmc/pvr/PVRContextMenus.cpp
@@ -21,6 +21,7 @@
 #include "pvr/guilib/PVRGUIActions.h"
 #include "pvr/guilib/PVRGUIActionsEPG.h"
 #include "pvr/guilib/PVRGUIActionsPlayback.h"
+#include "pvr/guilib/PVRGUIActionsRecordings.h"
 #include "pvr/recordings/PVRRecording.h"
 #include "pvr/recordings/PVRRecordings.h"
 #include "pvr/recordings/PVRRecordingsPath.h"
@@ -174,7 +175,7 @@ namespace PVR
     bool ShowInformation::Execute(const CFileItemPtr& item) const
     {
       if (item->GetPVRRecordingInfoTag())
-        return CServiceBroker::GetPVRManager().GUIActions()->ShowRecordingInfo(item);
+        return CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().ShowRecordingInfo(item);
 
       return CServiceBroker::GetPVRManager().Get<PVR::GUI::EPG>().ShowEPGInfo(item);
     }
@@ -329,14 +330,14 @@ namespace PVR
       const std::shared_ptr<CPVRRecording> recording(item.GetPVRRecordingInfoTag());
       if (recording && !recording->IsDeleted() && !recording->IsInProgress())
       {
-        return CServiceBroker::GetPVRManager().GUIActions()->CanEditRecording(item);
+        return CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().CanEditRecording(item);
       }
       return false;
     }
 
     bool EditRecording::Execute(const CFileItemPtr& item) const
     {
-      return CServiceBroker::GetPVRManager().GUIActions()->EditRecording(item);
+      return CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().EditRecording(item);
     }
 
     ///////////////////////////////////////////////////////////////////////////////
@@ -374,7 +375,7 @@ namespace PVR
 
     bool DeleteRecording::Execute(const CFileItemPtr& item) const
     {
-      return CServiceBroker::GetPVRManager().GUIActions()->DeleteRecording(item);
+      return CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().DeleteRecording(item);
     }
 
     ///////////////////////////////////////////////////////////////////////////////
@@ -391,7 +392,7 @@ namespace PVR
 
     bool UndeleteRecording::Execute(const CFileItemPtr& item) const
     {
-      return CServiceBroker::GetPVRManager().GUIActions()->UndeleteRecording(item);
+      return CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().UndeleteRecording(item);
     }
 
     ///////////////////////////////////////////////////////////////////////////////
@@ -408,7 +409,8 @@ namespace PVR
 
     bool DeleteWatchedRecordings::Execute(const std::shared_ptr<CFileItem>& item) const
     {
-      return CServiceBroker::GetPVRManager().GUIActions()->DeleteWatchedRecordings(item);
+      return CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().DeleteWatchedRecordings(
+          item);
     }
 
     ///////////////////////////////////////////////////////////////////////////////
diff --git a/xbmc/pvr/guilib/PVRGUIActions.h b/xbmc/pvr/guilib/PVRGUIActions.h
index 897cb277dc..628b852351 100644
--- a/xbmc/pvr/guilib/PVRGUIActions.h
+++ b/xbmc/pvr/guilib/PVRGUIActions.h
@@ -8,15 +8,12 @@
 
 #pragma once
 
-#include "pvr/guilib/PVRGUIActionsRecordings.h"
 #include "pvr/guilib/PVRGUIActionsTimers.h"
 #include "pvr/guilib/PVRGUIActionsUtils.h"
 
 namespace PVR
 {
-class CPVRGUIActions : public CPVRGUIActionsRecordings,
-                       public CPVRGUIActionsTimers,
-                       public CPVRGUIActionsUtils
+class CPVRGUIActions : public CPVRGUIActionsTimers, public CPVRGUIActionsUtils
 {
 public:
   CPVRGUIActions() = default;
diff --git a/xbmc/pvr/guilib/PVRGUIActionsRecordings.h b/xbmc/pvr/guilib/PVRGUIActionsRecordings.h
index ad76c2b6e2..fef7ef839a 100644
--- a/xbmc/pvr/guilib/PVRGUIActionsRecordings.h
+++ b/xbmc/pvr/guilib/PVRGUIActionsRecordings.h
@@ -8,6 +8,8 @@
 
 #pragma once
 
+#include "pvr/IPVRComponent.h"
+
 #include <memory>
 
 class CFileItem;
@@ -16,7 +18,7 @@ namespace PVR
 {
 class CPVRRecording;
 
-class CPVRGUIActionsRecordings
+class CPVRGUIActionsRecordings : public IPVRComponent
 {
 public:
   CPVRGUIActionsRecordings() = default;
@@ -103,4 +105,10 @@ private:
   bool ShowRecordingSettings(const std::shared_ptr<CPVRRecording>& recording) const;
 };
 
+namespace GUI
+{
+// pretty scope and name
+using Recordings = CPVRGUIActionsRecordings;
+} // namespace GUI
+
 } // namespace PVR
diff --git a/xbmc/pvr/guilib/PVRGUIActionsUtils.cpp b/xbmc/pvr/guilib/PVRGUIActionsUtils.cpp
index 0377f889c4..2f5f8c234e 100644
--- a/xbmc/pvr/guilib/PVRGUIActionsUtils.cpp
+++ b/xbmc/pvr/guilib/PVRGUIActionsUtils.cpp
@@ -17,9 +17,9 @@
 #include "pvr/channels/PVRChannelGroupMember.h"
 #include "pvr/channels/PVRChannelGroupsContainer.h"
 #include "pvr/epg/EpgInfoTag.h"
-#include "pvr/guilib/PVRGUIActions.h" //! @todo decouple
 #include "pvr/guilib/PVRGUIActionsChannels.h"
 #include "pvr/guilib/PVRGUIActionsEPG.h"
+#include "pvr/guilib/PVRGUIActionsRecordings.h"
 #include "settings/Settings.h"
 
 #include <memory>
@@ -71,7 +71,7 @@ bool CPVRGUIActionsUtils::OnInfo(const std::shared_ptr<CFileItem>& item)
 {
   if (item->HasPVRRecordingInfoTag())
   {
-    return CServiceBroker::GetPVRManager().GUIActions()->ShowRecordingInfo(item);
+    return CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().ShowRecordingInfo(item);
   }
   else if (item->HasPVRChannelInfoTag() || item->HasPVRTimerInfoTag())
   {
diff --git a/xbmc/pvr/windows/GUIWindowPVRRecordings.cpp b/xbmc/pvr/windows/GUIWindowPVRRecordings.cpp
index 82415d677d..3587dfb2df 100644
--- a/xbmc/pvr/windows/GUIWindowPVRRecordings.cpp
+++ b/xbmc/pvr/windows/GUIWindowPVRRecordings.cpp
@@ -18,8 +18,8 @@
 #include "input/actions/Action.h"
 #include "input/actions/ActionIDs.h"
 #include "pvr/PVRManager.h"
-#include "pvr/guilib/PVRGUIActions.h"
 #include "pvr/guilib/PVRGUIActionsPlayback.h"
+#include "pvr/guilib/PVRGUIActionsRecordings.h"
 #include "pvr/recordings/PVRRecording.h"
 #include "pvr/recordings/PVRRecordings.h"
 #include "pvr/recordings/PVRRecordingsPath.h"
@@ -260,7 +260,8 @@ bool CGUIWindowPVRRecordingsBase::OnMessage(CGUIMessage& message)
                     bReturn = true;
                     break;
                   case SELECT_ACTION_INFO:
-                    CServiceBroker::GetPVRManager().GUIActions()->ShowRecordingInfo(item);
+                    CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().ShowRecordingInfo(
+                        item);
                     bReturn = true;
                     break;
                   default:
@@ -276,11 +277,11 @@ bool CGUIWindowPVRRecordingsBase::OnMessage(CGUIMessage& message)
               bReturn = true;
               break;
             case ACTION_SHOW_INFO:
-              CServiceBroker::GetPVRManager().GUIActions()->ShowRecordingInfo(item);
+              CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().ShowRecordingInfo(item);
               bReturn = true;
               break;
             case ACTION_DELETE_ITEM:
-              CServiceBroker::GetPVRManager().GUIActions()->DeleteRecording(item);
+              CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().DeleteRecording(item);
               bReturn = true;
               break;
             default:
@@ -346,7 +347,7 @@ bool CGUIWindowPVRRecordingsBase::OnContextButtonDeleteAll(CFileItem* item, CONT
 {
   if (button == CONTEXT_BUTTON_DELETE_ALL)
   {
-    CServiceBroker::GetPVRManager().GUIActions()->DeleteAllRecordingsFromTrash();
+    CServiceBroker::GetPVRManager().Get<PVR::GUI::Recordings>().DeleteAllRecordingsFromTrash();
     return true;
   }
 
-- 
cgit v1.2.3