xbmc
IListProvider.h
1 /*
2  * Copyright (C) 2013-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 <memory>
12 #include <vector>
13 
14 class TiXmlNode;
15 class CGUIListItem;
16 typedef std::shared_ptr<CGUIListItem> CGUIListItemPtr;
17 
23 {
24 public:
25  explicit IListProvider(int parentID) : m_parentID(parentID) {}
26  explicit IListProvider(const IListProvider& other) = default;
27  virtual ~IListProvider() = default;
28 
34  static std::unique_ptr<IListProvider> Create(const TiXmlNode* parent, int parentID);
35 
41  static std::unique_ptr<IListProvider> CreateSingle(const TiXmlNode* content, int parentID);
42 
45  virtual std::unique_ptr<IListProvider> Clone() = 0;
46 
50  virtual bool Update(bool forceRefresh)=0;
51 
55  virtual void Fetch(std::vector<CGUIListItemPtr> &items)=0;
56 
60  virtual bool IsUpdating() const { return false; }
61 
65  virtual void Reset() {}
66 
70  virtual void FreeResources(bool immediately) {}
71 
76  virtual bool OnClick(const CGUIListItemPtr &item)=0;
77 
82  virtual bool OnPlay(const CGUIListItemPtr& item) { return false; }
83 
88  virtual bool OnInfo(const CGUIListItemPtr &item)=0;
89 
94  virtual bool OnContextMenu(const CGUIListItemPtr &item)=0;
95 
101  virtual void SetDefaultItem(int item, bool always) {}
102 
107  virtual int GetDefaultItem() const { return -1; }
108 
113  virtual bool AlwaysFocusDefaultItem() const { return false; }
114 protected:
115  int m_parentID;
116 };
An interface for providing lists to UI containers.
Definition: IListProvider.h:22
Definition: GUIListItem.h:30
virtual bool IsUpdating() const
Check whether the list provider is updating content.
Definition: IListProvider.h:60
virtual bool AlwaysFocusDefaultItem() const
Whether to always focus the default item.
Definition: IListProvider.h:113
virtual bool OnPlay(const CGUIListItemPtr &item)
Play event on an item.
Definition: IListProvider.h:82
static std::unique_ptr< IListProvider > Create(const TiXmlNode *parent, int parentID)
Factory to create list providers.
Definition: IListProvider.cpp:16
virtual void Fetch(std::vector< CGUIListItemPtr > &items)=0
Fetch the current list of items.
virtual void Reset()
Reset the current list of items. Derived classes may choose to ignore this.
Definition: IListProvider.h:65
virtual bool OnContextMenu(const CGUIListItemPtr &item)=0
Open the context menu for an item provided by this IListProvider.
virtual std::unique_ptr< IListProvider > Clone()=0
Create an instance of the derived class. Allows for polymorphic copies.
virtual int GetDefaultItem() const
The default item to focus.
Definition: IListProvider.h:107
static std::unique_ptr< IListProvider > CreateSingle(const TiXmlNode *content, int parentID)
Factory to create list providers. Cannot create a multi-provider.
Definition: IListProvider.cpp:30
virtual bool OnInfo(const CGUIListItemPtr &item)=0
Open the info dialog for an item provided by this IListProvider.
virtual bool OnClick(const CGUIListItemPtr &item)=0
Click event on an item.
virtual bool Update(bool forceRefresh)=0
Update the list content.
virtual void FreeResources(bool immediately)
Free all GUI resources allocated by the items.
Definition: IListProvider.h:70
virtual void SetDefaultItem(int item, bool always)
Set the default item to focus. For backwards compatibility.
Definition: IListProvider.h:101