summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vdr-vdrmanager/helpers.cpp88
-rw-r--r--vdr-vdrmanager/helpers.h1
2 files changed, 63 insertions, 26 deletions
diff --git a/vdr-vdrmanager/helpers.cpp b/vdr-vdrmanager/helpers.cpp
index 4c8b1bd..1219c01 100644
--- a/vdr-vdrmanager/helpers.cpp
+++ b/vdr-vdrmanager/helpers.cpp
@@ -148,29 +148,47 @@ string cHelpers::GetChannelsIntern(string wantedChannels) {
return result + "END\r\n";
}
-string cHelpers::SetChannelIntern(string args) {
+string cHelpers::SetChannelIntern(const string args) {
if (args.size() == 0) {
return "!ERROR:SetChannel;empty args\r\n";
}
- int nr = atoi(args.c_str());
+
+ cChannel *channel;
+ bool isnum = true;
+ for (int i = 0; i < (int)args.length(); i++) {
+ if (!std::isdigit(args[i])){
+ isnum = false;
+ break;
+ }
+
+ }
+
+ if(isnum){
+ int nr = atoi(args.c_str());
+ channel = Channels.GetByNumber(nr);
+ } else {
+ tChannelID chid = tChannelID::FromString(args.c_str());
+ channel = Channels.GetByChannelID(chid);
+ }
+
+
+ if (!channel) {
+ return "!ERROR:SetChannel;Unable to find channel " + args + "\r\n";
+ }
+
string result;
ostringstream outStream;
-
- cChannel *channel = Channels.GetByNumber(nr);
-
- if (channel) {
- if (!cDevice::PrimaryDevice()->SwitchChannel(channel, true)) {
+
+ if (!cDevice::PrimaryDevice()->SwitchChannel(channel, true)) {
outStream << channel->Number();
result = "!ERROR:SetChannel;Error switching to channel " + outStream.str() + "\r\n";
return result;
- } else {
- return "START\r\nEND\r\n";
- }
- } else {
- return "!ERROR:SetChannel;Unable to find channel " + args + "\r\n";
}
+
+ return "START\r\nEND\r\n";
+
}
string cHelpers::GetAudioTracks(const cChannel* channel) {
@@ -447,8 +465,9 @@ string cHelpers::SearchEventsIntern(string wantedChannels, string pattern) {
string cHelpers::ToText(cRecording * recording) {
const cRecordingInfo * info = recording->Info();
+#if APIVERSNUM >= 10705
const cEvent * event = info->GetEvent();
-
+#endif
/**
tChannelID ChannelID(void) const;
const cSchedule *Schedule(void) const { return schedule; }
@@ -481,9 +500,13 @@ string cHelpers::ToText(cRecording * recording) {
char buf[100];
string result = "";
+#if APIVERSNUM >= 10705
time_t startTime = event->StartTime();
time_t endTime = event->EndTime();
-
+#else
+ time_t startTime = 0L;
+ time_t endTime = 1L;
+#endif
snprintf(buf, sizeof(buf) - 1, "%d", recording->Index());
result = buf;
result += ":";
@@ -505,17 +528,19 @@ string cHelpers::ToText(cRecording * recording) {
if (info->Title()) {
result += MapSpecialChars(info->Title());
+#if APIVERSNUM > 10600
} else if (event->Title()) {
result += MapSpecialChars(event->Title());
+#endif
} else {
result += "<unknown>";
}
result += ":";
- result += MapSpecialChars(event->ShortText() ? event->ShortText() : "");
+ result += MapSpecialChars(info->ShortText() ? info->ShortText() : "");
result += ":";
- result += MapSpecialChars(event->Description() ? event->Description() : "");
+ result += MapSpecialChars(info->Description() ? info->Description() : "");
result += ":";
result += MapSpecialChars(recording->FileName());
@@ -879,22 +904,34 @@ string cHelpers::UnMapSpecialChars(string text) {
* based on vdr-restfulapi's RecordingLengthInSeconds
*/
int cHelpers::RecordingLengthInSeconds(cRecording* recording) {
-#if APIVERSNUM < 10721
- int nf=cIndexFile::Length(recording->FileName(), recording->IsPesRecording());
+
+int nf = -1;
+#if APIVERSNUM >= 10721
+ nf = recording->NumFrames();
+#endif
+
+#if APIVERSNUM == 10720
+ nf = cIndexFile::Length(recording->FileName(), recording->IsPesRecording());
+#endif
+
+#if APIVERSNUM < 10720
+ //TODO find out
//esyslog("[vdrmanager] length of record %s: %d", recording->FileName(), length);
//if (length >= 0)
// return int(length / SecondsToFrames(60, recording->FramesPerSecond()));
- //return -1;
-#else
- int nf = recording->NumFrames();
+ nf = -1;
#endif
- if (nf >= 0)
+
+if(nf == -1){
+ return -1;
+}
+
#if APIVERSNUM >= 10703
- return int(((double) nf / recording->FramesPerSecond()));
+ return int(((double) nf / recording->FramesPerSecond()));
#else
- return int((double)nf / FRAMESPERSEC));
+ return int((double)nf / FRAMESPERSEC);
#endif
- return -1;
+
}
/** Compress a STL string using zlib with given compression level and return
@@ -1049,3 +1086,4 @@ int cHelpers::ConvertWeekdays(std::string v) {
return res;
}
+
diff --git a/vdr-vdrmanager/helpers.h b/vdr-vdrmanager/helpers.h
index e006d96..71c3e6e 100644
--- a/vdr-vdrmanager/helpers.h
+++ b/vdr-vdrmanager/helpers.h
@@ -63,5 +63,4 @@ private:
static string ConvertWeekdays(int v);
static int ConvertWeekdays(string v);
static queue<int> ConvertToBinary(int v);
-
};