summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/tools.cpp7
-rw-r--r--include/tools/string.h1
-rw-r--r--plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp25
-rw-r--r--plugins/provider/recProvider/recProvider.cpp2
-rw-r--r--plugins/provider/vdrProvider/vdrProvider.cpp13
5 files changed, 27 insertions, 21 deletions
diff --git a/common/tools.cpp b/common/tools.cpp
index 797dbfe..c18d21e 100644
--- a/common/tools.cpp
+++ b/common/tools.cpp
@@ -106,6 +106,13 @@ string Trim(const std::string& str, const std::string& whitespace)
return str.substr(strBegin, strRange);
}
+string ToUTF8String(const char* bytes){
+ cCharSetConv conv;
+ char to[4096];
+ conv.Convert(bytes, to, 4096);
+ return string(to);
+}
+
string ToString(long number){
stringstream ss;
ss << number;
diff --git a/include/tools/string.h b/include/tools/string.h
index 8d54706..6bc00a4 100644
--- a/include/tools/string.h
+++ b/include/tools/string.h
@@ -17,6 +17,7 @@ namespace upnp {
namespace tools {
+string ToUTF8String(const char* bytes);
string ToString(long number);
string StringListToCSV(StringList list);
string IdListToCSV(IdList list);
diff --git a/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp b/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp
index 327d16a..f367c39 100644
--- a/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp
+++ b/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp
@@ -173,9 +173,9 @@ private:
metadata.SetParentIDByUri(fs);
metadata.SetProperty(cMetadata::Property(property::object::KEY_RESTRICTED, true));
- metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, string(info->Title()?info->Title():recording->Title())));
- metadata.SetProperty(cMetadata::Property(property::object::KEY_DESCRIPTION, string(info->ShortText()?info->ShortText():"")));
- metadata.SetProperty(cMetadata::Property(property::object::KEY_LONG_DESCRIPTION, string(info->Description()?info->Description():"")));
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, tools::ToUTF8String(info->Title()?info->Title():recording->Title())));
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_DESCRIPTION, tools::ToUTF8String(info->ShortText()?info->ShortText():"")));
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_LONG_DESCRIPTION, tools::ToUTF8String(info->Description()?info->Description():"")));
boost::posix_time::ptime date = boost::posix_time::from_time_t(info->GetEvent()->StartTime());
metadata.SetProperty(cMetadata::Property(property::object::KEY_DATE, boost::gregorian::to_iso_extended_string(date.date())));
@@ -335,7 +335,10 @@ private:
// TODO: implement check for radio stations (this is ...audioItem.audioBroadcast)
metadata.SetProperty(cMetadata::Property(property::object::KEY_CLASS, string("object.item.videoItem.videoBroadcast")));
metadata.SetProperty(cMetadata::Property(property::object::KEY_RESTRICTED, true));
- metadata.SetProperty(cMetadata::Property(property::object::KEY_CHANNEL_NAME, string(channel->Name())));
+
+ string channelName = tools::ToUTF8String(channel->Name());
+
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_CHANNEL_NAME, channelName));
metadata.SetProperty(cMetadata::Property(property::object::KEY_CHANNEL_NR, (long int)channel->Number()));
// Now, we try to get the present event of the schedule
@@ -353,24 +356,24 @@ private:
metadata.SetProperty(cMetadata::Property(property::object::KEY_DATE, boost::gregorian::to_iso_extended_string(startTime.date())));
metadata.SetProperty(cMetadata::Property(property::object::KEY_SCHEDULED_START, boost::posix_time::to_iso_extended_string(startTime)));
metadata.SetProperty(cMetadata::Property(property::object::KEY_SCHEDULED_END, boost::posix_time::to_iso_extended_string(endTime)));
- metadata.SetProperty(cMetadata::Property(property::object::KEY_DESCRIPTION, string(event->ShortText()?event->ShortText():"")));
- metadata.SetProperty(cMetadata::Property(property::object::KEY_LONG_DESCRIPTION, string(event->Description()?event->Description():"")));
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_DESCRIPTION, tools::ToUTF8String(event->ShortText()?event->ShortText():"")));
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_LONG_DESCRIPTION, tools::ToUTF8String(event->Description()?event->Description():"")));
}
ChannelTitle* titleConfig = channelTitleConfig.First();
if(titleConfig){
titleConfig->Clear();
if(event)
- titleConfig->SetTitle(event->Title());
- titleConfig->SetChannelName(channel->Name());
+ titleConfig->SetTitle(tools::ToUTF8String(event->Title()));
+ titleConfig->SetChannelName(channelName);
titleConfig->SetChannelNumber(channel->Number());
metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, titleConfig->ToString()));
} else {
stringstream ss;
- ss << channel->Name();
+ ss << channelName;
if(event)
- ss << " - " << event->Title();
+ ss << " - " << tools::ToUTF8String(event->Title());
metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, ss.str()));
}
@@ -413,7 +416,7 @@ private:
stringstream ss;
cMetadata::Resource thumbnail;
ss.str(string());
- ss << "channelIcons/" << channel->Name() << ".jpg";
+ ss << "channelIcons/" << channelName << ".jpg";
stringstream filename, uriStrm;
filename << cMediaServer::GetInstance()->GetWebserver().GetThumbnailDir() << ss.str();
diff --git a/plugins/provider/recProvider/recProvider.cpp b/plugins/provider/recProvider/recProvider.cpp
index 8657cb3..ff4dcbb 100644
--- a/plugins/provider/recProvider/recProvider.cpp
+++ b/plugins/provider/recProvider/recProvider.cpp
@@ -178,7 +178,7 @@ public:
string folder = uri.substr(ls , ul - ls -1);
char * str = strdup(folder.c_str());
str = ExchangeChars(str, false);
- metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, string(str)));
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, tools::ToUTF8String(str)));
free(str);
}
diff --git a/plugins/provider/vdrProvider/vdrProvider.cpp b/plugins/provider/vdrProvider/vdrProvider.cpp
index 5ab99d3..6ab3d27 100644
--- a/plugins/provider/vdrProvider/vdrProvider.cpp
+++ b/plugins/provider/vdrProvider/vdrProvider.cpp
@@ -66,10 +66,6 @@ private:
cCondWait sleep;
- cCharSetConv conv;
-#define TO_UTF8(from, to, length) \
- char to[length]; conv.Convert(from, to, length);
-
public:
VdrProvider()
@@ -117,8 +113,7 @@ public:
}
} else {
for(index = Channels.GetNextGroup(from - 1); (channel = Channels.Get(index)) && index < to; index = Channels.GetNextGroup(index)){
- TO_UTF8(channel->Name(), chanName, 1024);
- string group = string(chanName) + '/';
+ string group = tools::ToUTF8String(channel->Name()) + '/';
list.push_back(group);
}
}
@@ -154,9 +149,9 @@ public:
metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, string("VDR Live-TV")));
metadata.SetProperty(cMetadata::Property(property::object::KEY_DESCRIPTION, string("Watch Live-TV")));
} else if((index = GetGroupByName(GetContainerName(uri))) != -1 && (channel = Channels.Get(index)) != NULL){
- TO_UTF8(channel->Name(), chanName, 1024);
- metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, string(chanName)));
- metadata.SetProperty(cMetadata::Property(property::object::KEY_DESCRIPTION, string(chanName)));
+ string chanName = tools::ToUTF8String(channel->Name());
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, chanName));
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_DESCRIPTION, chanName));
} else {
return false;
}