diff options
-rw-r--r-- | common/tools.cpp | 7 | ||||
-rw-r--r-- | include/tools/string.h | 1 | ||||
-rw-r--r-- | plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp | 25 | ||||
-rw-r--r-- | plugins/provider/recProvider/recProvider.cpp | 2 | ||||
-rw-r--r-- | plugins/provider/vdrProvider/vdrProvider.cpp | 13 |
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; } |