blob: 906257b81bbba59fdb2f71f451f086e3cf3f665b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#ifndef CVIEWGRIDNAVIGATOR_H
#define CVIEWGRIDNAVIGATOR_H
#include <memory>
#include <vector>
#include <functional>
#include "libskindesigner/osdelements.h"
class cGridElement
{
private:
bool m_bInit;
double m_posX;
double m_posY;
static unsigned int AbsoluteGridIdCounter;
protected:
unsigned int m_iGridId;
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; }
void SetPosition(double x, double y) { m_posX = x; m_posY = y; };
void GetPosition(double &x, double &y) { x = m_posX; y = m_posY; };
virtual void AddTokens(std::shared_ptr<cOsdElement> osdElem, bool clear = true, std::function<void(cGridElement*)> OnCached = NULL) = 0;
int Position;
};
class cViewGridNavigator
{
protected:
int m_rows;
int m_columns;
std::shared_ptr<cViewGrid> m_pGrid;
cOsdView* m_pRootView;
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(cOsdView* rootView, cViewGrid* viewGrid);
void SetGridDimensions(int rows, int columns);
virtual void Flush() { m_pGrid->Display(); };
virtual void Clear() { m_pGrid->Clear(); };
virtual void NavigateLeft();
virtual void NavigateRight();
virtual void NavigateUp();
virtual void NavigateDown();
virtual eOSState NavigateSelect() = 0;
virtual eOSState NavigateBack() = 0;
virtual void ReDraw(cGridElement* element);
cGridElement* SelectedObject() { return *m_activeElementIter; }
};
#endif // CVIEWGRIDNAVIGATOR_H
|