From: Pawel Kaczmarek Date: Tue, 14 Apr 2015 09:42:24 +0000 (+0200) Subject: [MediaController] Update MediaController properties X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~158 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1d7b833a4862c87e048939054ed5dfa94140b614;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [MediaController] Update MediaController properties Change-Id: Ia393ba2f70bef0ca04c10520f9b036c1f5f906f7 Signed-off-by: Pawel Kaczmarek --- diff --git a/src/mediacontroller/mediacontroller_api.js b/src/mediacontroller/mediacontroller_api.js index 33f63a39..bbcf4b28 100644 --- a/src/mediacontroller/mediacontroller_api.js +++ b/src/mediacontroller/mediacontroller_api.js @@ -133,107 +133,152 @@ MediaControllerManager.prototype.createServer = function() { var MediaControllerMetadata = function(data) { - var data = data || {}; + var _title = ''; + var _artist = ''; + var _album = ''; + var _author = ''; + var _genre = ''; + var _duration = ''; + var _date = ''; + var _copyright = ''; + var _description = ''; + var _trackNum = ''; + var _picture = ''; Object.defineProperties(this, { title: { - value: data.title || '', - writable: true, + get: function() {return _title;}, + set: function(v) {_title = converter_.toString(v)}, enumerable: true }, artist: { - value: data.artist || '', - writable: true, + get: function() {return _artist;}, + set: function(v) {_artist = converter_.toString(v)}, enumerable: true }, album: { - value: data.album || '', - writable: true, + get: function() {return _album;}, + set: function(v) {_album = converter_.toString(v)}, enumerable: true }, author: { - value: data.author || '', - writable: true, + get: function() {return _author;}, + set: function(v) {_author = converter_.toString(v)}, enumerable: true }, genre: { - value: data.genre || '', - writable: true, + get: function() {return _genre;}, + set: function(v) {_genre = converter_.toString(v)}, enumerable: true }, duration: { - value: data.duration || '', - writable: true, + get: function() {return _duration;}, + set: function(v) {_duration = converter_.toString(v)}, enumerable: true }, date: { - value: data.date || '', - writable: true, + get: function() {return _date;}, + set: function(v) {_date = converter_.toString(v)}, enumerable: true }, copyright: { - value: data.copyright || '', - writable: true, + get: function() {return _copyright;}, + set: function(v) {_copyright = converter_.toString(v)}, enumerable: true }, description: { - value: data.description || '', - writable: true, + get: function() {return _description;}, + set: function(v) {_description = converter_.toString(v)}, enumerable: true }, trackNum: { - value: data.trackNum || '', - writable: true, + get: function() {return _trackNum;}, + set: function(v) {_trackNum = converter_.toString(v)}, enumerable: true }, picture: { - value: data.picture || '', - writable: true, + get: function() {return _picture;}, + set: function(v) {_picture = converter_.toString(v)}, enumerable: true } }); + + if (data instanceof Object) { + for (var prop in data) { + if (this.hasOwnProperty(prop)) { + this[prop] = data[prop]; + } + } + } }; var MediaControllerPlaybackInfo = function(data) { - var data = data || {}; + var _state = 'STOP'; + var _position = 0; + var _shuffleMode = true; + var _repeatMode = true; + var _metadata = new MediaControllerMetadata(); Object.defineProperties(this, { state: { - value: data.state || 'STOP', - writable: false, + get: function() { + return _state; + }, + set: function(v) { + _state = _edit.isAllowed && v ? v : _state; + }, enumerable: true }, position: { - value: data.position || 0, - writable: false, + get: function() { + return _position; + }, + set: function(v) { + _position = _edit.isAllowed && v ? v : _position; + }, enumerable: true }, shuffleMode: { - value: data.shuffleMode || false, - writable: false, + get: function() { + return _shuffleMode; + }, + set: function(v) { + _shuffleMode = _edit.isAllowed && v ? v : _shuffleMode; + }, enumerable: true }, repeatMode: { - value: data.repeatMode || false, - writable: false, + get: function() { + return _repeatMode; + }, + set: function(v) { + _repeatMode = _edit.isAllowed && v ? v : _repeatMode; + }, enumerable: true }, metadata: { - value: new MediaControllerMetadata(data.metadata), - writable: false, + get: function() { + return _metadata; + }, + set: function(v) { + _metadata = _edit.isAllowed && v ? new MediaControllerMetadata(v) : _metadata; + }, enumerable: true } }); + + if (data instanceof Object) { + for (var prop in data) { + if (this.hasOwnProperty(prop)) { + this[prop] = data[prop]; + } + } + } }; function MediaControllerServer(data) { - var _playbackInfo = new MediaControllerPlaybackInfo(data); Object.defineProperties(this, { playbackInfo: { - get: function() { - return _playbackInfo; - }, - set: function(v) { - _playbackInfo = _edit.isAllowed && v ? new MediaControllerPlaybackInfo(v) : _playbackInfo; - }, + value: new MediaControllerPlaybackInfo(data), + writable: false, enumerable: true } }); @@ -255,7 +300,7 @@ MediaControllerServer.prototype.updatePlaybackState = function(state) { } _edit.allow(); - this.playbackInfo = new MediaControllerPlaybackInfo(native_.getResultObject(result)); + this.playbackInfo.state = args.state; _edit.disallow(); }; @@ -275,7 +320,7 @@ MediaControllerServer.prototype.updatePlaybackPosition = function(position) { } _edit.allow(); - this.playbackInfo = new MediaControllerPlaybackInfo(native_.getResultObject(result)); + this.playbackInfo.position = args.position; _edit.disallow(); }; @@ -295,7 +340,7 @@ MediaControllerServer.prototype.updateShuffleMode = function(mode) { } _edit.allow(); - this.playbackInfo = new MediaControllerPlaybackInfo(native_.getResultObject(result)); + this.playbackInfo.shuffleMode = args.mode; _edit.disallow(); }; @@ -315,7 +360,7 @@ MediaControllerServer.prototype.updateRepeatMode = function(mode) { } _edit.allow(); - this.playbackInfo = new MediaControllerPlaybackInfo(native_.getResultObject(result)); + this.playbackInfo.repeatMode = args.mode; _edit.disallow(); }; @@ -335,7 +380,7 @@ MediaControllerServer.prototype.updateMetadata = function(metadata) { } _edit.allow(); - this.playbackInfo = new MediaControllerPlaybackInfo(native_.getResultObject(result)); + this.playbackInfo.metadata = args.metadata; _edit.disallow(); }; @@ -410,7 +455,7 @@ MediaControllerClient.prototype.findServers = function(successCallback, errorCal var info = []; var data = native_.getResultObject(result); for (var i = 0; i < data.length; i++) { - info.push(new MediaControllerServerInfo(data)); + info.push(new MediaControllerServerInfo(data[i])); } native_.callIfPossible(args.successCallback, info); }; @@ -426,12 +471,26 @@ MediaControllerClient.prototype.getLatestServerInfo = function() { throw native_.getErrorObject(result); } - var serverInfo = new MediaControllerServerInfo(native_.getResultObject(result)); + var serverInfo = native_.getResultObject(result); + if (serverInfo) { + serverInfo = new MediaControllerServerInfo(serverInfo); + } return serverInfo; }; function MediaControllerServerInfo(data) { + var getPlaybackInfo = function() { + var result = native_.callSync('MediaControllerClient_getPlaybackInfo', {name: this.name}); + if (native_.isFailure(result)) { + throw native_.getErrorObject(result); + } + edit_.allow(); + var playbackInfo = new MediaControllerPlaybackInfo(result); + edit_.disallow(); + + return playbackInfo; + }; Object.defineProperties(this, { name: { value: data.name, @@ -444,8 +503,8 @@ function MediaControllerServerInfo(data) { enumerable: true }, playbackInfo: { - value: new MediaControllerPlaybackInfo(data.playbackInfo), - writable: false, + get: getPlaybackInfo.bind(this), + set: function() {}, enumerable: true } });