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 "XBDateTime.h" 12 #include "guilib/guiinfo/GUIInfoProvider.h" 13 14 #include <atomic> 15 #include <memory> 16 #include <utility> 17 #include <vector> 18 19 class CDataCacheCore; 20 21 namespace KODI 22 { 23 namespace GUILIB 24 { 25 namespace GUIINFO 26 { 27 28 class CGUIInfo; 29 30 class CPlayerGUIInfo : public CGUIInfoProvider 31 { 32 public: 33 CPlayerGUIInfo(); 34 ~CPlayerGUIInfo() override; 35 36 // KODI::GUILIB::GUIINFO::IGUIInfoProvider implementation 37 bool InitCurrentItem(CFileItem *item) override; 38 bool GetLabel(std::string& value, const CFileItem *item, int contextWindow, const CGUIInfo &info, std::string *fallback) const override; 39 bool GetInt(int& value, const CGUIListItem *item, int contextWindow, const CGUIInfo &info) const override; 40 bool GetBool(bool& value, const CGUIListItem *item, int contextWindow, const CGUIInfo &info) const override; 41 42 bool GetDisplayAfterSeek() const; 43 void SetDisplayAfterSeek(unsigned int timeOut = 2500, int seekOffset = 0); SetShowTime(bool showtime)44 void SetShowTime(bool showtime) { m_playerShowTime = showtime; }; 45 void SetShowInfo(bool showinfo); GetShowInfo()46 bool GetShowInfo() const { return m_playerShowInfo; } 47 bool ToggleShowInfo(); 48 49 private: 50 std::unique_ptr<CFileItem> m_currentItem; 51 52 unsigned int m_AfterSeekTimeout = 0; 53 mutable int m_seekOffset = 0; 54 std::atomic_bool m_playerShowTime; 55 std::atomic_bool m_playerShowInfo; 56 57 int GetTotalPlayTime() const; 58 int GetPlayTime() const; 59 int GetPlayTimeRemaining() const; 60 float GetSeekPercent() const; 61 62 std::string GetCurrentPlayTime(TIME_FORMAT format) const; 63 std::string GetCurrentPlayTimeRemaining(TIME_FORMAT format) const; 64 std::string GetDuration(TIME_FORMAT format) const; 65 std::string GetCurrentSeekTime(TIME_FORMAT format) const; 66 std::string GetSeekTime(TIME_FORMAT format) const; 67 68 std::string GetContentRanges(int iInfo) const; 69 std::vector<std::pair<float, float>> GetCutList(CDataCacheCore& data, time_t duration) const; 70 std::vector<std::pair<float, float>> GetChapters(CDataCacheCore& data, time_t duration) const; 71 }; 72 73 } // namespace GUIINFO 74 } // namespace GUILIB 75 } // namespace KODI 76