vdr
1.7.27
|
00001 /* 00002 * menuitems.h: General purpose menu items 00003 * 00004 * See the main source file 'vdr.c' for copyright information and 00005 * how to reach the author. 00006 * 00007 * $Id: menuitems.h 2.8 2012/03/13 11:19:11 kls Exp $ 00008 */ 00009 00010 #ifndef __MENUITEMS_H 00011 #define __MENUITEMS_H 00012 00013 #include <limits.h> 00014 #include "dvbdevice.h" 00015 #include "osdbase.h" 00016 00017 extern const char *FileNameChars; 00018 00019 class cMenuEditItem : public cOsdItem { 00020 private: 00021 char *name; 00022 const char *helpRed, *helpGreen, *helpYellow, *helpBlue; 00023 bool helpDisplayed; 00024 protected: 00025 void SetHelp(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL); 00026 public: 00027 cMenuEditItem(const char *Name); 00028 ~cMenuEditItem(); 00029 void SetValue(const char *Value); 00030 bool DisplayHelp(void); 00031 }; 00032 00033 class cMenuEditIntItem : public cMenuEditItem { 00034 protected: 00035 int *value; 00036 int min, max; 00037 const char *minString, *maxString; 00038 virtual void Set(void); 00039 public: 00040 cMenuEditIntItem(const char *Name, int *Value, int Min = 0, int Max = INT_MAX, const char *MinString = NULL, const char *MaxString = NULL); 00041 virtual eOSState ProcessKey(eKeys Key); 00042 }; 00043 00044 class cMenuEditBoolItem : public cMenuEditIntItem { 00045 protected: 00046 const char *falseString, *trueString; 00047 virtual void Set(void); 00048 public: 00049 cMenuEditBoolItem(const char *Name, int *Value, const char *FalseString = NULL, const char *TrueString = NULL); 00050 }; 00051 00052 class cMenuEditBitItem : public cMenuEditBoolItem { 00053 protected: 00054 uint *value; 00055 uint mask; 00056 int bit; 00057 virtual void Set(void); 00058 public: 00059 cMenuEditBitItem(const char *Name, uint *Value, uint Mask, const char *FalseString = NULL, const char *TrueString = NULL); 00060 }; 00061 00062 class cMenuEditNumItem : public cMenuEditItem { 00063 protected: 00064 char *value; 00065 int length; 00066 bool blind; 00067 virtual void Set(void); 00068 public: 00069 cMenuEditNumItem(const char *Name, char *Value, int Length, bool Blind = false); 00070 virtual eOSState ProcessKey(eKeys Key); 00071 }; 00072 00073 class cMenuEditPrcItem : public cMenuEditItem { 00074 protected: 00075 double *value; 00076 double min, max; 00077 int decimals; 00078 int factor; 00079 virtual void Set(void); 00080 public: 00081 cMenuEditPrcItem(const char *Name, double *Value, double Min = 0.0, double Max = 1.0, int Decimals = 0); 00082 virtual eOSState ProcessKey(eKeys Key); 00083 }; 00084 00085 class cMenuEditChrItem : public cMenuEditItem { 00086 private: 00087 char *value; 00088 char *allowed; 00089 const char *current; 00090 virtual void Set(void); 00091 public: 00092 cMenuEditChrItem(const char *Name, char *Value, const char *Allowed); 00093 ~cMenuEditChrItem(); 00094 virtual eOSState ProcessKey(eKeys Key); 00095 }; 00096 00097 class cMenuEditStrItem : public cMenuEditItem { 00098 private: 00099 char *value; 00100 int length; 00101 const char *allowed; 00102 int pos, offset; 00103 bool insert, newchar, uppercase; 00104 int lengthUtf8; 00105 uint *valueUtf8; 00106 uint *allowedUtf8; 00107 uint *charMapUtf8; 00108 uint *currentCharUtf8; 00109 eKeys lastKey; 00110 cTimeMs autoAdvanceTimeout; 00111 void SetHelpKeys(void); 00112 uint *IsAllowed(uint c); 00113 void AdvancePos(void); 00114 virtual void Set(void); 00115 uint Inc(uint c, bool Up); 00116 void Type(uint c); 00117 void Insert(void); 00118 void Delete(void); 00119 protected: 00120 void EnterEditMode(void); 00121 void LeaveEditMode(bool SaveValue = false); 00122 bool InEditMode(void) { return valueUtf8 != NULL; } 00123 public: 00124 cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed = NULL); 00125 ~cMenuEditStrItem(); 00126 virtual eOSState ProcessKey(eKeys Key); 00127 }; 00128 00129 class cMenuEditStraItem : public cMenuEditIntItem { 00130 private: 00131 const char * const *strings; 00132 protected: 00133 virtual void Set(void); 00134 public: 00135 cMenuEditStraItem(const char *Name, int *Value, int NumStrings, const char * const *Strings); 00136 }; 00137 00138 class cMenuEditChanItem : public cMenuEditIntItem { 00139 protected: 00140 const char *noneString; 00141 int dummyValue; 00142 cString *channelID; 00143 virtual void Set(void); 00144 public: 00145 cMenuEditChanItem(const char *Name, int *Value, const char *NoneString = NULL); 00146 cMenuEditChanItem(const char *Name, cString *ChannelID, const char *NoneString = NULL); 00147 virtual eOSState ProcessKey(eKeys Key); 00148 }; 00149 00150 class cMenuEditTranItem : public cMenuEditChanItem { 00151 private: 00152 int number; 00153 int *source; 00154 int *transponder; 00155 public: 00156 cMenuEditTranItem(const char *Name, int *Value, int *Source); 00157 virtual eOSState ProcessKey(eKeys Key); 00158 }; 00159 00160 class cMenuEditDateItem : public cMenuEditItem { 00161 private: 00162 static int days[]; 00163 time_t *value; 00164 int *weekdays; 00165 time_t oldvalue; 00166 int oldweekdays; 00167 int dayindex; 00168 int FindDayIndex(int WeekDays); 00169 virtual void Set(void); 00170 public: 00171 cMenuEditDateItem(const char *Name, time_t *Value, int *WeekDays = NULL); 00172 void ToggleRepeating(void); 00173 virtual eOSState ProcessKey(eKeys Key); 00174 }; 00175 00176 class cMenuEditTimeItem : public cMenuEditItem { 00177 protected: 00178 int *value; 00179 int hh, mm; 00180 int pos; 00181 virtual void Set(void); 00182 public: 00183 cMenuEditTimeItem(const char *Name, int *Value); 00184 virtual eOSState ProcessKey(eKeys Key); 00185 }; 00186 00187 class cMenuEditMapItem : public cMenuEditItem { 00188 protected: 00189 int *value; 00190 const tDvbParameterMap *map; 00191 const char *zeroString; 00192 virtual void Set(void); 00193 public: 00194 cMenuEditMapItem(const char *Name, int *Value, const tDvbParameterMap *Map, const char *ZeroString = NULL); 00195 virtual eOSState ProcessKey(eKeys Key); 00196 }; 00197 00198 class cPlugin; 00199 00200 class cMenuSetupPage : public cOsdMenu { 00201 private: 00202 cPlugin *plugin; 00203 protected: 00204 void SetSection(const char *Section); 00205 virtual void Store(void) = 0; 00206 void SetupStore(const char *Name, const char *Value = NULL); 00207 void SetupStore(const char *Name, int Value); 00208 public: 00209 cMenuSetupPage(void); 00210 virtual eOSState ProcessKey(eKeys Key); 00211 void SetPlugin(cPlugin *Plugin); 00212 }; 00213 00214 #endif //__MENUITEMS_H