xbmc
GUIListItemLayout.h
1 /*
2  * Copyright (C) 2005-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 "GUIListGroup.h"
12 #include "GUITexture.h"
14 #include "threads/SystemClock.h"
15 
16 class CGUIListItem;
17 class CFileItem;
18 class CLabelInfo;
19 
20 class CGUIListItemLayout final
21 {
22 public:
24  explicit CGUIListItemLayout(const CGUIListItemLayout& from);
25  explicit CGUIListItemLayout(const CGUIListItemLayout& from, CGUIControl* control);
26  void LoadLayout(TiXmlElement *layout, int context, bool focused, float maxWidth, float maxHeight);
27  void Process(CGUIListItem *item, int parentID, unsigned int currentTime, CDirtyRegionList &dirtyregions);
28  void Render(CGUIListItem *item, int parentID);
29  float Size(ORIENTATION orientation) const;
30  unsigned int GetFocusedItem() const;
31  void SetFocusedItem(unsigned int focus);
32  bool IsAnimating(ANIMATION_TYPE animType);
33  void ResetAnimation(ANIMATION_TYPE animType);
34  void SetInvalid() { m_invalidated = true; }
35  void FreeResources(bool immediately = false);
36  void SetParentControl(CGUIControl* control) { m_group.SetParentControl(control); }
37 
38  //#ifdef GUILIB_PYTHON_COMPATIBILITY
39  void CreateListControlLayouts(float width, float height, bool focused, const CLabelInfo &labelInfo, const CLabelInfo &labelInfo2, const CTextureInfo &texture, const CTextureInfo &textureFocus, float texHeight, float iconWidth, float iconHeight, const std::string &nofocusCondition, const std::string &focusCondition);
40 //#endif
41 
42  void SetWidth(float width);
43  void SetHeight(float height);
44  void SelectItemFromPoint(const CPoint &point);
45  bool MoveLeft();
46  bool MoveRight();
47 
48 #ifdef _DEBUG
49  void DumpTextureUse();
50 #endif
51  bool CheckCondition();
52 protected:
53  void LoadControl(TiXmlElement *child, CGUIControlGroup *group);
54 
55  CGUIListGroup m_group;
56 
57  float m_width{0};
58  float m_height{0};
59  bool m_focused{false};
60  bool m_invalidated{true};
61 
62  INFO::InfoPtr m_condition;
64  std::chrono::milliseconds m_infoUpdateMillis =
66  XbmcThreads::EndTime<> m_infoUpdateTimeout;
67 };
68 
Definition: GUIInfoBool.h:29
a group of controls within a list/panel container
Definition: GUIListGroup.h:22
Definition: GUIListItem.h:30
Definition: SystemClock.h:31
Base class for controls.
Definition: GUIControl.h:75
Definition: GUIListItemLayout.h:20
Definition: GUITexture.h:51
Definition: GUILabel.h:22
Definition: SmartPlayList.cpp:137
group of controls, useful for remembering last control + animating/hiding together ...
Definition: GUIControlGroup.h:24
Represents a file on a share.
Definition: FileItem.h:102