vdr  2.6.1
menuitems.h
Go to the documentation of this file.
1 /*
2  * menuitems.h: General purpose menu items
3  *
4  * See the main source file 'vdr.c' for copyright information and
5  * how to reach the author.
6  *
7  * $Id: menuitems.h 5.1 2020/12/26 15:49:01 kls Exp $
8  */
9 
10 #ifndef __MENUITEMS_H
11 #define __MENUITEMS_H
12 
13 #include <limits.h>
14 #include "dvbdevice.h"
15 #include "osdbase.h"
16 
17 extern const char *FileNameChars;
18 
19 class cMenuEditItem : public cOsdItem {
20 private:
21  char *name;
22  const char *helpRed, *helpGreen, *helpYellow, *helpBlue;
24 protected:
25  void SetHelp(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
26 public:
27  cMenuEditItem(const char *Name);
29  void SetValue(const char *Value);
30  bool DisplayHelp(bool Current);
31  };
32 
34 protected:
35  int *value;
36  int min, max;
37  const char *minString, *maxString;
38  virtual void Set(void);
39 public:
40  cMenuEditIntItem(const char *Name, int *Value, int Min = 0, int Max = INT_MAX, const char *MinString = NULL, const char *MaxString = NULL);
41  virtual eOSState ProcessKey(eKeys Key);
42  };
43 
45 protected:
46  const char *falseString, *trueString;
47  virtual void Set(void);
48 public:
49  cMenuEditBoolItem(const char *Name, int *Value, const char *FalseString = NULL, const char *TrueString = NULL);
50  };
51 
53 protected:
54  uint *value;
55  uint mask;
56  int bit;
57  virtual void Set(void);
58 public:
59  cMenuEditBitItem(const char *Name, uint *Value, uint Mask, const char *FalseString = NULL, const char *TrueString = NULL);
60  };
61 
63 protected:
64  char *value;
65  int length;
66  bool blind;
67  virtual void Set(void);
68 public:
69  cMenuEditNumItem(const char *Name, char *Value, int Length, bool Blind = false);
70  virtual eOSState ProcessKey(eKeys Key);
71  };
72 
74 private:
75  int factor;
76  const char *negString, *posString;
77  void SetHelpKeys(void);
78  virtual void Set(void);
79 public:
80  cMenuEditIntxItem(const char *Name, int *Value, int Min = INT_MIN, int Max = INT_MAX, int Factor = 1, const char *NegString = NULL, const char *PosString = NULL);
81  virtual eOSState ProcessKey(eKeys Key);
82  };
83 
85 protected:
86  double *value;
87  double min, max;
88  int decimals;
89  int factor;
90  virtual void Set(void);
91 public:
92  cMenuEditPrcItem(const char *Name, double *Value, double Min = 0.0, double Max = 1.0, int Decimals = 0);
93  virtual eOSState ProcessKey(eKeys Key);
94  };
95 
97 private:
98  char *value;
99  char *allowed;
100  const char *current;
101  virtual void Set(void);
102 public:
103  cMenuEditChrItem(const char *Name, char *Value, const char *Allowed);
105  virtual eOSState ProcessKey(eKeys Key);
106  };
107 
109 private:
110  char *value;
111  int length;
112  const char *allowed;
113  int pos, offset;
114  bool keepSpace;
115  const char **macros;
119  uint *valueUtf8;
120  uint *allowedUtf8;
121  uint *charMapUtf8;
125  void SetHelpKeys(void);
126  uint *IsAllowed(uint c);
127  void AdvancePos(void);
128  virtual void Set(void);
129  uint Inc(uint c, bool Up);
130  void Type(uint c);
131  void Insert(void);
132  void Delete(void);
133  void InsertMacro(void);
134 protected:
135  void EnterEditMode(void);
136  void LeaveEditMode(bool SaveValue = false);
137  bool InEditMode(void) { return valueUtf8 != NULL; }
138 public:
139  cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed = NULL);
141  void SetKeepSpace(void) { keepSpace = true; }
142  void SetMacros(const char **Macros);
143  virtual eOSState ProcessKey(eKeys Key);
144  };
145 
147 private:
148  const char * const *strings;
149 protected:
150  virtual void Set(void);
151 public:
152  cMenuEditStraItem(const char *Name, int *Value, int NumStrings, const char * const *Strings);
153  };
154 
156 private:
158  int index;
159  char *value;
160  int length;
161 protected:
162  virtual void Set(void);
163 public:
164  cMenuEditStrlItem(const char *Name, char *Value, int Length, const cStringList *Strings);
165  };
166 
168 protected:
169  const char *noneString;
172  virtual void Set(void);
173 public:
174  cMenuEditChanItem(const char *Name, int *Value, const char *NoneString = NULL);
175  cMenuEditChanItem(const char *Name, cString *ChannelID, const char *NoneString = NULL);
176  virtual eOSState ProcessKey(eKeys Key);
177  };
178 
180 private:
181  int number;
182  int *source;
184 public:
185  cMenuEditTranItem(const char *Name, int *Value, int *Source);
186  virtual eOSState ProcessKey(eKeys Key);
187  };
188 
190 private:
191  static int days[];
192  time_t *value;
193  int *weekdays;
194  time_t oldvalue;
196  int dayindex;
197  int FindDayIndex(int WeekDays);
198  virtual void Set(void);
199 public:
200  cMenuEditDateItem(const char *Name, time_t *Value, int *WeekDays = NULL);
201  void ToggleRepeating(void);
202  virtual eOSState ProcessKey(eKeys Key);
203  };
204 
206 protected:
207  int *value;
208  int hh, mm;
209  int pos;
210  virtual void Set(void);
211 public:
212  cMenuEditTimeItem(const char *Name, int *Value);
213  virtual eOSState ProcessKey(eKeys Key);
214  };
215 
217 protected:
218  int *value;
220  const char *zeroString;
221  virtual void Set(void);
222 public:
223  cMenuEditMapItem(const char *Name, int *Value, const tDvbParameterMap *Map, const char *ZeroString = NULL);
224  virtual eOSState ProcessKey(eKeys Key);
225  };
226 
227 class cPlugin;
228 
229 class cMenuSetupPage : public cOsdMenu {
230 private:
232 protected:
233  void SetSection(const char *Section);
234  virtual void Store(void) = 0;
235  void SetupStore(const char *Name, const char *Value = NULL);
236  void SetupStore(const char *Name, int Value);
237 public:
238  cMenuSetupPage(void);
239  virtual eOSState ProcessKey(eKeys Key);
240  void SetPlugin(cPlugin *Plugin);
241  };
242 
243 #endif //__MENUITEMS_H
cMenuEditChrItem::value
char * value
Definition: menuitems.h:98
cMenuEditDateItem::FindDayIndex
int FindDayIndex(int WeekDays)
Definition: menuitems.c:972
cMenuEditChanItem::channelID
cString * channelID
Definition: menuitems.h:171
cMenuEditChrItem
Definition: menuitems.h:96
cMenuEditStrItem::valueUtf8
uint * valueUtf8
Definition: menuitems.h:119
cMenuEditNumItem
Definition: menuitems.h:62
cMenuEditChrItem::cMenuEditChrItem
cMenuEditChrItem(const char *Name, char *Value, const char *Allowed)
Definition: menuitems.c:337
cMenuEditStrItem::SetMacros
void SetMacros(const char **Macros)
Definition: menuitems.c:415
cMenuEditChrItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:361
cMenuEditTranItem::number
int number
Definition: menuitems.h:181
cMenuEditIntxItem::SetHelpKeys
void SetHelpKeys(void)
Definition: menuitems.c:237
cMenuEditStrItem::InEditMode
bool InEditMode(void)
Definition: menuitems.h:137
cMenuEditStrItem::insert
bool insert
Definition: menuitems.h:117
cMenuEditStrItem::Insert
void Insert(void)
Definition: menuitems.c:583
cMenuEditPrcItem::value
double * value
Definition: menuitems.h:86
cMenuEditStrlItem::cMenuEditStrlItem
cMenuEditStrlItem(const char *Name, char *Value, int Length, const cStringList *Strings)
Definition: menuitems.c:820
cMenuEditBoolItem::cMenuEditBoolItem
cMenuEditBoolItem(const char *Name, int *Value, const char *FalseString=NULL, const char *TrueString=NULL)
Definition: menuitems.c:140
cMenuEditStrItem::EnterEditMode
void EnterEditMode(void)
Definition: menuitems.c:422
cStringList
Definition: tools.h:848
cMenuEditStrlItem
Definition: menuitems.h:155
cMenuEditPrcItem::Set
virtual void Set(void)
Definition: menuitems.c:289
cMenuEditIntItem::minString
const char * minString
Definition: menuitems.h:37
cMenuEditDateItem::dayindex
int dayindex
Definition: menuitems.h:196
cMenuEditBoolItem::trueString
const char * trueString
Definition: menuitems.h:46
cMenuEditPrcItem::decimals
int decimals
Definition: menuitems.h:88
cMenuEditStrItem::currentCharUtf8
uint * currentCharUtf8
Definition: menuitems.h:122
cMenuEditStrItem::Type
void Type(uint c)
Definition: menuitems.c:569
cMenuEditStrItem::allowedUtf8
uint * allowedUtf8
Definition: menuitems.h:120
cPlugin
Definition: plugin.h:22
cMenuEditStrItem::lengthUtf8
int lengthUtf8
Definition: menuitems.h:118
cMenuEditNumItem::value
char * value
Definition: menuitems.h:64
cMenuEditBitItem::value
uint * value
Definition: menuitems.h:54
cMenuEditIntxItem::posString
const char * posString
Definition: menuitems.h:76
cMenuEditStrItem::~cMenuEditStrItem
~cMenuEditStrItem()
Definition: menuitems.c:408
cMenuEditItem::helpRed
const char * helpRed
Definition: menuitems.h:22
cMenuEditChanItem::dummyValue
int dummyValue
Definition: menuitems.h:170
cMenuEditBoolItem
Definition: menuitems.h:44
cMenuEditIntxItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:253
cMenuEditMapItem::Set
virtual void Set(void)
Definition: menuitems.c:1186
cMenuEditTranItem
Definition: menuitems.h:179
cMenuEditStrItem::value
char * value
Definition: menuitems.h:110
cMenuEditStrItem::lastMacro
int lastMacro
Definition: menuitems.h:116
cMenuEditStrItem::IsAllowed
uint * IsAllowed(uint c)
Definition: menuitems.c:468
cMenuEditIntxItem
Definition: menuitems.h:73
cMenuEditPrcItem::factor
int factor
Definition: menuitems.h:89
cMenuEditDateItem::Set
virtual void Set(void)
Definition: menuitems.c:980
cOsdMenu
Definition: osdbase.h:85
cMenuEditChanItem
Definition: menuitems.h:167
cMenuEditItem::helpDisplayed
bool helpDisplayed
Definition: menuitems.h:23
cMenuEditItem::SetValue
void SetValue(const char *Value)
Definition: menuitems.c:37
eKeys
eKeys
Definition: keys.h:16
cMenuEditStraItem::cMenuEditStraItem
cMenuEditStraItem(const char *Name, int *Value, int NumStrings, const char *const *Strings)
Definition: menuitems.c:806
cMenuEditItem::SetHelp
void SetHelp(const char *Red, const char *Green=NULL, const char *Yellow=NULL, const char *Blue=NULL)
Definition: menuitems.c:44
cOsdItem
Definition: osdbase.h:48
cMenuEditMapItem::zeroString
const char * zeroString
Definition: menuitems.h:220
cMenuEditStrItem::offset
int offset
Definition: menuitems.h:113
cMenuEditStrItem::charMapUtf8
uint * charMapUtf8
Definition: menuitems.h:121
cMenuEditMapItem::value
int * value
Definition: menuitems.h:218
cMenuSetupPage::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:1245
cMenuEditStrItem::AdvancePos
void AdvancePos(void)
Definition: menuitems.c:479
cMenuEditNumItem::Set
virtual void Set(void)
Definition: menuitems.c:183
cMenuEditStrlItem::strings
const cStringList * strings
Definition: menuitems.h:157
cMenuSetupPage::plugin
cPlugin * plugin
Definition: menuitems.h:231
cMenuEditDateItem::days
static int days[]
Definition: menuitems.h:191
cMenuEditIntxItem::Set
virtual void Set(void)
Definition: menuitems.c:243
cMenuEditTranItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:924
cMenuEditTimeItem::pos
int pos
Definition: menuitems.h:209
cMenuEditMapItem::cMenuEditMapItem
cMenuEditMapItem(const char *Name, int *Value, const tDvbParameterMap *Map, const char *ZeroString=NULL)
Definition: menuitems.c:1177
cMenuEditChrItem::allowed
char * allowed
Definition: menuitems.h:99
cMenuEditDateItem::value
time_t * value
Definition: menuitems.h:192
cMenuEditStrItem::SetKeepSpace
void SetKeepSpace(void)
Definition: menuitems.h:141
cMenuEditPrcItem
Definition: menuitems.h:84
cMenuEditStrItem::InsertMacro
void InsertMacro(void)
Definition: menuitems.c:596
cMenuEditItem::cMenuEditItem
cMenuEditItem(const char *Name)
Definition: menuitems.c:26
cMenuEditChrItem::Set
virtual void Set(void)
Definition: menuitems.c:353
cMenuEditIntItem::min
int min
Definition: menuitems.h:36
cMenuEditNumItem::length
int length
Definition: menuitems.h:65
cMenuEditIntItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:95
cMenuEditTranItem::cMenuEditTranItem
cMenuEditTranItem(const char *Name, int *Value, int *Source)
Definition: menuitems.c:906
cMenuEditBoolItem::Set
virtual void Set(void)
Definition: menuitems.c:148
cMenuEditStrlItem::Set
virtual void Set(void)
Definition: menuitems.c:832
cMenuEditTimeItem::Set
virtual void Set(void)
Definition: menuitems.c:1104
cMenuEditChrItem::current
const char * current
Definition: menuitems.h:100
cMenuEditPrcItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:296
cMenuEditTranItem::source
int * source
Definition: menuitems.h:182
cMenuEditStrItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:621
eOSState
eOSState
Definition: osdbase.h:18
cMenuEditTimeItem::value
int * value
Definition: menuitems.h:207
cMenuEditIntxItem::cMenuEditIntxItem
cMenuEditIntxItem(const char *Name, int *Value, int Min=INT_MIN, int Max=INT_MAX, int Factor=1, const char *NegString=NULL, const char *PosString=NULL)
Definition: menuitems.c:228
cMenuEditChanItem::noneString
const char * noneString
Definition: menuitems.h:169
cMenuEditItem
Definition: menuitems.h:19
cMenuEditStrItem::newchar
bool newchar
Definition: menuitems.h:117
cMenuEditIntItem::value
int * value
Definition: menuitems.h:35
cMenuEditIntItem::cMenuEditIntItem
cMenuEditIntItem(const char *Name, int *Value, int Min=0, int Max=INT_MAX, const char *MinString=NULL, const char *MaxString=NULL)
Definition: menuitems.c:67
cMenuEditStrItem::cMenuEditStrItem
cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed=NULL)
Definition: menuitems.c:385
cMenuEditStrItem::SetHelpKeys
void SetHelpKeys(void)
Definition: menuitems.c:460
cMenuSetupPage::SetupStore
void SetupStore(const char *Name, const char *Value=NULL)
Definition: menuitems.c:1267
cMenuEditBoolItem::falseString
const char * falseString
Definition: menuitems.h:46
cTimeMs
Definition: tools.h:401
cMenuEditStraItem::strings
const char *const * strings
Definition: menuitems.h:148
cMenuEditDateItem::weekdays
int * weekdays
Definition: menuitems.h:193
cMenuEditTimeItem::hh
int hh
Definition: menuitems.h:208
cMenuEditIntxItem::factor
int factor
Definition: menuitems.h:75
cMenuEditBitItem::mask
uint mask
Definition: menuitems.h:55
cMenuEditStrItem::uppercase
bool uppercase
Definition: menuitems.h:117
cMenuEditItem::helpBlue
const char * helpBlue
Definition: menuitems.h:22
cMenuEditTimeItem
Definition: menuitems.h:205
cMenuEditIntItem::max
int max
Definition: menuitems.h:36
cMenuEditStrlItem::length
int length
Definition: menuitems.h:160
cMenuEditItem::helpGreen
const char * helpGreen
Definition: menuitems.h:22
cMenuEditStrItem::autoAdvanceTimeout
cTimeMs autoAdvanceTimeout
Definition: menuitems.h:124
dvbdevice.h
cMenuEditStrItem::Delete
void Delete(void)
Definition: menuitems.c:590
cMenuEditItem::helpYellow
const char * helpYellow
Definition: menuitems.h:22
tDvbParameterMap
Definition: dvbdevice.h:81
cMenuSetupPage::SetSection
void SetSection(const char *Section)
Definition: menuitems.c:1240
cMenuSetupPage::Store
virtual void Store(void)=0
cMenuEditChanItem::Set
virtual void Set(void)
Definition: menuitems.c:860
cMenuEditBitItem::bit
int bit
Definition: menuitems.h:56
cMenuEditStrItem::LeaveEditMode
void LeaveEditMode(bool SaveValue=false)
Definition: menuitems.c:439
cString
Definition: tools.h:178
cMenuEditStraItem::Set
virtual void Set(void)
Definition: menuitems.c:813
cMenuEditTimeItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:1114
cMenuEditStrlItem::value
char * value
Definition: menuitems.h:159
cMenuEditStrItem::lastKey
eKeys lastKey
Definition: menuitems.h:123
cMenuEditDateItem::ToggleRepeating
void ToggleRepeating(void)
Definition: menuitems.c:999
cMenuSetupPage::SetPlugin
void SetPlugin(cPlugin *Plugin)
Definition: menuitems.c:1260
cMenuEditBitItem
Definition: menuitems.h:52
cMenuEditIntItem
Definition: menuitems.h:33
cMenuEditIntItem::Set
virtual void Set(void)
Definition: menuitems.c:82
cMenuEditStrItem::Set
virtual void Set(void)
Definition: menuitems.c:497
cMenuEditTimeItem::mm
int mm
Definition: menuitems.h:208
cMenuEditMapItem
Definition: menuitems.h:216
cMenuEditNumItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:197
cMenuEditStrItem::keepSpace
bool keepSpace
Definition: menuitems.h:114
cMenuEditStrItem::macro
int macro
Definition: menuitems.h:116
cMenuEditDateItem::oldvalue
time_t oldvalue
Definition: menuitems.h:194
cMenuEditMapItem::map
const tDvbParameterMap * map
Definition: menuitems.h:219
cMenuSetupPage::cMenuSetupPage
cMenuSetupPage(void)
Definition: menuitems.c:1233
cMenuEditStrlItem::index
int index
Definition: menuitems.h:158
cMenuEditBitItem::Set
virtual void Set(void)
Definition: menuitems.c:166
cMenuEditMapItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:1205
cMenuEditDateItem
Definition: menuitems.h:189
FileNameChars
const char * FileNameChars
Definition: menuitems.c:22
cMenuEditDateItem::cMenuEditDateItem
cMenuEditDateItem(const char *Name, time_t *Value, int *WeekDays=NULL)
Definition: menuitems.c:961
cMenuEditStrItem::pos
int pos
Definition: menuitems.h:113
cMenuEditStrItem::length
int length
Definition: menuitems.h:111
cMenuEditStraItem
Definition: menuitems.h:146
cMenuEditTranItem::transponder
int * transponder
Definition: menuitems.h:183
cMenuEditStrItem
Definition: menuitems.h:108
cMenuEditBitItem::cMenuEditBitItem
cMenuEditBitItem(const char *Name, uint *Value, uint Mask, const char *FalseString=NULL, const char *TrueString=NULL)
Definition: menuitems.c:157
cMenuEditStrItem::Inc
uint Inc(uint c, bool Up)
Definition: menuitems.c:552
osdbase.h
cMenuEditChrItem::~cMenuEditChrItem
~cMenuEditChrItem()
Definition: menuitems.c:348
cMenuEditTimeItem::cMenuEditTimeItem
cMenuEditTimeItem(const char *Name, int *Value)
Definition: menuitems.c:1094
cMenuEditPrcItem::cMenuEditPrcItem
cMenuEditPrcItem(const char *Name, double *Value, double Min=0.0, double Max=1.0, int Decimals=0)
Definition: menuitems.c:272
cMenuEditItem::DisplayHelp
bool DisplayHelp(bool Current)
Definition: menuitems.c:54
cMenuEditStrItem::macros
const char ** macros
Definition: menuitems.h:115
cMenuEditPrcItem::max
double max
Definition: menuitems.h:87
cMenuEditIntxItem::negString
const char * negString
Definition: menuitems.h:76
cMenuEditPrcItem::min
double min
Definition: menuitems.h:87
cMenuSetupPage
Definition: menuitems.h:229
cMenuEditStrItem::allowed
const char * allowed
Definition: menuitems.h:112
cMenuEditDateItem::oldweekdays
int oldweekdays
Definition: menuitems.h:195
cMenuEditChanItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:878
cMenuEditNumItem::blind
bool blind
Definition: menuitems.h:66
cMenuEditItem::~cMenuEditItem
~cMenuEditItem()
Definition: menuitems.c:32
cMenuEditDateItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: menuitems.c:1019
cMenuEditNumItem::cMenuEditNumItem
cMenuEditNumItem(const char *Name, char *Value, int Length, bool Blind=false)
Definition: menuitems.c:174
cMenuEditChanItem::cMenuEditChanItem
cMenuEditChanItem(const char *Name, int *Value, const char *NoneString=NULL)
Definition: menuitems.c:840
cMenuEditItem::name
char * name
Definition: menuitems.h:21
cMenuEditIntItem::maxString
const char * maxString
Definition: menuitems.h:37