vdr  2.7.6
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.2 2025/03/02 11:03:35 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) override;
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) override;
42  };
43 
45 protected:
46  const char *falseString, *trueString;
47  virtual void Set(void) override;
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) override;
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) override;
68 public:
69  cMenuEditNumItem(const char *Name, char *Value, int Length, bool Blind = false);
70  virtual eOSState ProcessKey(eKeys Key) override;
71  };
72 
74 private:
75  int factor;
76  const char *negString, *posString;
77  void SetHelpKeys(void);
78  virtual void Set(void) override;
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) override;
82  };
83 
85 protected:
86  double *value;
87  double min, max;
88  int decimals;
89  int factor;
90  virtual void Set(void) override;
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) override;
94  };
95 
97 private:
98  char *value;
99  char *allowed;
100  const char *current;
101  virtual void Set(void) override;
102 public:
103  cMenuEditChrItem(const char *Name, char *Value, const char *Allowed);
105  virtual eOSState ProcessKey(eKeys Key) override;
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) override;
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) override;
144  };
145 
147 private:
148  const char * const *strings;
149 protected:
150  virtual void Set(void) override;
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) override;
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) override;
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) override;
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) override;
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) override;
199 public:
200  cMenuEditDateItem(const char *Name, time_t *Value, int *WeekDays = NULL);
201  void ToggleRepeating(void);
202  virtual eOSState ProcessKey(eKeys Key) override;
203  };
204 
206 protected:
207  int *value;
208  int hh, mm;
209  int pos;
210  virtual void Set(void) override;
211 public:
212  cMenuEditTimeItem(const char *Name, int *Value);
213  virtual eOSState ProcessKey(eKeys Key) override;
214  };
215 
217 protected:
218  int *value;
220  const char *zeroString;
221  virtual void Set(void) override;
222 public:
223  cMenuEditMapItem(const char *Name, int *Value, const tDvbParameterMap *Map, const char *ZeroString = NULL);
224  virtual eOSState ProcessKey(eKeys Key) override;
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) override;
240  void SetPlugin(cPlugin *Plugin);
241  };
242 
243 #endif //__MENUITEMS_H
virtual void Set(void) override
Definition: menuitems.c:165
cMenuEditBitItem(const char *Name, uint *Value, uint Mask, const char *FalseString=NULL, const char *TrueString=NULL)
Definition: menuitems.c:156
virtual void Set(void) override
Definition: menuitems.c:147
cMenuEditBoolItem(const char *Name, int *Value, const char *FalseString=NULL, const char *TrueString=NULL)
Definition: menuitems.c:139
const char * falseString
Definition: menuitems.h:46
const char * trueString
Definition: menuitems.h:46
cString * channelID
Definition: menuitems.h:171
cMenuEditChanItem(const char *Name, int *Value, const char *NoneString=NULL)
Definition: menuitems.c:836
const char * noneString
Definition: menuitems.h:169
virtual void Set(void) override
Definition: menuitems.c:856
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:874
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:360
const char * current
Definition: menuitems.h:100
cMenuEditChrItem(const char *Name, char *Value, const char *Allowed)
Definition: menuitems.c:336
char * allowed
Definition: menuitems.h:99
virtual void Set(void) override
Definition: menuitems.c:352
int FindDayIndex(int WeekDays)
Definition: menuitems.c:968
void ToggleRepeating(void)
Definition: menuitems.c:995
static int days[]
Definition: menuitems.h:191
virtual void Set(void) override
Definition: menuitems.c:976
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:1015
time_t * value
Definition: menuitems.h:192
cMenuEditDateItem(const char *Name, time_t *Value, int *WeekDays=NULL)
Definition: menuitems.c:957
cMenuEditIntItem(const char *Name, int *Value, int Min=0, int Max=INT_MAX, const char *MinString=NULL, const char *MaxString=NULL)
Definition: menuitems.c:66
const char * maxString
Definition: menuitems.h:37
virtual void Set(void) override
Definition: menuitems.c:81
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:94
const char * minString
Definition: menuitems.h:37
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:227
void SetHelpKeys(void)
Definition: menuitems.c:236
const char * negString
Definition: menuitems.h:76
const char * posString
Definition: menuitems.h:76
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:252
virtual void Set(void) override
Definition: menuitems.c:242
const char * helpYellow
Definition: menuitems.h:22
bool DisplayHelp(bool Current)
Definition: menuitems.c:53
char * name
Definition: menuitems.h:21
const char * helpRed
Definition: menuitems.h:22
void SetHelp(const char *Red, const char *Green=NULL, const char *Yellow=NULL, const char *Blue=NULL)
Definition: menuitems.c:43
const char * helpGreen
Definition: menuitems.h:22
void SetValue(const char *Value)
Definition: menuitems.c:37
bool helpDisplayed
Definition: menuitems.h:23
cMenuEditItem(const char *Name)
Definition: menuitems.c:26
const char * helpBlue
Definition: menuitems.h:22
const tDvbParameterMap * map
Definition: menuitems.h:219
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:1201
virtual void Set(void) override
Definition: menuitems.c:1182
const char * zeroString
Definition: menuitems.h:220
cMenuEditMapItem(const char *Name, int *Value, const tDvbParameterMap *Map, const char *ZeroString=NULL)
Definition: menuitems.c:1173
virtual void Set(void) override
Definition: menuitems.c:182
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:196
cMenuEditNumItem(const char *Name, char *Value, int Length, bool Blind=false)
Definition: menuitems.c:173
virtual void Set(void) override
Definition: menuitems.c:288
cMenuEditPrcItem(const char *Name, double *Value, double Min=0.0, double Max=1.0, int Decimals=0)
Definition: menuitems.c:271
double * value
Definition: menuitems.h:86
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:295
const char * allowed
Definition: menuitems.h:112
uint Inc(uint c, bool Up)
Definition: menuitems.c:548
uint * valueUtf8
Definition: menuitems.h:119
void Insert(void)
Definition: menuitems.c:579
void Delete(void)
Definition: menuitems.c:586
void LeaveEditMode(bool SaveValue=false)
Definition: menuitems.c:438
uint * allowedUtf8
Definition: menuitems.h:120
void SetKeepSpace(void)
Definition: menuitems.h:141
void Type(uint c)
Definition: menuitems.c:565
cTimeMs autoAdvanceTimeout
Definition: menuitems.h:124
uint * currentCharUtf8
Definition: menuitems.h:122
virtual void Set(void) override
Definition: menuitems.c:496
cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed=NULL)
Definition: menuitems.c:384
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:617
void InsertMacro(void)
Definition: menuitems.c:592
const char ** macros
Definition: menuitems.h:115
bool InEditMode(void)
Definition: menuitems.h:137
void AdvancePos(void)
Definition: menuitems.c:478
void SetMacros(const char **Macros)
Definition: menuitems.c:414
void SetHelpKeys(void)
Definition: menuitems.c:459
void EnterEditMode(void)
Definition: menuitems.c:421
uint * charMapUtf8
Definition: menuitems.h:121
uint * IsAllowed(uint c)
Definition: menuitems.c:467
virtual void Set(void) override
Definition: menuitems.c:809
const char *const * strings
Definition: menuitems.h:148
cMenuEditStraItem(const char *Name, int *Value, int NumStrings, const char *const *Strings)
Definition: menuitems.c:802
const cStringList * strings
Definition: menuitems.h:157
virtual void Set(void) override
Definition: menuitems.c:828
cMenuEditStrlItem(const char *Name, char *Value, int Length, const cStringList *Strings)
Definition: menuitems.c:816
cMenuEditTimeItem(const char *Name, int *Value)
Definition: menuitems.c:1090
virtual void Set(void) override
Definition: menuitems.c:1100
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:1110
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:920
cMenuEditTranItem(const char *Name, int *Value, int *Source)
Definition: menuitems.c:902
virtual eOSState ProcessKey(eKeys Key) override
Definition: menuitems.c:1241
virtual void Store(void)=0
cMenuSetupPage(void)
Definition: menuitems.c:1229
void SetSection(const char *Section)
Definition: menuitems.c:1236
void SetupStore(const char *Name, const char *Value=NULL)
Definition: menuitems.c:1263
cPlugin * plugin
Definition: menuitems.h:231
void SetPlugin(cPlugin *Plugin)
Definition: menuitems.c:1256
Definition: plugin.h:22
Definition: tools.h:178
Definition: tools.h:404
eKeys
Definition: keys.h:16
const char * FileNameChars
Definition: menuitems.c:22
eOSState
Definition: osdbase.h:18