diff options
author | chriszero <zerov83@gmail.com> | 2015-03-27 09:32:27 +0100 |
---|---|---|
committer | chriszero <zerov83@gmail.com> | 2015-03-27 09:32:27 +0100 |
commit | b3a59b06a977129bd773ff46f4fd66e0057fb9cd (patch) | |
tree | 25f7bcd960eb5a444982190002af6c56e436163f /viewGridNavigator.h | |
parent | 5ffd91556f73336f91e1fc96da2af36e6e7e5660 (diff) | |
download | vdr-plugin-plex-b3a59b06a977129bd773ff46f4fd66e0057fb9cd.tar.gz vdr-plugin-plex-b3a59b06a977129bd773ff46f4fd66e0057fb9cd.tar.bz2 |
develop skindesigner support
Diffstat (limited to 'viewGridNavigator.h')
-rw-r--r-- | viewGridNavigator.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/viewGridNavigator.h b/viewGridNavigator.h new file mode 100644 index 0000000..cc17dd5 --- /dev/null +++ b/viewGridNavigator.h @@ -0,0 +1,61 @@ +#ifndef CVIEWGRIDNAVIGATOR_H +#define CVIEWGRIDNAVIGATOR_H + +#include <memory> +#include <vector> +#include "libskindesigner/osdelements.h" + +class cGridElement +{ +private: + bool m_bInit; + unsigned int m_iGridId; + static unsigned int AbsoluteGridIdCounter; + +public: + cGridElement(); + + bool IsNew() { return m_bInit; }; + void Dirty() { m_bInit = true; }; + void InitFinished() { m_bInit = false; }; + unsigned int GridElementId() { return m_iGridId; } + bool IsVisible() { return Position > -1; } + virtual void AddTokens(std::shared_ptr<cViewGrid> grid) = 0; + int Position; +}; + +class cViewGridNavigator +{ +protected: + int m_rows; + int m_columns; + + std::shared_ptr<cViewGrid> m_pGrid; + + bool m_newDimensions; + bool m_setIterator; + std::vector<cGridElement*> m_vElements; + std::vector<cGridElement*>::iterator m_activeElementIter; + std::vector<cGridElement*>::iterator m_firstElementIter; + std::vector<cGridElement*>::iterator m_lastElementIter; + + void GenerateServerElements(); + void FilterElements(int scrollOffset); + void SetGridElementData(cGridElement *obj); + +public: + cViewGridNavigator(cViewGrid* viewGrid); + void SetGridDimensions(int rows, int columns); + void Flush() { m_pGrid->Display(); }; + void DrawGrid() { m_pGrid->Display(); } + virtual void NavigateLeft(); + virtual void NavigateRight(); + virtual void NavigateUp(); + virtual void NavigateDown(); + virtual eOSState NavigateSelect() = 0; + virtual eOSState NavigateBack() = 0; + cGridElement* SelectedObject() { return *m_activeElementIter; } + +}; + +#endif // CVIEWGRIDNAVIGATOR_H |