00001
00032 #ifndef LL_LOGITECH_LCD_H
00033 #define LL_LOGITECH_LCD_H
00034
00035 #include <vector>
00036 #include "llFrametimer.h"
00037
00038 class CEzLcd;
00039
00040
00041
00042
00043
00044
00045
00046 class llLCDSpecificPage
00047 {
00048 public:
00049 int mPageIndex;
00050 typedef std::vector<HANDLE> displayItemArray_t;
00051
00052 displayItemArray_t mDisplayItemArray;
00053 };
00054
00055
00056
00057 class llLCDPageGroup
00058 {
00059 public:
00060 llLCDPageGroup(CEzLcd *LCD, int type, HICON SLIcon);
00061 virtual ~llLCDPageGroup();
00062 virtual void UpdateDetails() = 0;
00063 virtual void GetDisplayable() = 0;
00064 int mType;
00065 HANDLE mHandle;
00066 typedef std::vector<llLCDSpecificPage> pageArray_t;
00067 pageArray_t mPageArray;
00068 BOOL mDisplayPage;
00069 protected:
00070
00071 CEzLcd *mLCD;
00072 HICON mSLIcon;
00073 };
00074
00075
00076
00077 class llDefaultPageGroup : public llLCDPageGroup
00078 {
00079 public:
00080 llDefaultPageGroup(CEzLcd *LCD, int type, HICON SLIcon);
00081 virtual void UpdateDetails();
00082 virtual void GetDisplayable();
00083 };
00084
00085
00086 class llLCD
00087 {
00088 public:
00089 enum
00090 {
00091 kLCDDefault,
00092 kLCDDebug,
00093 kLCDChat,
00094 kLCDRegion,
00095 kLCDLinden,
00096 kLCDIM,
00097 kLCDDebugConsole,
00098 kMaxLCDPageGroups
00099 };
00100 llLCD(HINSTANCE instance);
00101 ~llLCD();
00102 void UpdateDisplay();
00103 bool Enabled();
00104 BOOL AreZ10Available();
00105 BOOL IsG15Available();
00106
00107 typedef std::vector<llLCDPageGroup *> pageGroupArray_t;
00108 pageGroupArray_t mPageGroupArray;
00109 HICON mSLIcon;
00110 CEzLcd *mLCD;
00111 private:
00112
00113
00114 void SetUpDisplayPages();
00115 llLCDPageGroup *GetNextPageToDisplay();
00116
00117 llLCDPageGroup *mCurrentGroupBeingShown;
00118
00119
00120 bool mInited;
00121
00122 int mPageToShow;
00123 LLFrameTimer mDisplayTimer;
00124 LLFrameTimer mDebounceTimer;
00125 HINSTANCE mInstance;
00126 bool mFirstTimeThru;
00127
00128
00129
00130 int mDestinationLCD;
00131 };
00132
00133
00134
00135 #endif