vdr  1.7.27
menuitems.h
Go to the documentation of this file.
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