summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2007-02-25 23:08:12 +0000
committerDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2007-02-25 23:08:12 +0000
commit0a538a615d2faa693e649e04e5c0f31ac5b11ba2 (patch)
treebb2b575f116e6779aa9b27863e907d802245b68a
parent3ef60cf2f005573ad9c11a7b5765e0bd4d65c5a0 (diff)
downloadvdr-plugin-live-0a538a615d2faa693e649e04e5c0f31ac5b11ba2.tar.gz
vdr-plugin-live-0a538a615d2faa693e649e04e5c0f31ac5b11ba2.tar.bz2
- Added posibility to switch channels from status box.
- Regouping of status box active buttons.
-rw-r--r--i18n.cpp176
-rw-r--r--images/Makefile3
-rw-r--r--images/one_downarrow.pngbin0 -> 808 bytes
-rw-r--r--images/one_uparrow.pngbin0 -> 781 bytes
-rw-r--r--pages/infobox.ecpp85
-rw-r--r--pages/pageelems.ecpp9
6 files changed, 261 insertions, 12 deletions
diff --git a/i18n.cpp b/i18n.cpp
index eeb7408..be74738 100644
--- a/i18n.cpp
+++ b/i18n.cpp
@@ -685,6 +685,72 @@ const tI18nPhrase Phrases[] = {
"", // Dansk
"", // Czech
},
+ { "Searchtimers", // English
+ "Suchtimer", // Deutsch
+ "", // Slovenski
+ "", // Italiano
+ "", // Nederlands
+ "", // Português
+ "", // Français
+ "", // Norsk
+ "", // Finnish
+ "", // Polski
+ "", // Español
+ "", // Greek
+ "", // Svenska
+ "", // Românã
+ "", // Magyar
+ "", // Català
+ "", // Russian
+ "", // Hrvatski
+ "", // Eesti
+ "", // Dansk
+ "", // Czech
+ },
+ { "previous channel", // English
+ "Sender zurück", // Deutsch
+ "", // Slovenski
+ "", // Italiano
+ "", // Nederlands
+ "", // Português
+ "", // Français
+ "", // Norsk
+ "", // Finnish
+ "", // Polski
+ "", // Español
+ "", // Greek
+ "", // Svenska
+ "", // Românã
+ "", // Magyar
+ "", // Català
+ "", // Russian
+ "", // Hrvatski
+ "", // Eesti
+ "", // Dansk
+ "", // Czech
+ },
+ { "next channel", // English
+ "Sender vor", // Deutsch
+ "", // Slovenski
+ "", // Italiano
+ "", // Nederlands
+ "", // Português
+ "", // Français
+ "", // Norsk
+ "", // Finnish
+ "", // Polski
+ "", // Español
+ "", // Greek
+ "", // Svenska
+ "", // Românã
+ "", // Magyar
+ "", // Català
+ "", // Russian
+ "", // Hrvatski
+ "", // Eesti
+ "", // Dansk
+ "", // Czech
+ },
{ "Record this", // English
"Diese Sendung aufnehmen", // Deutsch
"", // Slovenski
@@ -795,6 +861,116 @@ const tI18nPhrase Phrases[] = {
"", // Dansk
"", // Czech
},
+ { "toggle status update.", // English
+ "Statusabfrage ein- oder ausschalten.", // Deutsch
+ "", // Slovenski
+ "", // Italiano
+ "", // Nederlands
+ "", // Português
+ "", // Français
+ "", // Norsk
+ "", // Finnish
+ "", // Polski
+ "", // Español
+ "", // Greek
+ "", // Svenska
+ "", // Românã
+ "", // Magyar
+ "", // Català
+ "", // Russian
+ "", // Hrvatski
+ "", // Eesti
+ "", // Dansk
+ "", // Czech
+ },
+ { "no epg info for current event!", // English
+ "Keine Infos zur Sendung!", // Deutsch
+ "", // Slovenski
+ "", // Italiano
+ "", // Nederlands
+ "", // Português
+ "", // Français
+ "", // Norsk
+ "", // Finnish
+ "", // Polski
+ "", // Español
+ "", // Greek
+ "", // Svenska
+ "", // Românã
+ "", // Magyar
+ "", // Català
+ "", // Russian
+ "", // Hrvatski
+ "", // Eesti
+ "", // Dansk
+ "", // Czech
+ },
+ { "no epg info for current channel!", // English
+ "Dieser Kanal hat kein EPG!", // Deutsch
+ "", // Slovenski
+ "", // Italiano
+ "", // Nederlands
+ "", // Português
+ "", // Français
+ "", // Norsk
+ "", // Finnish
+ "", // Polski
+ "", // Español
+ "", // Greek
+ "", // Svenska
+ "", // Românã
+ "", // Magyar
+ "", // Català
+ "", // Russian
+ "", // Hrvatski
+ "", // Eesti
+ "", // Dansk
+ "", // Czech
+ },
+ { "no current channel!", // English
+ "Keinen Kanal gefunden!", // Deutsch
+ "", // Slovenski
+ "", // Italiano
+ "", // Nederlands
+ "", // Português
+ "", // Français
+ "", // Norsk
+ "", // Finnish
+ "", // Polski
+ "", // Español
+ "", // Greek
+ "", // Svenska
+ "", // Românã
+ "", // Magyar
+ "", // Català
+ "", // Russian
+ "", // Hrvatski
+ "", // Eesti
+ "", // Dansk
+ "", // Czech
+ },
+ { "error retrieving status info!", // English
+ "Fehler: Status nicht verfügbar!", // Deutsch
+ "", // Slovenski
+ "", // Italiano
+ "", // Nederlands
+ "", // Português
+ "", // Français
+ "", // Norsk
+ "", // Finnish
+ "", // Polski
+ "", // Español
+ "", // Greek
+ "", // Svenska
+ "", // Românã
+ "", // Magyar
+ "", // Català
+ "", // Russian
+ "", // Hrvatski
+ "", // Eesti
+ "", // Dansk
+ "", // Czech
+ },
/*
{ "", // English
diff --git a/images/Makefile b/images/Makefile
index 13acb58..8dbe8ce 100644
--- a/images/Makefile
+++ b/images/Makefile
@@ -20,7 +20,8 @@ OBJS = logo.o record.o active.o inactive.o button_blue.o \
bg_header_h.o bg_header_l.o bg_header_r.o \
bg_box_h.o bg_box_l.o bg_box_r.o \
movie.o menu_line_bg.o bg_line.o bg_tools.o \
- zap.o favicon.o bg_line_top.o reload.o stop.o
+ zap.o favicon.o bg_line_top.o reload.o stop.o \
+ one_uparrow.o one_downarrow.o
### Default rules:
diff --git a/images/one_downarrow.png b/images/one_downarrow.png
new file mode 100644
index 0000000..a4f8e50
--- /dev/null
+++ b/images/one_downarrow.png
Binary files differ
diff --git a/images/one_uparrow.png b/images/one_uparrow.png
new file mode 100644
index 0000000..dfad497
--- /dev/null
+++ b/images/one_uparrow.png
Binary files differ
diff --git a/pages/infobox.ecpp b/pages/infobox.ecpp
index b338015..afc44b4 100644
--- a/pages/infobox.ecpp
+++ b/pages/infobox.ecpp
@@ -17,6 +17,9 @@ using namespace std;
<%include>page_init.eh</%include>
<{
EpgEvents epgEvents;
+ string EMPTY_STR;
+ tChannelID prev_chan;
+ tChannelID next_chan;
if (cReplayControl::NowReplaying()) {
cThreadLock RecordingsLock(&Recordings);
@@ -36,37 +39,103 @@ using namespace std;
}
}
else {
+ string CHANNEL_STR("channel");
ReadLock channelsLock( Channels );
+
if (cDevice::CurrentChannel()) {
cChannel* Channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (!Channel)
throw HtmlError("got invalid channel number!");
+
+ cChannel* tmp = Channels.GetByNumber(Channels.GetPrevNormal(cDevice::CurrentChannel()));
+ if (tmp)
+ prev_chan = tmp->GetChannelID();
+ tmp = Channels.GetByNumber(Channels.GetNextNormal(cDevice::CurrentChannel()));
+ if (tmp)
+ next_chan = tmp->GetChannelID();
+
+ string chanName(Channel->Name());
cSchedulesLock schedulesLock;
const cSchedules* Schedules = cSchedules::Schedules(schedulesLock);
const cSchedule *Schedule = Schedules->GetSchedule(Channel);
+
if (Schedule) {
const cEvent *Event = Schedule->GetPresentEvent();
if (Event) {
- EpgEventPtr epgEvent(new EpgEvent("channel",
+ EpgEventPtr epgEvent(new EpgEvent(CHANNEL_STR,
Event,
Channel->Name()));
epgEvents.push_back(epgEvent);
}
+ else {
+ string noInfo(tr("no epg info for current event!"));
+ EpgEventPtr epgEvent(new EpgEvent(CHANNEL_STR,
+ chanName,
+ noInfo,
+ EMPTY_STR, EMPTY_STR,
+ time(0),
+ time(0)));
+ epgEvents.push_back(epgEvent);
+ }
}
+ else {
+ string noInfo(tr("no epg info for current channel!"));
+ EpgEventPtr epgEvent(new EpgEvent(CHANNEL_STR,
+ Channel->Name(),
+ noInfo,
+ EMPTY_STR, EMPTY_STR,
+ time(0),
+ time(0)));
+ epgEvents.push_back(epgEvent);
+ }
+ }
+ else {
+ string chanName(tr("no current channel!"));
+ EpgEventPtr epgEvent(new EpgEvent(CHANNEL_STR,
+ chanName,
+ chanName,
+ EMPTY_STR, EMPTY_STR,
+ time(0),
+ time(0)));
+ epgEvents.push_back(epgEvent);
}
}
- if (epgEvents.size() > 0) {
- for (vector<EpgEventPtr>::iterator i = epgEvents.begin(); i != epgEvents.end(); ++i) {
- EpgEventPtr epg = *i;
+ if (epgEvents.size() == 0) {
+ string ERROR_STR("error");
+ string noInfo(tr("error retrieving status info!"));
+ string chanName(tr("no current channel!"));
+ EpgEventPtr epgEvent(new EpgEvent(ERROR_STR,
+ chanName,
+ noInfo,
+ EMPTY_STR, EMPTY_STR,
+ time(0),
+ time(0)));
+ epgEvents.push_back(epgEvent);
+ }
+ for (vector<EpgEventPtr>::iterator i = epgEvents.begin(); i != epgEvents.end(); ++i) {
+ EpgEventPtr epg = *i;
+ if (prev_chan.Valid() && next_chan.Valid())
+ {
}>
- <& pageelems.status_box type=(epg->Id()) caption=(epg->Caption()) currentTime=(epg->CurrentTime(tr("%I:%M:%S %p"))) duration=(epg->StartTime(tr("%I:%M %p")) + string(" - ") + epg->EndTime(tr("%I:%M %p"))) title=(epg->Title()) elapsed=(epg->Elapsed()) &>
+ <& pageelems.status_box type=(epg->Id()) caption=(epg->Caption()) currentTime=(epg->CurrentTime(tr("%I:%M:%S %p"))) duration=(epg->StartTime(tr("%I:%M %p")) + string(" - ") + epg->EndTime(tr("%I:%M %p"))) title=(epg->Title()) elapsed=(epg->Elapsed()) prev_chan=(prev_chan) next_chan=(next_chan) &>
<{
}
- }
- else {
+ else if (prev_chan.Valid()) {
+}>
+ <& pageelems.status_box type=(epg->Id()) caption=(epg->Caption()) currentTime=(epg->CurrentTime(tr("%I:%M:%S %p"))) duration=(epg->StartTime(tr("%I:%M %p")) + string(" - ") + epg->EndTime(tr("%I:%M %p"))) title=(epg->Title()) elapsed=(epg->Elapsed()) prev_chan=(prev_chan) &>
+<{
+ }
+ else if (next_chan.Valid()) {
}>
- No relevant information could be retrieved!
+ <& pageelems.status_box type=(epg->Id()) caption=(epg->Caption()) currentTime=(epg->CurrentTime(tr("%I:%M:%S %p"))) duration=(epg->StartTime(tr("%I:%M %p")) + string(" - ") + epg->EndTime(tr("%I:%M %p"))) title=(epg->Title()) elapsed=(epg->Elapsed()) next_chan=(next_chan) &>
<{
+ }
+ else {
+}>
+ <& pageelems.status_box type=(epg->Id()) caption=(epg->Caption()) currentTime=(epg->CurrentTime(tr("%I:%M:%S %p"))) duration=(epg->StartTime(tr("%I:%M %p")) + string(" - ") + epg->EndTime(tr("%I:%M %p"))) title=(epg->Title()) elapsed=(epg->Elapsed()) &>
+<{
+ }
+ break;
}
}>
<%include>page_exit.eh</%include>
diff --git a/pages/pageelems.ecpp b/pages/pageelems.ecpp
index 851a1c8..96b8893 100644
--- a/pages/pageelems.ecpp
+++ b/pages/pageelems.ecpp
@@ -1,5 +1,6 @@
<%pre>
#include <string>
+#include <vdr/menu.h>
#include <vdr/epg.h>
#include "tools.h"
@@ -59,7 +60,7 @@ using namespace vdrlive;
string tip;
string param;
string image;
- string alt = "";
+ string alt;
</%args>
<a href="javascript:LiveSimpleAjaxRequest('<$ action $>.xml', 'param', '<$ param $>');" <%cpp>if (!tip.empty()) { </%cpp><& tooltip.hint text=(tip) &> <%cpp> } </%cpp>><img src="<$ image $>" alt="<$ alt $>" /></a>
</%def>
@@ -110,18 +111,20 @@ using namespace vdrlive;
string title;
string duration;
int elapsed;
+ string prev_chan;
+ string next_chan;
</%args>
<div class="statuscontent">
<div class="st_header">
<div class="caption"><$ caption $></div>
- <div class="now">&nbsp;<img id="statusReloadBtn" src="stop.png" alt="toggle reload on and off" onclick="LiveStatusToggleUpdate()" />&nbsp;<$ currentTime $></div>
+ <div class="now">&nbsp;<$ currentTime $></div>
</div>
<div class="st_content">
<div class="name"><$ title $></div>
<div class="duration">&nbsp;<$ duration $></div>
</div>
<div class="st_controls">
- <div class="buttons">&nbsp;</div>
+ <div class="buttons"><a href="javascript:LiveStatusToggleUpdate()" ><img id="statusReloadBtn" src="stop.png" alt="" /></a><%cpp>if (!prev_chan.empty()) { </%cpp><& ajax_action_href action=("switch_channel") param=(prev_chan) image=("one_downarrow.png") &><%cpp> } if (!next_chan.empty()) { </%cpp><& ajax_action_href action=("switch_channel") param=(next_chan) image=("one_uparrow.png") &><%cpp> } </%cpp></div>
% if (elapsed >= 0) {
<div class="progress"><& pageelems.progressbar progress=(elapsed) &></div>
% }