summaryrefslogtreecommitdiffstats
path: root/xbmc/guilib/GUIListItemLayout.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
commitc04dcc2e7d834218ef2d4194331e383402495ae1 (patch)
tree7333e38d10d75386e60f336b80c2443c1166031d /xbmc/guilib/GUIListItemLayout.h
parentInitial commit. (diff)
downloadkodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz
kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'xbmc/guilib/GUIListItemLayout.h')
-rw-r--r--xbmc/guilib/GUIListItemLayout.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/xbmc/guilib/GUIListItemLayout.h b/xbmc/guilib/GUIListItemLayout.h
new file mode 100644
index 0000000..69d4c4f
--- /dev/null
+++ b/xbmc/guilib/GUIListItemLayout.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2005-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include "GUIListGroup.h"
+#include "GUITexture.h"
+#include "guilib/guiinfo/GUIInfoLabel.h"
+#include "threads/SystemClock.h"
+
+class CGUIListItem;
+class CFileItem;
+class CLabelInfo;
+
+class CGUIListItemLayout final
+{
+public:
+ CGUIListItemLayout();
+ explicit CGUIListItemLayout(const CGUIListItemLayout& from);
+ explicit CGUIListItemLayout(const CGUIListItemLayout& from, CGUIControl* control);
+ void LoadLayout(TiXmlElement *layout, int context, bool focused, float maxWidth, float maxHeight);
+ void Process(CGUIListItem *item, int parentID, unsigned int currentTime, CDirtyRegionList &dirtyregions);
+ void Render(CGUIListItem *item, int parentID);
+ float Size(ORIENTATION orientation) const;
+ unsigned int GetFocusedItem() const;
+ void SetFocusedItem(unsigned int focus);
+ bool IsAnimating(ANIMATION_TYPE animType);
+ void ResetAnimation(ANIMATION_TYPE animType);
+ void SetInvalid() { m_invalidated = true; }
+ void FreeResources(bool immediately = false);
+ void SetParentControl(CGUIControl* control) { m_group.SetParentControl(control); }
+
+ //#ifdef GUILIB_PYTHON_COMPATIBILITY
+ 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);
+//#endif
+
+ void SetWidth(float width);
+ void SetHeight(float height);
+ void SelectItemFromPoint(const CPoint &point);
+ bool MoveLeft();
+ bool MoveRight();
+
+#ifdef _DEBUG
+ void DumpTextureUse();
+#endif
+ bool CheckCondition();
+protected:
+ void LoadControl(TiXmlElement *child, CGUIControlGroup *group);
+
+ CGUIListGroup m_group;
+
+ float m_width{0};
+ float m_height{0};
+ bool m_focused{false};
+ bool m_invalidated{true};
+
+ INFO::InfoPtr m_condition;
+ KODI::GUILIB::GUIINFO::CGUIInfoBool m_isPlaying;
+ std::chrono::milliseconds m_infoUpdateMillis =
+ XbmcThreads::EndTime<decltype(m_infoUpdateMillis)>::Max();
+ XbmcThreads::EndTime<> m_infoUpdateTimeout;
+};
+