|
SASC-NG
DVBSoftCAM
|
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 1.21 2007/06/08 11:53:37 kls Exp $ 00008 */ 00009 00010 #ifndef __MENUITEMS_H 00011 #define __MENUITEMS_H 00012 00013 #include "osdbase.h" 00014 00015 extern const char *FileNameChars; 00016 00017 class cMenuEditItem : public cOsdItem { 00018 private: 00019 char *name; 00020 public: 00021 cMenuEditItem(const char *Name); 00022 ~cMenuEditItem(); 00023 void SetValue(const char *Value); 00024 }; 00025 00026 class cMenuEditIntItem : public cMenuEditItem { 00027 protected: 00028 int *value; 00029 int min, max; 00030 const char *minString, *maxString; 00031 virtual void Set(void); 00032 public: 00033 cMenuEditIntItem(const char *Name, int *Value, int Min = 0, int Max = INT_MAX, const char *MinString = NULL, const char *MaxString = NULL); 00034 virtual eOSState ProcessKey(eKeys Key); 00035 }; 00036 00037 class cMenuEditBoolItem : public cMenuEditIntItem { 00038 protected: 00039 const char *falseString, *trueString; 00040 virtual void Set(void); 00041 public: 00042 cMenuEditBoolItem(const char *Name, int *Value, const char *FalseString = NULL, const char *TrueString = NULL); 00043 }; 00044 00045 class cMenuEditBitItem : public cMenuEditBoolItem { 00046 protected: 00047 uint *value; 00048 uint mask; 00049 int bit; 00050 virtual void Set(void); 00051 public: 00052 cMenuEditBitItem(const char *Name, uint *Value, uint Mask, const char *FalseString = NULL, const char *TrueString = NULL); 00053 }; 00054 00055 class cMenuEditNumItem : public cMenuEditItem { 00056 protected: 00057 char *value; 00058 int length; 00059 bool blind; 00060 virtual void Set(void); 00061 public: 00062 cMenuEditNumItem(const char *Name, char *Value, int Length, bool Blind = false); 00063 virtual eOSState ProcessKey(eKeys Key); 00064 }; 00065 00066 class cMenuEditChrItem : public cMenuEditItem { 00067 private: 00068 char *value; 00069 char *allowed; 00070 const char *current; 00071 virtual void Set(void); 00072 public: 00073 cMenuEditChrItem(const char *Name, char *Value, const char *Allowed); 00074 ~cMenuEditChrItem(); 00075 virtual eOSState ProcessKey(eKeys Key); 00076 }; 00077 00078 class cMenuEditStrItem : public cMenuEditItem { 00079 private: 00080 char *value; 00081 int length; 00082 const char *allowed; 00083 int pos, offset; 00084 bool insert, newchar, uppercase; 00085 int lengthUtf8; 00086 uint *valueUtf8; 00087 uint *allowedUtf8; 00088 uint *charMapUtf8; 00089 uint *currentCharUtf8; 00090 eKeys lastKey; 00091 cTimeMs autoAdvanceTimeout; 00092 void SetHelpKeys(void); 00093 uint *IsAllowed(uint c); 00094 void AdvancePos(void); 00095 virtual void Set(void); 00096 uint Inc(uint c, bool Up); 00097 void Insert(void); 00098 void Delete(void); 00099 protected: 00100 void EnterEditMode(void); 00101 void LeaveEditMode(bool SaveValue = false); 00102 bool InEditMode(void) { return valueUtf8 != NULL; } 00103 public: 00104 cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed); 00105 ~cMenuEditStrItem(); 00106 virtual eOSState ProcessKey(eKeys Key); 00107 }; 00108 00109 class cMenuEditStraItem : public cMenuEditIntItem { 00110 private: 00111 const char * const *strings; 00112 protected: 00113 virtual void Set(void); 00114 public: 00115 cMenuEditStraItem(const char *Name, int *Value, int NumStrings, const char * const *Strings); 00116 }; 00117 00118 class cMenuEditChanItem : public cMenuEditIntItem { 00119 protected: 00120 const char *noneString; 00121 virtual void Set(void); 00122 public: 00123 cMenuEditChanItem(const char *Name, int *Value, const char *NoneString = NULL); 00124 virtual eOSState ProcessKey(eKeys Key); 00125 }; 00126 00127 class cMenuEditTranItem : public cMenuEditChanItem { 00128 private: 00129 int number; 00130 int *source; 00131 int *transponder; 00132 public: 00133 cMenuEditTranItem(const char *Name, int *Value, int *Source); 00134 virtual eOSState ProcessKey(eKeys Key); 00135 }; 00136 00137 class cMenuEditDateItem : public cMenuEditItem { 00138 private: 00139 static int days[]; 00140 time_t *value; 00141 int *weekdays; 00142 time_t oldvalue; 00143 int dayindex; 00144 int FindDayIndex(int WeekDays); 00145 virtual void Set(void); 00146 public: 00147 cMenuEditDateItem(const char *Name, time_t *Value, int *WeekDays = NULL); 00148 virtual eOSState ProcessKey(eKeys Key); 00149 }; 00150 00151 class cMenuEditTimeItem : public cMenuEditItem { 00152 protected: 00153 int *value; 00154 int hh, mm; 00155 int pos; 00156 virtual void Set(void); 00157 public: 00158 cMenuEditTimeItem(const char *Name, int *Value); 00159 virtual eOSState ProcessKey(eKeys Key); 00160 }; 00161 00162 class cPlugin; 00163 00164 class cMenuSetupPage : public cOsdMenu { 00165 private: 00166 cPlugin *plugin; 00167 protected: 00168 void SetSection(const char *Section); 00169 virtual void Store(void) = 0; 00170 void SetupStore(const char *Name, const char *Value = NULL); 00171 void SetupStore(const char *Name, int Value); 00172 public: 00173 cMenuSetupPage(void); 00174 virtual eOSState ProcessKey(eKeys Key); 00175 void SetPlugin(cPlugin *Plugin); 00176 }; 00177 00178 #endif //__MENUITEMS_H