--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mypackage_wrt/preview/script/lib/sapi/MediaManagement.js Fri Apr 30 15:01:03 2010 +0100
@@ -0,0 +1,157 @@
+/**
+ * MediaManagement.js
+ *
+ * Nokia Web Runtime Service API emulation
+ * WRT v1.1
+ *
+ * Copyright 2009 Nokia Corporation. All rights reserved.
+*/
+
+
+(function(){
+
+ var provider = 'Service.MediaManagement' ,
+ Interface = 'IDataSource';
+
+ /**
+ * MediaManagement service
+ */
+ var MediaManagementService = function(){
+ this.GetList = __GetList;
+ this.Cancel = __Cancel;
+ }
+
+ device.implementation.extend(provider, Interface, new MediaManagementService() );
+
+
+ /******************************************************/
+ /******************************************************/
+ /******************************************************/
+
+ var context = device.implementation.context,
+ _t = context._t,
+ method = '',
+ result = false,
+ DBase = null;
+
+ /**
+ * MediaManagement: GetList
+ * @param {Object} criteria
+ * @param {Function} callback function for async call (mandatory)
+ */
+ function __GetList(criteria, callback, _flag){
+
+ if ((result = validator.apply('GetList', arguments)) !== false)
+ return result;
+
+ // _flag=true indicates re-called state
+ _flag = _flag || false;
+ if (!_flag) {
+
+ // callback is mandatory
+ if (typeof callback != 'function')
+ return error(device.implementation.ERR_MISSING_ARGUMENT, msg.badAsync);
+
+ // continue validation after callback check
+ if (!criteria.Filter)
+ return error(device.implementation.ERR_MISSING_ARGUMENT, msg.is_missing, 'Filter');
+
+ if (!criteria.Filter.FileType)
+ return error(device.implementation.ERR_MISSING_ARGUMENT, msg.is_missing, 'FileType');
+
+ if (!/^(Music|Sound|Image|Video|StreamingURL)$/i.test(criteria.Filter.FileType))
+ return error(device.implementation.ERR_BAD_ARGUMENT_TYPE);
+
+ // process callback
+ _flag = true;
+ return context.callAsync(this, arguments.callee, criteria, callback, _flag);
+ }
+
+ var returnValue = [],
+ match = null,
+ fileType = criteria.Filter.FileType,
+ filter = criteria.Filter;
+
+ // normalize filetype
+ fileType = fileType[0].toUpperCase() + fileType.substr(1).toLowerCase();
+ fileType = fileType.replace(/url/i, 'URL');
+
+ DBase = context.getData(provider);
+
+ // unsupported filters
+ if (filter
+ && (match = context.keys(filter).join().match(/Key|StartRange|EndRange/ig)) ) {
+ context.notify(_t('%s:: GetList : filter %s not implemented in preview').arg(provider, match.join()));
+ }
+ // unsupported sort
+ if (criteria.Sort) {
+ context.notify(_t('%s:: GetList : sort not implemented in preview').arg(provider));
+ }
+
+ returnValue = DBase[fileType];
+ return context.Result(context.Iterator(returnValue));
+ }
+
+
+ /**
+ * MediaManagement: Cancel
+ * @param {Object} criteria
+ */
+ function __Cancel(criteria){
+ method = 'Cancel';
+ if (!criteria || !criteria.TransactionID)
+ return error(device.implementation.ERR_MISSING_ARGUMENT, msg.missingTID);
+
+ clearTimeout(criteria.TransactionID);
+ return context.ErrorResult(device.implementation.ERR_SUCCESS);
+ }
+
+
+
+ /*******************************
+ * helper functions
+ *******************************/
+
+ function error(code, msg /*, args...*/){
+
+ var args = ['MediaMgmt',method].concat([].slice.call(arguments,2));
+ msg = msg ? _t().arg.apply(msg,args) : undefined;
+ return context.ErrorResult(code, msg);
+ }
+
+ /**
+ * validate common input arguments
+ * 'this' is string (object) name of calling function
+ *
+ * @param {arguments} arguments of calling function
+ * @return {Result} Result object if error, false if no error.
+ */
+ function validator() {
+ method = ''+this;
+ var failed = false,
+ criteria = arguments[0] || false;
+
+ if (!criteria || typeof criteria != 'object' || typeof criteria.Type == 'undefined')
+ return error(device.implementation.ERR_MISSING_ARGUMENT, msg.is_missing, 'Type');
+
+ if (!/^FileInfo$/i.test(criteria.Type))
+ return error(device.implementation.ERR_SERVICE_NOT_SUPPORTED, msg.badType);
+
+ return failed;
+ }
+
+ /**
+ * error messages
+ * order of %s args: Service name, method name, parameter name
+ */
+ var msg = {
+ badType : '%s : %s : Type not supported',
+ missingTID : '%s : %s : TransactionID is missing',
+ badAsync : '%s : %s : Insufficient arguments for async request',
+ is_missing : '%s : %s : %s is missing',
+ is_invalid : '%s : %s : %s is invalid'
+ };
+
+
+}) ()
+