@@ -6,9 +6,9 @@
msgstr ""
"Project-Id-Version: Yaepghd 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2009-01-30 20:42+0200\n"
-"PO-Revision-Date: 2009-01-28 10:51+0200\n"
-"Last-Translator: Klaus Schmidinger <kls@cadsoft.de>\n"
+"POT-Creation-Date: 2009-10-18 22:24+0200\n"
+"PO-Revision-Date: 2009-10-15 22:58+0100\n"
+"Last-Translator: Tomas Saxer <tsaxer@gmx.de>\n"
"Language-Team: <vdr@linuxtv.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n"
@@ -17,14 +17,15 @@
msgid "No Info"
msgstr "Keine Daten verfügbar."
-msgid "Screenshot"
-msgstr ""
+#, fuzzy
+msgid "Timer"
+msgstr "Zeit-Format"
msgid "Page up"
-msgstr ""
+msgstr "Seite hoch"
msgid "Page down"
-msgstr ""
+msgstr "Seite runter"
msgid "Once"
msgstr "Sobald"
@@ -54,10 +55,10 @@
msgstr ""
msgid "Up"
-msgstr ""
+msgstr "Hoch"
msgid "Down"
-msgstr ""
+msgstr "Runter"
msgid "Manual"
msgstr ""
@@ -83,6 +84,9 @@
msgid "Channel order"
msgstr ""
+msgid "Channel number"
+msgstr ""
+
msgid "Yet another EPG in HD"
msgstr ""
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: Yaepghd 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2009-01-30 20:42+0200\n"
+"POT-Creation-Date: 2009-10-18 22:24+0200\n"
"PO-Revision-Date: 2009-01-28 10:51+0200\n"
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@@ -18,8 +18,9 @@
msgid "No Info"
msgstr "Ei tietoja"
-msgid "Screenshot"
-msgstr "Ota kuva"
+#, fuzzy
+msgid "Timer"
+msgstr "Kellonajan esitysmuoto"
msgid "Page up"
msgstr "Sivu ylös"
@@ -84,8 +85,15 @@
msgid "Channel order"
msgstr "KanavajÀrjetys"
+#, fuzzy
+msgid "Channel number"
+msgstr "KanavajÀrjetys"
+
msgid "Yet another EPG in HD"
msgstr "Vaihtoehtoinen ohjelmaopas"
msgid "YaepgHD"
msgstr "Ohjelmaopas (YaepgHD)"
+
+#~ msgid "Screenshot"
+#~ msgstr "Ota kuva"
@@ -24,6 +24,8 @@
#include <vdr/osd.h>
#include <vdr/device.h>
#include <vdr/thread.h>
+#include <vdr/player.h>
+#include <vdr/timers.h>
#ifndef YAEPGHDVERSNUM
#error "You must apply the yaepghd patch for VDR!"
@@ -36,6 +38,7 @@
/**
* Macros
*/
+#define WO__MSG_RECDLG
#ifdef DEBUG
#define ASSERT assert
@@ -70,6 +73,7 @@
#define GRID_TIME_FONT THEME_FONT("gridTimeFont")
#define GRID_DATE_FONT THEME_FONT("gridDateFont")
#define EVENT_TITLE_FONT THEME_FONT("eventTitleFont")
+#define EVENT_INFO_FONT THEME_FONT("eventInfoFont")
#define EVENT_TIME_FONT THEME_FONT("eventTimeFont")
#define EVENT_DESC_FONT THEME_FONT("eventDescFont")
#define EVENT_DATE_FONT THEME_FONT("eventDateFont")
@@ -81,6 +85,7 @@
#define GRID_DATE_COLOR THEME_COLOR("gridDateColor")
#define GRID_SEP_COLOR THEME_COLOR("gridSepColor")
#define EVENT_TITLE_COLOR THEME_COLOR("eventTitleColor")
+#define EVENT_INFO_COLOR THEME_COLOR("eventInfoColor")
#define EVENT_TIME_COLOR THEME_COLOR("eventTimeColor")
#define EVENT_DESC_COLOR THEME_COLOR("eventDescColor")
#define EVENT_DATE_COLOR THEME_COLOR("eventDateColor")
@@ -90,6 +95,7 @@
#define GRID_TIME_GEOM THEME_GEOM("gridTimeGeom")
#define GRID_DATE_GEOM THEME_GEOM("gridDateGeom")
#define EVENT_TITLE_GEOM THEME_GEOM("eventTitleGeom")
+#define EVENT_INFO_GEOM THEME_GEOM("eventInfoGeom")
#define EVENT_TIME_GEOM THEME_GEOM("eventTimeGeom")
#define EVENT_DESC_GEOM THEME_GEOM("eventDescGeom")
#define EVENT_DATE_GEOM THEME_GEOM("eventDateGeom")
@@ -156,6 +162,7 @@
static int iChannelChange = CHANNEL_CHANGE_MANUAL;
static int iTimeFormat = TIME_FORMAT_12H;
static int iChannelOrder = CHANNEL_ORDER_DOWN;
+static int iChannelNumber = false;
static std::string sThemeName = "default";
static std::string sThemeDir = "";
@@ -272,6 +279,7 @@
AddElement("gridTimeFont", THEME_FONT);
AddElement("gridDateFont", THEME_FONT);
AddElement("eventTitleFont", THEME_FONT);
+ AddElement("eventInfoFont", THEME_FONT);
AddElement("eventTimeFont", THEME_FONT);
AddElement("eventDescFont", THEME_FONT);
AddElement("eventDateFont", THEME_FONT);
@@ -283,6 +291,7 @@
AddElement("gridTimeColor", THEME_COLOR);
AddElement("gridDateColor", THEME_COLOR);
AddElement("eventTitleColor", THEME_COLOR);
+ AddElement("eventInfoColor", THEME_COLOR);
AddElement("eventTimeColor", THEME_COLOR);
AddElement("eventDescColor", THEME_COLOR);
AddElement("eventDateColor", THEME_COLOR);
@@ -292,6 +301,7 @@
AddElement("gridTimeGeom", THEME_GEOM);
AddElement("gridDateGeom", THEME_GEOM);
AddElement("eventTitleGeom", THEME_GEOM);
+ AddElement("eventInfoGeom", THEME_GEOM);
AddElement("eventTimeGeom", THEME_GEOM);
AddElement("eventDescGeom", THEME_GEOM);
AddElement("eventDateGeom", THEME_GEOM);
@@ -765,6 +775,12 @@
*s-- = '\0';
}
+ /* Remove newlines in descriptions */
+ char *newlineText = tokText;
+ strreplace(newlineText, '\n', ' ');
+
+
+
/* Break text up into lines */
char *line, *nextLine = tokText;
@@ -1334,9 +1350,9 @@
chanInfo[i].nameBox.FgColor(GRID_CHAN_COLOR);
chanInfo[i].nameBox.BgColor(clrTransparent);
chanInfo[i].nameBox.Flags((eTextFlags)(TBOX_VALIGN_LEFT | TBOX_HALIGN_CENTER));
- chanInfo[i].nameBox.X(geom.x + (geom.w / 2));
+ chanInfo[i].nameBox.X(geom.x); // + (geom.w / 2));
chanInfo[i].nameBox.Y(geom.y + ROUND((float)i * (chanRowHeight + (float)horizSpace)));
- chanInfo[i].nameBox.W(geom.w / 2);
+ chanInfo[i].nameBox.W(geom.w); // / 2);
chanInfo[i].nameBox.H(ROUND(chanRowHeight));
chanInfo[i].nameBox.Generate();
@@ -1354,7 +1370,7 @@
YAEPG_INFO("Drawing grid channels at (%d %d)", geom.x, geom.y);
for (int i = 0; i < (int)chanInfo.size(); i++) {
- chanInfo[i].numBox.Draw(bmp);
+ //chanInfo[i].numBox.Draw(bmp);
chanInfo[i].nameBox.Draw(bmp);
}
}
@@ -1460,12 +1476,8 @@
void
cYaepgGridDate::UpdateTime(time_t _t)
{
- struct tm locTime;
-
+ sprintf(dateStr,"%s", *DateString(_t));
t = _t;
- localtime_r(&t, &locTime);
- snprintf(dateStr, sizeof(dateStr), "%s %d/%d",
- *WeekDayName((locTime.tm_wday + 6) % 6), locTime.tm_mon, locTime.tm_mday);
Generate();
}
@@ -1551,6 +1563,68 @@
box.Draw(bmp);
}
+
+
+
+
+/*
+ *****************************************************************************
+ * cYaepgEventInfo
+ *****************************************************************************
+ */
+class cYaepgEventInfo {
+private:
+ tGeom geom;
+ const cEvent *event;
+ cYaepgTextBox box;
+
+public:
+ cYaepgEventInfo(const cEvent *_event);
+ void UpdateEvent(const cEvent *_event) { event = _event; Generate(); }
+ void Generate(void);
+ void Draw(cBitmap *bmp);
+};
+
+cYaepgEventInfo::cYaepgEventInfo(const cEvent *_event) :
+ event(_event)
+{
+ geom = EVENT_INFO_GEOM;
+ Generate();
+}
+
+static const char *TimerMatchChars = " tT";
+
+void
+cYaepgEventInfo::Generate(void)
+{
+ int timerMatch=tmNone;
+ Timers.GetMatch(event, &timerMatch);
+ char t = TimerMatchChars[timerMatch];
+ char v = event->Vps() && (event->Vps() - event->StartTime()) ? 'V' : ' ';
+ char r = event->SeenWithin(30) && event->IsRunning() ? '*' : ' ';
+ cString buffer;
+ buffer = cString::sprintf("%c %c %c", t, v, r);
+
+ box.Text(buffer);
+ box.Font(EVENT_INFO_FONT);
+ box.FgColor(EVENT_INFO_COLOR);
+ box.BgColor(clrTransparent);
+ box.Flags((eTextFlags)(TBOX_VALIGN_LEFT | TBOX_HALIGN_BOTTOM | TBOX_WRAP));
+ box.X(geom.x);
+ box.Y(geom.y);
+ box.W(geom.w);
+ box.H(geom.h);
+ box.Generate();
+}
+
+void
+cYaepgEventInfo::Draw(cBitmap *bmp)
+{
+ YAEPG_INFO("Drawing event info at (%d %d)", geom.x, geom.y);
+
+ box.Draw(bmp);
+}
+
/*
*****************************************************************************
* cYaepgEventTime
@@ -1822,7 +1896,7 @@
};
const char *cYaepgHelpBar::helpStrs[4] = {
- trNOOP("Screenshot"),
+ trNOOP("Timer"),
trNOOP("Page up"),
trNOOP("Page down"),
trVDR("Button$Switch")
@@ -1843,7 +1917,7 @@
for (int i = 0; i < 4; i++) {
boxes[i].Text(tr(helpStrs[i]));
boxes[i].Font(GRID_EVENT_FONT);
- boxes[i].FgColor(GRID_EVENT_COLOR);
+ boxes[i].FgColor(EVENT_TITLE_COLOR);
boxes[i].BgColor(clrTransparent);
boxes[i].Flags((eTextFlags)(TBOX_VALIGN_LEFT | TBOX_HALIGN_CENTER));
boxes[i].X(geom.x + (i * boxWidth) + dotDiam);
@@ -1868,9 +1942,6 @@
}
for (int i = 0; i < 4; i++) {
- bmp->DrawEllipse(dots[i].x1, dots[i].y1,
- dots[i].x2, dots[i].y2,
- dots[i].color);
boxes[i].Draw(bmp);
}
}
@@ -2488,11 +2559,15 @@
cYaepgGridTime *gridTime;
cYaepgGridDate *gridDate;
cYaepgEventTitle *eventTitle;
+ cYaepgEventInfo *eventInfo;
cYaepgEventTime *eventTime;
cYaepgEventDesc *eventDesc;
cYaepgEventDate *eventDate;
cYaepgTimeLine *timeLine;
cYaepgHelpBar *helpBar;
+ #ifndef WO__MSG_RECDLG
+ cYaepgHelpBar *helpBar;
+ #endif
public:
cYaepghd(void);
@@ -2506,6 +2581,7 @@
void UpdateEvent(const cEvent *newEvent);
void MoveCursor(eCursorDir dir);
void SwitchToCurrentChannel(bool closeVidWin = false);
+ void AddDelTimer(void);
void Draw(void);
};
@@ -2523,11 +2599,20 @@
gridTime(NULL),
gridDate(NULL),
eventTitle(NULL),
+ eventInfo(NULL),
eventTime(NULL),
eventDesc(NULL),
eventDate(NULL),
timeLine(NULL),
+ #ifndef WO__MSG_RECDLG
+ helpBar(NULL),
+ recDlg(NULL)
+#else
helpBar(NULL)
+#endif
+
+
+
{
memset(&mainWin, 0, sizeof(mainWin));
chanVec.clear();
@@ -2543,6 +2628,7 @@
delete gridDate;
delete timeLine;
delete eventTitle;
+ delete eventInfo;
delete eventTime;
delete eventDesc;
delete eventDate;
@@ -2605,6 +2691,7 @@
timeLine = new cYaepgTimeLine(t);
const cEvent *e = gridEvents->Event();
eventTitle = new cYaepgEventTitle(e);
+ eventInfo = new cYaepgEventInfo(e);
eventTime = new cYaepgEventTime(e);
eventDesc = new cYaepgEventDesc(e);
eventDate = new cYaepgEventDate();
@@ -2613,6 +2700,35 @@
Draw();
}
+void
+cYaepghd::AddDelTimer(void)
+ {
+ const cEvent *event=gridEvents->Event();
+ int timerMatch;
+ cTimer *ti;
+ ti=Timers.GetMatch(event, &timerMatch);
+ if (timerMatch==tmFull)
+ {
+ if (ti)
+ {
+ isyslog("deleting timer %s", *ti->ToDescr());
+ Timers.Del(ti);
+ Timers.SetModified();
+ eventInfo->UpdateEvent(event);
+ }
+ }
+ else
+ {
+ cTimer *timer = new cTimer(event);
+ Timers.Add(timer);
+ Timers.SetModified();
+ isyslog("timer %s added (active)", *timer->ToDescr());
+ eventInfo->UpdateEvent(event);
+ }
+ }
+
+
+
eOSState
cYaepghd::ProcessKey(eKeys key)
{
@@ -2657,8 +2773,12 @@
else
state = osEnd;
break;
+
+
+
case kRed:
- cDevice::PrimaryDevice()->GrabImageFile("yaepghd.jpg", true, 256, -1, -1);
+ AddDelTimer();
+ needsRedraw = true;
state = osContinue;
break;
case kGreen:
@@ -2683,6 +2803,9 @@
state = osContinue;
// -12 hours
break;
+
+
+
case k0 ... k9:
if (directChan || (key != k0)) {
directChan = ((directChan * 10) + ((key & ~k_Repeat) - k0)) % 100000;
@@ -2852,8 +2975,10 @@
}
event = newEvent;
eventTitle->UpdateEvent(event);
+ eventInfo->UpdateEvent(event);
eventTime->UpdateEvent(event);
eventDesc->UpdateEvent(event);
+
}
void
@@ -2933,6 +3058,7 @@
gridDate->Draw(mainBmp);
timeLine->Draw(mainBmp);
eventTitle->Draw(mainBmp);
+ eventInfo->Draw(mainBmp);
eventTime->Draw(mainBmp);
eventDesc->Draw(mainBmp);
eventDate->Draw(mainBmp);
@@ -2954,6 +3080,7 @@
int iNewChannelChange;
int iNewTimeFormat;
int iNewChannelOrder;
+ int iNewChannelNumber;
int iNewThemeIndex;
char **themes;
int numThemes;
@@ -2977,6 +3104,7 @@
iChannelChange = iNewChannelChange;
iTimeFormat = iNewTimeFormat;
iChannelOrder = iNewChannelOrder;
+ iChannelNumber = iNewChannelNumber;
sThemeName = themes[iNewThemeIndex];
SetupStore("HideMenuEntry", iHideMenuEntry);
@@ -2984,6 +3112,7 @@
SetupStore("ChannelChange", iChannelChange);
SetupStore("TimeFormat", iTimeFormat);
SetupStore("ChannelOrder", iChannelOrder);
+ SetupStore("ChannelNumber", iChannelNumber);
SetupStore("Theme", sThemeName.c_str());
}
@@ -3022,6 +3151,7 @@
Add(new cMenuEditStraItem (tr("Channel change"), &iNewChannelChange, CHANNEL_CHANGE_COUNT, CH_CHANGE_MODES));
Add(new cMenuEditStraItem (tr("Time format"), &iNewTimeFormat, TIME_FORMAT_COUNT, TIME_FORMATS));
Add(new cMenuEditStraItem (tr("Channel order"), &iNewChannelOrder, CHANNEL_ORDER_COUNT, CH_ORDER_FORMATS));
+ Add(new cMenuEditBoolItem (tr("Channel number"), &iNewChannelNumber));
Add(new cMenuEditStraItem (trVDR("Setup.OSD$Theme"), &iNewThemeIndex, numThemes, themes));
}
@@ -3172,6 +3302,7 @@
else if (!strcasecmp(Name, "ChannelChange")) { iChannelChange = atoi(Value); }
else if (!strcasecmp(Name, "TimeFormat")) { iTimeFormat = atoi(Value); }
else if (!strcasecmp(Name, "ChannelOrder")) { iChannelOrder = atoi(Value); }
+ else if (!strcasecmp(Name, "ChannelNumber")) { iChannelNumber = atoi(Value); }
else if (!strcasecmp(Name, "Theme")) { Utf8Strn0Cpy(themeName, Value, sizeof(themeName)); sThemeName = themeName; }
else { return false; }