SASC-NG
DVBSoftCAM

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 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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines