diff options
Diffstat (limited to 'guilib/GUIEPGGridContainer.h')
-rw-r--r-- | guilib/GUIEPGGridContainer.h | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/guilib/GUIEPGGridContainer.h b/guilib/GUIEPGGridContainer.h deleted file mode 100644 index e797d2b5f6..0000000000 --- a/guilib/GUIEPGGridContainer.h +++ /dev/null @@ -1,215 +0,0 @@ -#pragma once - -/* - * Copyright (C) 2005-2008 Team XBMC - * http://www.xbmc.org - * - * This Program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This Program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with XBMC; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * http://www.gnu.org/copyleft/gpl.html - * - */ - -#include "DateTime.h" -#include "FileItem.h" -#include "GUIControl.h" -#include "GUIListItemLayout.h" - -#define MAXCHANNELS 20 -#define MAXBLOCKS 2304 //! !!_EIGHT_!! days of 5 minute blocks - -struct GridItemsPtr -{ - CGUIListItemPtr item; - float width; - float height; -}; - -class CGUIEPGGridContainer : public CGUIControl -{ -public: - CGUIEPGGridContainer(int parentID, int controlID, float posX, float posY, float width, float height, - ORIENTATION orientation, int scrollTime, int preloadItems, int minutesPerPage, - int rulerUnit); - virtual ~CGUIEPGGridContainer(void); - virtual CGUIEPGGridContainer *Clone() const { return new CGUIEPGGridContainer(*this); }; - - virtual bool OnAction(const CAction &action); - virtual void OnDown(); - virtual void OnUp(); - virtual void OnLeft(); - virtual void OnRight(); - virtual bool OnMouseOver(const CPoint &point); - virtual bool OnMouseClick(int dwButton, const CPoint &point); - virtual bool OnMouseDoubleClick(int dwButton, const CPoint &point); - virtual bool OnMouseWheel(char wheel, const CPoint &point); - virtual bool OnMessage(CGUIMessage& message); - virtual void SetFocus(bool bOnOff); - - virtual CStdString GetDescription() const; - const int GetNumChannels() { return m_channels; }; - virtual int GetSelectedItem() const; - const int GetSelectedChannel() { return m_channelCursor + m_channelOffset; } - - void DoRender(unsigned int currentTime); - void Render(); - void LoadLayout(TiXmlElement *layout); - void LoadContent(TiXmlElement *content); - - virtual bool IsContainer() const { return true; }; - CGUIListItemPtr GetListItem(int offset) const; - - virtual int CorrectOffset(int offset, int cursor) const; - - /*! \brief Set the offset of the first item in the container from the container's position - Useful for lists/panels where the focused item may be larger than the non-focused items and thus - normally cut off from the clipping window defined by the container's position + size. - \param offset CPoint holding the offset in skin coordinates. - */ - void SetRenderOffset(const CPoint &offset); - - void GoToBegin(); - void GoToEnd(); - void SetStartEnd(CDateTime start, CDateTime end); - -protected: - bool OnClick(int actionID); - bool SelectItemFromPoint(const CPoint &point); - - void UpdateItems(); - - void SetChannel(int channel); - void SetBlock(int block); - void ChannelScroll(int amount); - void ProgrammesScroll(int amount); - void ValidateOffset(); - void UpdateLayout(bool refreshAllItems = false); - void CalculateLayout(); - void Reset(); - - GridItemsPtr *GetItem(const int &channel); - GridItemsPtr *GetNextItem(const int &channel); - GridItemsPtr *GetPrevItem(const int &channel); - GridItemsPtr *GetClosestItem(const int &channel); - - int GetItemSize(GridItemsPtr *item); - int GetBlock(const CGUIListItemPtr &item, const int &channel); - int GetRealBlock(const CGUIListItemPtr &item, const int &channel); - void MoveToRow(int row); - bool MoveChannel(bool direction); - bool MoveProgrammes(bool direction); - - CGUIListItemLayout *GetFocusedLayout() const; - - void ScrollToBlockOffset(int offset); - void ScrollToChannelOffset(int offset); - void UpdateScrollOffset(); - void RenderChannelItem(float posX, float posY, CGUIListItem *item, bool focused); - void RenderProgrammeItem(float posX, float posY, float width, float height, CGUIListItem *item, bool focused); - void GetCurrentLayouts(); - - CPoint m_renderOffset; ///< \brief render offset of the first item in the list \sa SetRenderOffset - - ORIENTATION m_orientation; - - struct ItemsPtr - { - long start; - long stop; - }; - std::vector< ItemsPtr > m_epgItemsPtr; - std::vector< CGUIListItemPtr > m_channelItems; - std::vector< CGUIListItemPtr > m_rulerItems; - std::vector< CGUIListItemPtr > m_programmeItems; - typedef std::vector<CGUIListItemPtr> ::iterator iItems; - - std::vector<CGUIListItemLayout> m_channelLayouts; - std::vector<CGUIListItemLayout> m_focusedChannelLayouts; - std::vector<CGUIListItemLayout> m_focusedProgrammeLayouts; - std::vector<CGUIListItemLayout> m_programmeLayouts; - std::vector<CGUIListItemLayout> m_rulerLayouts; - - CGUIListItemLayout *m_channelLayout; - CGUIListItemLayout *m_focusedChannelLayout; - CGUIListItemLayout *m_programmeLayout; - CGUIListItemLayout *m_focusedProgrammeLayout; - CGUIListItemLayout *m_rulerLayout; - - bool m_wasReset; // true if we've received a Reset message until we've rendered once. Allows - // us to make sure we don't tell the infomanager that we've been moving when - // the "movement" was simply due to the list being repopulated (thus cursor position - // changing around) - - void FreeChannelMemory(int keepStart, int keepEnd); - void FreeProgrammeMemory(int keepStart, int keepEnd); - void FreeRulerMemory(int keepStart, int keepEnd); - - void GetChannelCacheOffsets(int &cacheBefore, int &cacheAfter); - void GetProgrammeCacheOffsets(int &cacheBefore, int &cacheAfter); - void GetRulerCacheOffsets(int &cacheBefore, int &cacheAfter); - -private: - int m_rulerUnit; //! number of blocks that makes up one element of the ruler - int m_channels; - int m_channelsPerPage; - int m_ProgrammesPerPage; - int m_channelCursor; - int m_channelOffset; - int m_blocks; - int m_blocksPerPage; - int m_blockCursor; - int m_blockOffset; - int m_cacheChannelItems; - int m_cacheProgrammeItems; - int m_cacheRulerItems; - - float m_rulerPosX; //! X position of first ruler item - float m_rulerPosY; //! Y position of first ruler item - float m_rulerHeight; //! height of the scrolling timeline above the ruler items - float m_rulerWidth; //! width of each element of the ruler - float m_channelPosX; //! Y position of first channel row - float m_channelPosY; //! Y position of first channel row - float m_channelHeight; //! height of each channel row (& every grid item) - float m_channelWidth; //! width of the channel item - float m_gridPosX; //! X position of first grid item - float m_gridPosY; //! Y position of first grid item - float m_gridWidth; - float m_gridHeight; - float m_blockSize; //! a block's width in pixels - float m_analogScrollCount; - - CDateTime m_gridStart; - CDateTime m_gridEnd; - - struct GridItemsPtr **m_gridIndex; - GridItemsPtr *m_item; - CGUIListItem *m_lastItem; - CGUIListItem *m_lastChannel; - - unsigned int m_renderTime; - - int m_scrollTime; - bool m_channelWrapAround; - bool m_gridWrapAround; //! only when no more data available should this be true - - int m_programmeScrollLastTime; - float m_programmeScrollSpeed; - float m_programmeScrollOffset; - - int m_channelScrollLastTime; - float m_channelScrollSpeed; - float m_channelScrollOffset; - - CStdString m_label; -}; |