From: Przemyslaw Ciezkowski
Date: Thu, 18 Dec 2014 14:30:04 +0000 (+0100)
Subject: [TVChannel] getProgramList body
X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~510
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=17c9800bebc2ebc02c7562f08a1a2daee2d7698c;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[TVChannel] getProgramList body
[Verification]
tizen.tvchannel.getProgramList(tizen.tvchannel.getCurrentChannel("MAIN"),
tizen.time.getCurrentDateTime(),
function(){console.log("succ", arguments);},
function(e){console.log("err", e);});
Change-Id: I7f97bf8ef2661a757f4f93f53a5b27f1bad07334
Signed-off-by: Przemyslaw Ciezkowski
---
diff --git a/src/tvchannel/tvchannel_api.js b/src/tvchannel/tvchannel_api.js
index e36054be..fc71a63c 100644
--- a/src/tvchannel/tvchannel_api.js
+++ b/src/tvchannel/tvchannel_api.js
@@ -378,8 +378,8 @@ TVChannelManager.prototype.getProgramList = function(channelInfo,
}
]);
native.call('TVChannelManager_getProgramList', {
- channelInfo: args.channelInfo,
- startTime: args.startTime,
+ channelId: args.channelInfo._serviceId,
+ startTime: args.startTime.getTime(),
duration: args.duration
}, function(msg) {
if (msg.error) {
diff --git a/src/tvchannel/tvchannel_instance.cc b/src/tvchannel/tvchannel_instance.cc
index 9202a638..84492b81 100644
--- a/src/tvchannel/tvchannel_instance.cc
+++ b/src/tvchannel/tvchannel_instance.cc
@@ -33,6 +33,10 @@ TVChannelInstance::TVChannelInstance() {
std::bind(&TVChannelInstance::getChannelList, this,
std::placeholders::_1,
std::placeholders::_2));
+ RegisterHandler("TVChannelManager_getProgramList",
+ std::bind(&TVChannelInstance::getProgramList, this,
+ std::placeholders::_1,
+ std::placeholders::_2));
RegisterHandler("TVChannelManager_tune",
std::bind(&TVChannelInstance::tune, this, std::placeholders::_1,
std::placeholders::_2));
@@ -143,7 +147,11 @@ picojson::value TVChannelInstance::channelInfoToJson(
channel.insert(
std::make_pair("serviceName",
picojson::value(pChannel->getServiceName())));
-
+ // internal property
+ channel.insert(
+ std::make_pair("_serviceId",
+ picojson::value(
+ static_cast(pChannel->getServiceID()))));
return picojson::value(channel);
}
@@ -347,5 +355,59 @@ void TVChannelInstance::getChannelListResult(
PostMessage(result.serialize().c_str());
}
+void TVChannelInstance::getProgramList(
+ const picojson::value& args, picojson::object& out) {
+ LOGD("Enter");
+ std::function)>
+ asyncWork = std::bind(
+ &TVChannelManager::getProgramList,
+ TVChannelManager::getInstance(),
+ std::placeholders::_1);
+ std::function)>
+ afterWork = std::bind(
+ &TVChannelInstance::getProgramListResult,
+ this,
+ std::placeholders::_1);
+ std::shared_ptr data(
+ new TVChannelManager::GetProgramListData());
+ data->channelId = static_cast(
+ args.get("channelId").get());
+ data->startTime = static_cast(
+ args.get("startTime").get());
+ if (args.contains("duration")) {
+ data->duration =
+ static_cast(args.get("duration").get());
+ } else {
+ data->duration = UINT32_MAX;
+ }
+ data->callbackId = args.get("callbackId").get();
+ TaskQueue::GetInstance().Queue(
+ asyncWork,
+ afterWork,
+ data);
+ picojson::value result;
+ ReportSuccess(result, out);
+}
+
+void TVChannelInstance::getProgramListResult(
+ const std::shared_ptr& data) {
+ picojson::value::object dict;
+ dict["callbackId"] = picojson::value(data->callbackId);
+ if (data->error) {
+ dict["error"] = data->error->ToJSON();
+ } else {
+ picojson::value::array programs;
+ auto it = data->programs.begin();
+ for (; it != data->programs.end(); ++it) {
+ programs.push_back(programInfoToJson(
+ std::unique_ptr(*it)));
+ }
+ data->programs.clear();
+ dict["programInfos"] = picojson::value(programs);
+ }
+ picojson::value result(dict);
+ PostMessage(result.serialize().c_str());
+}
+
} // namespace tvchannel
} // namespace extension
diff --git a/src/tvchannel/tvchannel_instance.h b/src/tvchannel/tvchannel_instance.h
index a0496e94..e8b1688b 100644
--- a/src/tvchannel/tvchannel_instance.h
+++ b/src/tvchannel/tvchannel_instance.h
@@ -39,6 +39,9 @@ class TVChannelInstance:
const std::unique_ptr &pChannel);
picojson::value programInfoToJson(
const std::unique_ptr &pProgram);
+ void getProgramList(const picojson::value& args, picojson::object& out);
+ void getProgramListResult(
+ const std::shared_ptr& data);
void tune(picojson::value const& args,
picojson::object& out);
void tuneTask(std::shared_ptr const& _tuneData);
diff --git a/src/tvchannel/tvchannel_manager.cc b/src/tvchannel/tvchannel_manager.cc
index 2dc9208a..f9ab7568 100644
--- a/src/tvchannel/tvchannel_manager.cc
+++ b/src/tvchannel/tvchannel_manager.cc
@@ -6,6 +6,7 @@
#include
#include
#include
+#include