FAVORITE: 'FAVORITE'
};
+function ChannelInfo(dict) {
+ for (var key in dict) {
+ if (dict.hasOwnProperty(key)) {
+ Object.defineProperty(this, key, {
+ value: dict[key],
+ enumerable: true
+ });
+ }
+ }
+ Object.freeze(this);
+}
+
+function dictListToChannelList(list) {
+ var result = [],
+ i = 0,
+ il = list.length;
+ for (; i < il; ++i) {
+ result.push(new ChannelInfo(list[i]));
+ }
+ return result;
+}
+
+function ProgramInfo(dict) {
+ for (var key in dict) {
+ if (dict.hasOwnProperty(key)) {
+ Object.defineProperty(this, key, {
+ value: key === 'startTime' ? new tizen.TZDate(new Date(dict[key])) : dict[key],
+ enumerable: true
+ });
+ }
+ }
+ Object.freeze(this);
+}
+
+function dictListToProgramList(list) {
+ var result = [],
+ i = 0,
+ il = list.length;
+ for (; i < il; ++i) {
+ result.push(new ProgramInfo(list[i]));
+ }
+ return result;
+}
+
function ListenerManager(native, listenerName) {
this.listeners = {};
this.nextId = 1;
}
ListenerManager.prototype.onListenerCalled = function(msg) {
+ var channel = new ChannelInfo(msg.channel);
for (var key in this.listeners) {
if (this.listeners.hasOwnProperty(key)) {
- this.listeners[key](msg.channel);
+ this.listeners[key](channel);
}
}
};
]);
native.addListener(PROGRAMINFO_LISTENER, function(msg) {
if (validatorType.isFunction(data.callback.onprograminforeceived)) {
- data.callback.onprograminforeceived(msg.program, msg.type);
+ data.callback.onprograminforeceived(new ProgramInfo(msg.program), msg.type);
}
});
native.call('TVChannelManager_tune', {
}
} else if (msg.success) {
if (validatorType.isFunction(data.callback.onsuccess)) {
- data.callback.onsuccess(msg.channel, msg.type);
+ data.callback.onsuccess(new ChannelInfo(msg.channel), msg.type);
}
}
});
]);
native.addListener(PROGRAMINFO_LISTENER, function(msg) {
if (validatorType.isFunction(data.callback.onprograminforeceived)) {
- data.callback.onprograminforeceived(msg.program, msg.type);
+ data.callback.onprograminforeceived(new ProgramInfo(msg.program), msg.type);
}
});
native.call(methodName, {
}
} else if (msg.success) {
if (validatorType.isFunction(data.callback.onsuccess)) {
- data.callback.onsuccess(msg.channel, msg.type);
+ data.callback.onsuccess(new ChannelInfo(msg.channel), msg.type);
}
}
});
args.errorCallback(native.getErrorObject(msg.error));
}
} else {
- args.successCallback(msg.channelInfos);
+ args.successCallback(dictListToChannelList(msg.channelInfos));
}
});
};
args.errorCallback(native.getErrorObject(msg.error));
}
} else {
- args.successCallback(msg.channelInfos);
+ args.successCallback(dictListToChannelList(msg.channelInfos));
}
});
};
if (native.isFailure(ret)) {
throw native.getErrorObject(ret);
}
- return native.getResultObject(ret);
+ return new ChannelInfo(native.getResultObject(ret));
};
TVChannelManager.prototype.getProgramList = function(channelInfo,
startTime, successCallback, errorCallback, duration) {
- return undefined;
+ var args = validator.validateArgs(arguments, [
+ {
+ name: 'channelInfo',
+ type: validator.Types.PLATFORM_OBJECT,
+ values: ChannelInfo
+ },
+ {
+ name: 'startTime',
+ type: validator.Types.PLATFORM_OBJECT,
+ values: tizen.TZDate
+ },
+ {
+ name: 'successCallback',
+ type: validator.Types.FUNCTION,
+ optional: false,
+ nullable: false
+ },
+ {
+ name: 'errorCallback',
+ type: validator.Types.FUNCTION,
+ optional: true,
+ nullable: true
+ },
+ {
+ name: 'duration',
+ optional: true,
+ nullable: true,
+ type: validator.Types.LONG
+ }
+ ]);
+ native.call('TVChannelManager_getProgramList', {
+ channelInfo: args.channelInfo,
+ startTime: args.startTime,
+ duration: args.duration
+ }, function(msg) {
+ if (msg.error) {
+ if (validatorType.isFunction(args.errorCallback)) {
+ args.errorCallback(native.getErrorObject(msg.error));
+ }
+ } else {
+ args.successCallback(dictListToProgramList(msg.programInfos));
+ }
+ });
};
TVChannelManager.prototype.getCurrentProgram = function(windowType) {
if (native.isFailure(ret)) {
throw native.getErrorObject(ret);
}
- return native.getResultObject(ret);
+ return new ProgramInfo(native.getResultObject(ret));
};
TVChannelManager.prototype.addChannelChangeListener = function(callback, windowType) {