summaryrefslogtreecommitdiff
path: root/viewGridNavigator.h
diff options
context:
space:
mode:
authorchriszero <zerov83@gmail.com>2015-03-27 09:32:27 +0100
committerchriszero <zerov83@gmail.com>2015-03-27 09:32:27 +0100
commitb3a59b06a977129bd773ff46f4fd66e0057fb9cd (patch)
tree25f7bcd960eb5a444982190002af6c56e436163f /viewGridNavigator.h
parent5ffd91556f73336f91e1fc96da2af36e6e7e5660 (diff)
downloadvdr-plugin-plex-b3a59b06a977129bd773ff46f4fd66e0057fb9cd.tar.gz
vdr-plugin-plex-b3a59b06a977129bd773ff46f4fd66e0057fb9cd.tar.bz2
develop skindesigner support
Diffstat (limited to 'viewGridNavigator.h')
-rw-r--r--viewGridNavigator.h61
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