diff options
Diffstat (limited to 'recmenuitem.h')
-rw-r--r-- | recmenuitem.h | 495 |
1 files changed, 495 insertions, 0 deletions
diff --git a/recmenuitem.h b/recmenuitem.h new file mode 100644 index 0000000..9ea6d19 --- /dev/null +++ b/recmenuitem.h @@ -0,0 +1,495 @@ +#ifndef __TVGUIDE_RECMENUITEM_H
+#define __TVGUIDE_RECMENUITEM_H
+
+#define AUTO_ADVANCE_TIMEOUT 1500
+
+using namespace std;
+
+#include <string>
+#include <sstream>
+#include <vdr/plugin.h>
+#include <vdr/tools.h>
+#include "libskindesigner/osdelements.h"
+#include "searchtimer.h"
+
+enum eRecMenuState {
+ rmsConsumed,
+ rmsNotConsumed,
+ rmsRefresh,
+ rmsContinue,
+ rmsClose,
+ rmsDisabled,
+ //INSTANT TIMER
+ rmsInstantRecord,
+ rmsInstantRecordFolder,
+ rmsIgnoreTimerConflict,
+ rmsDeleteTimerConflictMenu,
+ rmsEditTimerConflictMenu,
+ rmsSearchRerunsTimerConflictMenu,
+ rmsSaveTimerConflictMenu,
+ rmsTimerConflictShowInfo,
+ rmsDeleteTimer,
+ rmsDeleteTimerConfirmation,
+ rmsEditTimer,
+ rmsSaveTimer,
+ //SEARCH
+ rmsSearch,
+ rmsSearchWithOptions,
+ rmsSearchPerform,
+ rmsSearchShowInfo,
+ rmsSearchRecord,
+ rmsSearchRecordConfirm,
+ rmsSearchNothingFoundConfirm,
+ //SERIES TIMER
+ rmsSeriesTimer,
+ rmsSeriesTimerFolder,
+ rmsSeriesTimerCreate,
+ //SEARCHTIMER
+ rmsSearchTimer,
+ rmsSearchTimerOptions,
+ rmsSearchTimers,
+ rmsSearchTimerEdit,
+ rmsSearchTimerEditAdvanced,
+ rmsSearchTimerTest,
+ rmsSearchTimerSave,
+ rmsSearchTimerCreateWithTemplate,
+ rmsSearchTimerDeleteConfirm,
+ rmsSearchTimerDelete,
+ rmsSearchTimerDeleteWithTimers,
+ rmsSearchTimerRecord,
+ //SWITCHTIMER
+ rmsSwitchTimer,
+ rmsSwitchTimerCreate,
+ rmsSwitchTimerDelete,
+ //RECORDINGS SEARCH
+ rmsRecordingSearch,
+ rmsRecordingSearchResult,
+ //TIMER CONFLICTS
+ rmsTimerConflict,
+ rmsTimerConflicts,
+ rmsTimerConflictIgnoreReruns,
+ rmsTimerConflictRecordRerun,
+ //TIMELINE
+ rmsTimeline,
+ rmsTimelineTimerEdit,
+ rmsTimelineTimerSave,
+ rmsTimelineTimerDelete,
+ //FAVORITES
+ rmsFavoritesRecord,
+ rmsFavoritesNow,
+ rmsFavoritesNext,
+ rmsFavoritesUser1,
+ rmsFavoritesUser2,
+ rmsFavoritesUser3,
+ rmsFavoritesUser4,
+};
+
+// --- cRecMenuItem -------------------------------------------------------------
+class cRecMenuItem : public cListObject {
+protected:
+ static long idCounter;
+ long id;
+ bool init;
+ bool active;
+ bool selectable;
+ eRecMenuState action;
+ //height of item in percent of screen height
+ int height;
+ string text;
+public:
+ cRecMenuItem(void);
+ virtual ~cRecMenuItem(void);
+ virtual void SetActive(void) { active = true; }
+ virtual void SetInactive(void) { active = false; }
+ long Id(void) { return id; };
+ bool Selectable(void) { return selectable; }
+ bool IsNew(void);
+ bool SetNew(void) { init = true; };
+ bool Active(void) { return active; }
+ int GetHeight(void) { return height; };
+ string GetText(void) { return text; };
+ virtual void SetTokens(cViewGrid *menu) {};
+ virtual eRecMenuState ProcessKey(eKeys Key) { return rmsNotConsumed; };
+};
+
+// --- cRecMenuItemInfo -------------------------------------------------------
+class cRecMenuItemInfo : public cRecMenuItem {
+private:
+ int numLines;
+ string line1;
+ string line2;
+ string line3;
+ string line4;
+public:
+ cRecMenuItemInfo(string line1, int numLines = 1, string line2 = "", string line3 = "", string line4 = "");
+ virtual ~cRecMenuItemInfo(void);
+ string GetText(void) { return text; };
+ void SetTokens(cViewGrid *menu);
+};
+
+// --- cRecMenuItemButton -------------------------------------------------------
+class cRecMenuItemButton : public cRecMenuItem {
+private:
+ string text;
+public:
+ cRecMenuItemButton(string text, eRecMenuState action, bool active);
+ virtual ~cRecMenuItemButton(void);
+ string GetText(void) { return text; };
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemButtonYesNo -------------------------------------------------------
+class cRecMenuItemButtonYesNo : public cRecMenuItem {
+private:
+ string textYes;
+ string textNo;
+ eRecMenuState actionNo;
+ bool yesActive;
+public:
+ cRecMenuItemButtonYesNo(string textYes,
+ string textNo,
+ eRecMenuState actionYes,
+ eRecMenuState actionNo,
+ bool active);
+ virtual ~cRecMenuItemButtonYesNo(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemInt -------------------------------------------------------
+class cRecMenuItemInt : public cRecMenuItem {
+private:
+ int currentVal;
+ int *callback;
+ int minVal;
+ int maxVal;
+ bool fresh;
+public:
+ cRecMenuItemInt(string text,
+ int initialVal,
+ int minVal,
+ int maxVal,
+ bool active = false,
+ int *callback = NULL,
+ eRecMenuState action = rmsNotConsumed);
+ virtual ~cRecMenuItemInt(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemBool -------------------------------------------------------
+class cRecMenuItemBool : public cRecMenuItem {
+private:
+ bool yes;
+ bool *callback;
+public:
+ cRecMenuItemBool(string text,
+ bool initialVal,
+ bool active = false,
+ bool *callback = NULL,
+ eRecMenuState action = rmsNotConsumed);
+ virtual ~cRecMenuItemBool(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemSelect -------------------------------------------------------
+class cRecMenuItemSelect : public cRecMenuItem {
+private:
+ int currentVal;
+ int *callback;
+ vector<string> strings;
+ int numValues;
+public:
+ cRecMenuItemSelect(string text,
+ vector<string> strings,
+ int initialVal,
+ bool active = false,
+ int *callback = NULL,
+ eRecMenuState action = rmsNotConsumed);
+ virtual ~cRecMenuItemSelect(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemText -------------------------------------------------------
+class cRecMenuItemText : public cRecMenuItem {
+private:
+ char *value;
+ string buffer;
+ char *callback;
+ int length;
+ const char *allowed;
+ int pos, offset;
+ bool insert, newchar, uppercase;
+ int lengthUtf8;
+ uint *valueUtf8;
+ uint *allowedUtf8;
+ uint *charMapUtf8;
+ uint *currentCharUtf8;
+ eKeys lastKey;
+ cTimeMs autoAdvanceTimeout;
+ uint *IsAllowed(uint c);
+ void AdvancePos(void);
+ uint Inc(uint c, bool Up);
+ void Type(uint c);
+ void Insert(void);
+ void Delete(void);
+ void EnterEditMode(void);
+ void LeaveEditMode(bool SaveValue = false);
+ bool InEditMode(void) { return valueUtf8 != NULL; };
+ void SetText(void);
+public:
+ cRecMenuItemText(string title,
+ char *initialVal,
+ int length,
+ bool active = false,
+ char *callback = NULL);
+ virtual ~cRecMenuItemText(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemTime -------------------------------------------------------
+class cRecMenuItemTime : public cRecMenuItem {
+private:
+ int value;
+ int *callback;
+ int mm;
+ int hh;
+ int pos;
+ bool fresh;
+public:
+ cRecMenuItemTime(string text,
+ int initialVal,
+ bool active = false,
+ int *callback = NULL,
+ eRecMenuState action = rmsNotConsumed);
+ virtual ~cRecMenuItemTime(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemDay -------------------------------------------------------
+class cRecMenuItemDay : public cRecMenuItem {
+private:
+ time_t currentVal;
+ time_t *callback;
+public:
+ cRecMenuItemDay(string text,
+ time_t initialVal,
+ bool active = false,
+ time_t *callback = NULL,
+ eRecMenuState action = rmsNotConsumed);
+ virtual ~cRecMenuItemDay(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemChannelChooser -------------------------------------------------------
+class cRecMenuItemChannelChooser : public cRecMenuItem {
+private:
+ cChannel *channel;
+ int channelNumber;
+ int *callback;
+ bool initialChannelSet;
+ bool fresh;
+public:
+ cRecMenuItemChannelChooser (string text,
+ cChannel *initialChannel,
+ bool active = false,
+ int *callback = NULL,
+ eRecMenuState action = rmsNotConsumed);
+ virtual ~cRecMenuItemChannelChooser(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemDayChooser -------------------------------------------------------
+class cRecMenuItemDayChooser : public cRecMenuItem {
+private:
+ int weekdays;
+ int *callback;
+ int selectedDay;
+ void ToggleDay(void);
+ bool WeekDaySet(unsigned day);
+public:
+ cRecMenuItemDayChooser (string text,
+ int weekdays,
+ bool active = false,
+ int *callback = NULL);
+ virtual ~cRecMenuItemDayChooser(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemSelectDirectory -------------------------------------------------------
+class cRecMenuItemSelectDirectory : public cRecMenuItem {
+private:
+ string text;
+ string originalFolder;
+ vector<string> folders;
+ int currentVal;
+ char *callback;
+ int numValues;
+ void SetCallback(void);
+ int GetInitial(void);
+public:
+ cRecMenuItemSelectDirectory(string text,
+ string originalFolder,
+ bool active = false,
+ char *callback = NULL,
+ eRecMenuState action = rmsNotConsumed,
+ bool isSearchTimer = false);
+ virtual ~cRecMenuItemSelectDirectory(void) {};
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemTimerConflictHeader -------------------------------------------------------
+class cRecMenuItemTimerConflictHeader: public cRecMenuItem {
+private:
+ time_t conflictStart;
+ time_t conflictStop;
+ time_t overlapStart;
+ time_t overlapStop;
+public:
+ cRecMenuItemTimerConflictHeader(time_t conflictStart,
+ time_t conflictStop,
+ time_t overlapStart,
+ time_t overlapStop);
+ void SetTokens(cViewGrid *menu);
+ virtual ~cRecMenuItemTimerConflictHeader(void);
+};
+
+// --- cRecMenuItemTimer -------------------------------------------------------
+class cRecMenuItemTimer : public cRecMenuItem {
+private:
+ const cTimer *timer;
+ eRecMenuState action2;
+ eRecMenuState action3;
+ eRecMenuState action4;
+ int iconActive;
+ time_t conflictStart;
+ time_t conflictStop;
+ time_t overlapStart;
+ time_t overlapStop;
+public:
+ cRecMenuItemTimer(const cTimer *timer,
+ eRecMenuState action1,
+ eRecMenuState action2,
+ eRecMenuState action3,
+ eRecMenuState action4,
+ time_t conflictStart,
+ time_t conflictStop,
+ time_t overlapStart,
+ time_t overlapStop,
+ bool active);
+ virtual ~cRecMenuItemTimer(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemEvent -------------------------------------------------------
+class cRecMenuItemEvent : public cRecMenuItem {
+private:
+ const cEvent *event;
+ eRecMenuState action2;
+ int iconActive;
+public:
+ cRecMenuItemEvent(const cEvent *event,
+ eRecMenuState action1,
+ eRecMenuState action2,
+ bool active);
+ virtual ~cRecMenuItemEvent(void);
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+ const cEvent *GetEvent(void) { return event; };
+};
+
+// --- cRecMenuItemRecording -------------------------------------------------------
+class cRecMenuItemRecording : public cRecMenuItem {
+private:
+ cRecording *recording;
+public:
+ cRecMenuItemRecording(cRecording *recording, bool active);
+ virtual ~cRecMenuItemRecording(void) {};
+ void SetTokens(cViewGrid *menu);
+};
+
+// --- cRecMenuItemSearchTimer -------------------------------------------------------
+class cRecMenuItemSearchTimer : public cRecMenuItem {
+private:
+ cTVGuideSearchTimer timer;
+ eRecMenuState action1;
+ eRecMenuState action2;
+ eRecMenuState action3;
+ int iconActive;
+public:
+ cRecMenuItemSearchTimer(cTVGuideSearchTimer timer,
+ eRecMenuState action1,
+ eRecMenuState action2,
+ eRecMenuState action3,
+ bool active);
+ virtual ~cRecMenuItemSearchTimer(void);
+ cTVGuideSearchTimer GetTimer(void) { return timer; };
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemTimelineHeader -------------------------------------------------------
+class cRecMenuItemTimelineHeader : public cRecMenuItem {
+private:
+ time_t day;
+ cTimer *timer;
+public:
+ cRecMenuItemTimelineHeader(time_t day);
+ virtual ~cRecMenuItemTimelineHeader(void);
+ void SetTokens(cViewGrid *menu);
+ void SetDay(time_t day) { this->day = day; };
+ void SetCurrentTimer(cTimer *timer) { this->timer = timer; };
+ void UnsetCurrentTimer(void) { timer = NULL; };
+};
+
+// --- cRecMenuItemTimelineTimer -------------------------------------------------------
+class cRecMenuItemTimelineTimer : public cRecMenuItem {
+private:
+ cTimer *timer;
+ time_t start;
+ time_t stop;
+public:
+ cRecMenuItemTimelineTimer(cTimer *timer, time_t start, time_t stop, bool active);
+ virtual ~cRecMenuItemTimelineTimer(void);
+ void SetTokens(cViewGrid *menu);
+ cTimer *GetTimer(void);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemFavorite -------------------------------------------------------
+class cRecMenuItemFavorite : public cRecMenuItem {
+private:
+ cTVGuideSearchTimer favorite;
+ eRecMenuState action1;
+public:
+ cRecMenuItemFavorite(cTVGuideSearchTimer favorite,
+ eRecMenuState action1,
+ bool active);
+ virtual ~cRecMenuItemFavorite(void) {};
+ void SetTokens(cViewGrid *menu);
+ cTVGuideSearchTimer GetFavorite(void) { return favorite; };
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+// --- cRecMenuItemFavoriteStatic -------------------------------------------------------
+class cRecMenuItemFavoriteStatic : public cRecMenuItem {
+private:
+ string text;
+public:
+ cRecMenuItemFavoriteStatic(string text, eRecMenuState action, bool active);
+ virtual ~cRecMenuItemFavoriteStatic(void) {};
+ void SetTokens(cViewGrid *menu);
+ eRecMenuState ProcessKey(eKeys Key);
+};
+
+#endif //__TVGUIDE_RECMENUITEM_H
\ No newline at end of file |