xbmc
PVRChannelGroupInternal.h
1 /*
2  * Copyright (C) 2012-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "pvr/channels/PVRChannelGroup.h"
12 
13 #include <memory>
14 #include <vector>
15 
16 namespace PVR
17 {
18  enum class PVREvent;
19 
20  class CPVRChannel;
21  class CPVRChannelNumber;
22 
24  {
25  public:
26  CPVRChannelGroupInternal() = delete;
27 
32  explicit CPVRChannelGroupInternal(bool bRadio);
33 
38  explicit CPVRChannelGroupInternal(const CPVRChannelsPath& path);
39 
40  ~CPVRChannelGroupInternal() override;
41 
46  size_t GetNumHiddenChannels() const override { return m_iHiddenChannels; }
47 
51  bool IsGroupMember(const std::shared_ptr<CPVRChannel>& channel) const override;
52 
56  bool AppendToGroup(const std::shared_ptr<CPVRChannel>& channel) override;
57 
61  bool RemoveFromGroup(const std::shared_ptr<CPVRChannel>& channel) override;
62 
66  void CheckGroupName();
67 
73  bool CreateChannelEpgs(bool bForce = false) override;
74 
75  protected:
81  std::vector<std::shared_ptr<CPVRChannelGroupMember>> RemoveDeletedGroupMembers(
82  const std::vector<std::shared_ptr<CPVRChannelGroupMember>>& groupMembers) override;
83 
89  bool UpdateFromClients(const std::vector<std::shared_ptr<CPVRClient>>& clients) override;
90 
97  bool LoadFromDatabase(
98  const std::map<std::pair<int, int>, std::shared_ptr<CPVRChannel>>& channels,
99  const std::vector<std::shared_ptr<CPVRClient>>& clients) override;
100 
104  void Unload() override;
105 
109  void UpdateChannelPaths();
110 
113  private:
114  void OnPVRManagerEvent(const PVREvent& event);
115  };
116 }
bool CreateChannelEpgs(bool bForce=false) override
Create an EPG table for each channel.
Definition: PVRChannelGroupInternal.cpp:227
void Unload() override
Clear all data.
Definition: PVRChannelGroupInternal.cpp:76
bool IsGroupMember(const std::shared_ptr< CPVRChannel > &channel) const override
Definition: PVRChannelGroupInternal.cpp:222
bool UpdateFromClients(const std::vector< std::shared_ptr< CPVRClient >> &clients) override
Update data with &#39;all channels&#39; group members from the given clients, sync with local data...
Definition: PVRChannelGroupInternal.cpp:108
Definition: ContextMenuManager.h:24
size_t m_iHiddenChannels
Definition: PVRChannelGroupInternal.h:111
void UpdateChannelPaths()
Update the vfs paths of all channels.
Definition: PVRChannelGroupInternal.cpp:95
Definition: PVRChannelsPath.h:17
bool RemoveFromGroup(const std::shared_ptr< CPVRChannel > &channel) override
Definition: PVRChannelGroupInternal.cpp:207
bool AppendToGroup(const std::shared_ptr< CPVRChannel > &channel) override
Definition: PVRChannelGroupInternal.cpp:184
void CheckGroupName()
Check whether the group name is still correct after the language setting changed. ...
Definition: PVRChannelGroupInternal.cpp:82
size_t GetNumHiddenChannels() const override
The amount of channels in this container.
Definition: PVRChannelGroupInternal.h:46
std::vector< std::shared_ptr< CPVRChannelGroupMember > > RemoveDeletedGroupMembers(const std::vector< std::shared_ptr< CPVRChannelGroupMember >> &groupMembers) override
Remove deleted group members from this group. Delete stale channels.
Definition: PVRChannelGroupInternal.cpp:127
Definition: PVRChannelGroupInternal.h:23
bool LoadFromDatabase(const std::map< std::pair< int, int >, std::shared_ptr< CPVRChannel >> &channels, const std::vector< std::shared_ptr< CPVRClient >> &clients) override
Load the channels from the database.
Definition: PVRChannelGroupInternal.cpp:49
Definition: PVRChannelGroup.h:46