Created
October 2, 2012 07:53
-
-
Save azhurb/3817158 to your computer and use it in GitHub Desktop.
Model type fix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Common XPCOM STB constructor. | |
| * @constructor | |
| */ | |
| function common_xpcom(){ | |
| this.user = {}; | |
| this.mac = ''; | |
| this.ip = ''; | |
| this.hd = 0; | |
| this.type = ''; | |
| this.version = ''; | |
| this.ajax_loader = ''; | |
| this.images = []; | |
| this.storages = {}; | |
| this.player = {}; | |
| this.key_lock = true; | |
| this.power_off = false; | |
| this.additional_services_on = 0; | |
| this.aspect_idx = 0; | |
| this.aspect_array = [ | |
| {"alias": "fit", "mode": 0x10}, | |
| {"alias": "big", "mode": 0x40}, | |
| {"alias": "opt", "mode": 0x50}, | |
| {"alias": "exp", "mode": 0x00}, | |
| {"alias": "cmb", "mode": 0x30} | |
| ]; | |
| this.video_mode = 1080; | |
| this.cur_off_on = false; | |
| this.cur_place = ''; | |
| this.load_step = Math.ceil(50/4); | |
| this.base_modules = [ | |
| "reset", | |
| "context_menu", | |
| "main_menu", | |
| "alert", | |
| "speedtest", | |
| "layer.base", | |
| "layer.list", | |
| "layer.setting", | |
| "layer.simple", | |
| "layer.input", | |
| "layer.sidebar", | |
| "layer.search_box", | |
| "layer.bottom_menu", | |
| "layer.scrollbar", | |
| "layer.vclub_info", | |
| "image.viewer", | |
| "password_input", | |
| "series_switch", | |
| "duration_input" | |
| ]; | |
| this.init = function(){ | |
| _debug('stb.init'); | |
| loader.append("reset"); | |
| loader.append("layer.modal_form"); | |
| this.browser = this.get_user_browser(); | |
| this.player = new player(); | |
| this.player.bind(); | |
| this.get_server_params(); | |
| this.get_stb_params(); | |
| this.get_user_profile(); | |
| this.watchdog = new watchdog(); | |
| this.usbdisk = new usbdisk(); | |
| module.blocking.init_layer(); | |
| }; | |
| this.init_auth_dialog = function(){ | |
| this.auth_dialog = new ModalForm({"title" : get_word('auth_title')}); | |
| this.auth_dialog.addItem(new ModalFormInput({"label" : get_word('auth_login'), "name" : "login", "onchange" : function(){_debug('change'); stb.auth_dialog.resetStatus()}})); | |
| this.auth_dialog.addItem(new ModalFormInput({"label" : get_word('auth_password'), "name" : "password", "onchange" : function(){_debug('change'); stb.auth_dialog.resetStatus()}})); | |
| var self = this; | |
| this.auth_dialog.addItem(new ModalFormButton( | |
| { | |
| "value" : "OK", | |
| "onclick" : function(){ | |
| var login = self.auth_dialog.getItemByName("login").getValue(); | |
| var password = self.auth_dialog.getItemByName("password").getValue(); | |
| _debug("login", login); | |
| _debug("password", password); | |
| stb.load( | |
| { | |
| "type" : "stb", | |
| "action" : "do_auth", | |
| "login" : login, | |
| "password" : password | |
| }, | |
| function(result){ | |
| _debug('auth result', result); | |
| if (result){ | |
| stb.get_user_profile(); | |
| stb.auth_dialog.hide(); | |
| }else{ | |
| stb.auth_dialog.setStatus(get_word('auth_error')); | |
| } | |
| } | |
| ) | |
| } | |
| } | |
| )); | |
| }; | |
| this.init_alerts = function(){ | |
| this.notice = new _alert(); | |
| this.msg = new _alert('info'); | |
| this.msg.bind(); | |
| this.confirm = new _alert('confirm'); | |
| this.confirm.bind(); | |
| }; | |
| this.get_server_params = function(){ | |
| var pattern = /http:\/\/([^\/]*)\/([\w\/]+)*\/([\w\/]+)\/(.)*/; | |
| this.portal_ip = document.URL.replace(pattern, "$1"); | |
| this.portal_path = document.URL.replace(pattern, "$2"); | |
| _debug('stb.portal_path:', this.portal_path); | |
| this.ajax_loader = 'http://'+this.portal_ip+'/'+this.portal_path+'/server/load.php'; | |
| _debug('stb.ajax_loader:', this.ajax_loader); | |
| }; | |
| this.get_modules = function(){ | |
| _debug('stb.get_modules'); | |
| this.load( | |
| { | |
| "type" : "stb", | |
| "action" : "get_modules" | |
| }, | |
| function(result){ | |
| _debug('stb.get_modules callback', result); | |
| var all_modules = result.all_modules; | |
| this.switchable_modules = result.switchable_modules; | |
| this.disabled_modules = result.disabled_modules || []; | |
| this.restricted_modules = result.restricted_modules || []; | |
| this.all_modules = this.base_modules.concat(all_modules); | |
| _debug('all_modules', this.all_modules); | |
| var self = this; | |
| this.all_modules = this.all_modules.filter(function(module){ | |
| return self.disabled_modules.indexOf(module) == -1; | |
| }); | |
| loader.add(this.all_modules); | |
| }, | |
| this | |
| ); | |
| }; | |
| this.load_account_modules = function(){ | |
| _debug('stb.load_account_modules'); | |
| if (this.all_modules){ | |
| return; | |
| } | |
| this.load( | |
| { | |
| "type" : "stb", | |
| "action" : "get_modules" | |
| }, | |
| function(result){ | |
| _debug('stb.load_account_modules callback', result); | |
| var all_modules = result.all_modules; | |
| all_modules = all_modules.filter(function(module){ | |
| return module == 'account'; | |
| }); | |
| if (!all_modules){ | |
| return; | |
| } | |
| this.all_modules = this.base_modules.concat(all_modules); | |
| _debug('all_modules', this.all_modules); | |
| loader.add(this.all_modules); | |
| }, | |
| this | |
| ); | |
| }; | |
| this.update_modules = function(){ | |
| _debug('stb.get_modules'); | |
| this.load( | |
| { | |
| "type" : "stb", | |
| "action" : "get_modules" | |
| }, | |
| function(result){ | |
| _debug('update_modules result', result); | |
| this.switchable_modules = result.switchable_modules || []; | |
| this.disabled_modules = result.disabled_modules || []; | |
| this.restricted_modules = result.restricted_modules || []; | |
| }, | |
| this | |
| ); | |
| }; | |
| this.is_restricted_module = function(module){ | |
| _debug('stb.is_restricted_module'); | |
| _debug('module.layer_name', module.layer_name); | |
| _debug('this.additional_services_on', this.additional_services_on); | |
| if (this.restricted_modules.indexOf(module.layer_name) >= 0){ | |
| return true; | |
| } | |
| if (!this.additional_services_on && this.switchable_modules.indexOf(module.layer_name) >= 0){ | |
| return true; | |
| } | |
| return false; | |
| }; | |
| this.check_additional_services = function(param){ | |
| _debug('check_additional_services', param); | |
| this.additional_services_on = parseInt(param, 10); | |
| }; | |
| this.get_stb_params = function (){ | |
| try{ | |
| this.video_mode = stb.RDir('vmode'); | |
| //this.graphic_mode = stb.RDir('gmode'); | |
| //this.mac = stb.RDir('MACAddress').toUpperCase().clearnl(); | |
| this.mac = stb.GetDeviceMacAddress().toUpperCase().clearnl(); | |
| this.ip = stb.RDir('IPAddress').clearnl(); | |
| this.serial_number = stb.GetDeviceSerialNumber().clearnl(); | |
| try{ | |
| this.type = stb.GetDeviceModelExt().clearnl(); | |
| }catch(e){ | |
| this.type = stb.RDir('Model').clearnl(); | |
| } | |
| this.stb_lang = stb.RDir('getenv language').clearnl(); | |
| this.timezone = stb.RDir('getenv timezone_conf').clearnl(); | |
| this.ntp_server = stb.RDir('getenv ntpurl').clearnl(); | |
| this.firmware_version = this.image_version = stb.RDir('ImageVersion').clearnl(); | |
| this.image_desc = stb.RDir('ImageDescription').clearnl(); | |
| this.image_date = stb.RDir('ImageDate').clearnl(); | |
| this.version = 'ImageDescription: ' + this.image_desc + '; ImageDate: ' + this.image_date + '; PORTAL version: '+ver+';';//+stb.Version(); | |
| var mtdparts = stb.RDir('getenv mtdparts').clearnl(); | |
| this.num_banks = mtdparts.indexOf('RootFs2') > 0 ? 2 : 1; | |
| if (this.type == 'MAG200' || this.type == 'MAG250' || this.type.indexOf('AuraHD') != -1){ | |
| this.hd = 1; | |
| }else{ | |
| this.hd = 0; | |
| } | |
| if (this.graphic_mode >= 720){ | |
| _debug('gSTB.SetObjectCacheCapacities'); | |
| gSTB.SetObjectCacheCapacities(1000000, 7000000, 10000000); | |
| } | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| if (debug){ | |
| if (_GET['mac']){ | |
| this.mac = _GET['mac']; | |
| this.set_cookie('mac_emu', 1); | |
| } | |
| this.set_cookie('debug', 1); | |
| if (_GET['debug_key']){ | |
| this.set_cookie('debug_key', _GET['debug_key']); | |
| } | |
| } | |
| this.set_cookie('mac', this.mac); | |
| this.set_cookie('stb_lang', this.stb_lang); | |
| this.set_cookie('timezone', this.timezone); | |
| /*this.set_cookie('stb_type', this.type); | |
| this.set_cookie('sn', this.serial_number); | |
| this.set_cookie('num_banks',this.num_banks);*/ | |
| //this.get_localization(); | |
| _debug('this.mac:', this.mac); | |
| _debug('this.serial_number:', this.serial_number); | |
| _debug('this.stb_lang:', this.stb_lang); | |
| _debug('this.timezone:', this.timezone); | |
| _debug('this.ntp_server:', this.ntp_server); | |
| _debug('this.ip:', this.ip); | |
| _debug('this.type:', this.type); | |
| _debug('this.version:', this.version); | |
| _debug('this.hd:',this.hd); | |
| }; | |
| this.set_cookie = function(name, val){ | |
| document.cookie = name + '=' + escape(val) + '; path=/;'; | |
| }; | |
| this.delete_cookie = function(name){ | |
| document.cookie = name + '=; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT;'; | |
| }; | |
| this.get_localization = function(){ | |
| _debug('stb.get_localization'); | |
| this.load( | |
| { | |
| "type" : "stb", | |
| "action" : "get_localization" | |
| }, | |
| function(result){ | |
| word = result; | |
| //this.clock.start(); | |
| this.user_init(this.profile); | |
| this.clock.start(); | |
| }, | |
| this | |
| ) | |
| }; | |
| /** | |
| * Ajax wrapper. | |
| * @param params | |
| * @param {...} var_args | |
| */ | |
| this.load = function(params, var_args){ | |
| _debug('stb.load()'); | |
| _debug('params:', params); | |
| var callback = arguments[1]; | |
| var context = window; | |
| if (arguments.length == 3){ | |
| context = arguments[2]; | |
| } | |
| try{ | |
| return JsHttpRequest.query( | |
| //this.ajax_loader, | |
| 'GET '+this.ajax_loader, | |
| params, | |
| function(result, errors){ | |
| _debug('stb.load callback'); | |
| _debug(errors); | |
| try{ | |
| callback.call(context, result); | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| }, | |
| true | |
| ); | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| }; | |
| this.preload_images = function(){ | |
| this.load( | |
| { | |
| 'type' : 'stb', | |
| 'action' : 'get_preload_images', | |
| 'gmode' : resolution_prefix.substr(1) | |
| }, | |
| function(result){ | |
| if (result != null){ | |
| for (var i=0; i<result.length; i++){ | |
| stb.images[i] = new Image(); | |
| stb.images[i].src = result[i]; | |
| stb.images.onload = function(){}; | |
| } | |
| } | |
| } | |
| ); | |
| }; | |
| this.get_user_profile = function(){ | |
| _debug('this.get_user_profile'); | |
| this.load( | |
| { | |
| 'type' : 'stb', | |
| 'action' : 'get_profile', | |
| 'hd' : this.hd, | |
| 'ver' : this.version, | |
| 'num_banks' : this.num_banks, | |
| 'sn' : this.serial_number, | |
| 'stb_type' : this.type, | |
| 'image_version' : this.image_version | |
| }, | |
| function(result){ | |
| if (result != null){ | |
| this.profile = result; | |
| //this.user_init(result); | |
| this.get_localization(); | |
| } | |
| }, | |
| this | |
| ) | |
| }; | |
| this.get_user_browser = function(){ | |
| var ua = navigator.userAgent.toLowerCase(); | |
| if (ua.indexOf("webkit") != -1) { | |
| return "webkit" | |
| }else if (ua.indexOf("firefox") != -1){ | |
| return "firefox" | |
| }else{ | |
| return "na" | |
| } | |
| }; | |
| this.check_image_version = function(){ | |
| /*var cur_version = this.image_version; | |
| this.firmware_version = cur_version;*/ | |
| _debug('this.image_version:', this.image_version); | |
| _debug('this.image_desc:', this.image_desc); | |
| _debug('this.image_date:', this.image_date); | |
| _debug('this.num_banks:', this.num_banks); | |
| //_debug('stb.user.image_version:', stb.user['image_version']); | |
| if (this.image_version < 203 && this.image_version != 0){ | |
| return 0; | |
| } | |
| _debug('checking conditions'); | |
| _debug('typeof stb.user[autoupdate]', typeof(stb.user['autoupdate'])); | |
| if (typeof stb.user['autoupdate'] == 'object' && | |
| ((stb.user['autoupdate'].require_image_version != '' && stb.user['autoupdate'].require_image_version != this.image_version) || | |
| (stb.user['autoupdate'].require_image_date != '' && stb.user['autoupdate'].require_image_date != this.image_date)) && | |
| ((stb.user['autoupdate'].image_version_contains != '' && stb.user['autoupdate'].image_version_contains == this.image_version) || | |
| (stb.user['autoupdate'].image_description_contains != '' && this.image_desc.indexOf(stb.user['autoupdate'].image_description_contains) != -1) || | |
| (stb.user['autoupdate'].image_version_contains == '' && stb.user['autoupdate'].image_description_contains == '') | |
| )){ | |
| _debug('checking conditions 2'); | |
| if (this.num_banks == 2 && stb.user['autoupdate'].update_type == 'http_update'){ | |
| try{ | |
| _debug('this.user[update_url]', this.user['update_url']); | |
| _debug('stb.user[autoupdate]', stb.user['autoupdate']); | |
| stbUpdate.startAutoUpdate(this.user['update_url'], false); | |
| //console.log('startAutoUpdate: '+this.user['update_url']); | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| }else if (stb.user['autoupdate'].update_type == 'reboot_dhcp'){ | |
| _debug('RebootDHCP'); | |
| stb.ExecAction('RebootDHCP'); | |
| //console.log('RebootDHCP'); | |
| } | |
| return 0; | |
| } | |
| return 1; | |
| }; | |
| this.user_init = function(user_data){ | |
| stb.loader.add_pos(this.load_step, 'call stb.user_init'); | |
| this.user = user_data; | |
| _debug('this.user:', user_data); | |
| screensaver.init(); | |
| var cut_type = this.type.indexOf('AuraHD') != -1 ? 'AuraHD' : this.type; | |
| if (this.user['allowed_stb_types'] && this.user['allowed_stb_types'].indexOf(cut_type.toLowerCase()) == -1 && !_GET['debug_key']){ | |
| stb.loader.stop(); | |
| this.cut_off(get_word('stb_type_not_supported')); | |
| return; | |
| } | |
| if (this.user['status'] == 2){ | |
| this.init_auth_dialog(); | |
| this.key_lock = false; | |
| this.auth_dialog.show(); | |
| }else if (this.user['status'] == 0){ | |
| try{ | |
| //if (this.type == 'MAG200'){ | |
| /*if (!this.check_graphic_res()){ | |
| return; | |
| }*/ | |
| //this.get_localization(); | |
| this.usbdisk.init(); | |
| this.preload_images(); | |
| this.player.volume.set_level(parseInt(this.user['volume'], 10)); | |
| this.player.setup_rtsp(this.user['rtsp_type'], this.user['rtsp_flags']); | |
| if (this.user.hasOwnProperty('cas_type')){ | |
| this.player.set_cas(this.user); | |
| } | |
| this.user.fav_itv_on = parseInt(this.user.fav_itv_on, 10); | |
| this.user['aspect'] = parseInt(this.user['aspect'], 10); | |
| this.user['audio_out'] = parseInt(this.user['audio_out'], 10); | |
| stb.user['playback_limit'] = parseInt(this.user['playback_limit'], 10); | |
| this.user['tv_archive_days'] = parseInt(this.user['tv_archive_days'], 10); | |
| this.user['screensaver_delay'] = parseInt(this.user['screensaver_delay'], 10); | |
| this.user['watchdog_timeout'] = parseInt(this.user['watchdog_timeout'], 10); | |
| this.user['timeslot'] = parseFloat(this.user['timeslot']); | |
| this.user['update_url'] = this.profile['update_url'] ? this.profile['update_url'] + this.type.substr(3) + '/imageupdate' : 'http://mag.infomir.com.ua/' + this.type.substr(3) + '/imageupdate'; | |
| if (['MAG200', 'MAG250'].indexOf(this.type) >= 0 || this.type.indexOf('AuraHD') != -1){ | |
| this.check_image_version(); | |
| } | |
| this.epg_loader.start(); | |
| this.locale = this.user.locale; | |
| this.aspect_idx = this.aspect_array.getIdxByVal('mode', this.user['aspect']); | |
| this.check_additional_services(this.user['additional_services_on']); | |
| if (this.aspect_idx == null){ | |
| this.aspect_idx = 0; | |
| } | |
| try{ | |
| var timezone = stb.RDir('getenv timezone_conf'); | |
| _debug('timezone', timezone); | |
| if (this.user['default_timezone'] && !timezone){ | |
| _debug('setenv timezone_conf '+this.user['default_timezone']); | |
| stb.RDir('setenv timezone_conf '+this.user['default_timezone']); | |
| } | |
| _debug('stb.GetBrightness before', stb.GetBrightness()); | |
| _debug('stb.GetContrast before', stb.GetContrast()); | |
| _debug('stb.GetSaturation before', stb.GetSaturation()); | |
| stb.SetBrightness(127); | |
| stb.SetContrast(-27); | |
| stb.SetSaturation(100); | |
| _debug('stb.GetBrightness after', stb.GetBrightness()); | |
| _debug('stb.GetContrast after', stb.GetContrast()); | |
| _debug('stb.GetSaturation after', stb.GetSaturation()); | |
| stb.SetAspect(this.user['aspect']); | |
| stb.SetBufferSize(this.user['playback_buffer_size'], this.user['playback_buffer_bytes']); | |
| this.user['playback_buffer_size'] = this.user['playback_buffer_size'] / 1000; | |
| stb.SetupSPdif(this.user['audio_out']); | |
| stb.EnableServiceButton(false); | |
| stb.EnableAppButton && stb.EnableAppButton(false); | |
| //stb.SetWebProxy(string proxy_addr,int proxy_port,string user_name,string passwd,string exclude_list); | |
| if (this.user['web_proxy_host']){ | |
| stb.SetWebProxy && stb.SetWebProxy(this.user['web_proxy_host'], this.user['web_proxy_port'], this.user['web_proxy_user'], this.user['web_proxy_pass'], this.user['web_proxy_exclude_list']); | |
| } | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| this.get_modules(); | |
| //this.mount_home_dir(this.user['storages']); | |
| this.set_storages(this.user['storages']); | |
| stb.loader.add_pos(this.load_step, 'call stb.mount_home_dir'); | |
| this.load_channels(); | |
| this.load_fav_channels(); | |
| this.load_fav_itv(); | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| }else if(this.user['status'] == 1){ | |
| stb.loader.stop(); | |
| this.cut_off(); | |
| } | |
| this.watchdog.run(this.user['watchdog_timeout'], this.user['timeslot']); | |
| }; | |
| this.post_loading_handle = function(){ | |
| _debug('stb.post_loading_handle'); | |
| _debug('this.user[display_menu_after_loading]', this.user['display_menu_after_loading']); | |
| this.key_lock = false; | |
| if (single_module && module[single_module]){ | |
| module[single_module]._show && module[single_module]._show() || module[single_module].show && module[single_module].show(); | |
| return; | |
| } | |
| this.player.init_first_channel(); | |
| if (this.user['display_menu_after_loading'] || !this.player.channels || this.player.channels.length == 0){ | |
| main_menu.show(); | |
| }else{ | |
| this.player.first_play(); | |
| } | |
| }; | |
| this.mount_home_dir = function(storages){ | |
| _debug('stb.mount_home_dir: ', storages); | |
| this.set_storages(storages); | |
| stb.loader.add_pos(this.load_step, 'call stb.mount_home_dir'); | |
| for(var i in storages){ | |
| if (storages.hasOwnProperty(i)){ | |
| stb.ExecAction('make_dir /media/'+storages[i]['storage_name']); | |
| var mount_cmd = '"'+storages[i]['storage_ip']+':'+storages[i]['nfs_home_path']+stb.mac+'" /media/'+storages[i]['storage_name']; | |
| _debug('mount_cmd: '+mount_cmd); | |
| try{ | |
| stb.ExecAction('mount_dir '+mount_cmd); | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| } | |
| } | |
| }; | |
| this.set_storages = function(storages){ | |
| _debug('stb.set_storages', storages); | |
| this.storages = this.user['storages'] = storages; | |
| }; | |
| this.remount_storages = function(callback){ | |
| _debug('stb.remount_storages'); | |
| stb.load( | |
| { | |
| "type" : "stb", | |
| "action" : "get_storages" | |
| }, | |
| function(result){ | |
| _debug('storages', result); | |
| this.set_storages(result); | |
| //this.mount_home_dir(this.user['storages']); | |
| callback(); | |
| }, | |
| this | |
| ); | |
| }; | |
| this.Mount = function(link_cmd){ | |
| _debug('stb.Mount', link_cmd); | |
| var mounted_storage = link_cmd.replace(/[\s\S]*\/media\/(.*)\/(.*)/ , "$1"); | |
| if (mounted_storage == this.mounted_storage){ | |
| _debug('clear Umount Timeout', mounted_storage); | |
| window.clearTimeout(stb.player.umount_timer); | |
| } | |
| this.mounted_storage = mounted_storage; | |
| _debug('stb.mounted_storage', this.mounted_storage); | |
| try{ | |
| gSTB.ExecAction('make_dir /media/'+this.mounted_storage); | |
| var mount_cmd = '"' + this.storages[this.mounted_storage]['storage_ip'] + ':' + this.storages[this.mounted_storage]['nfs_home_path'] + this.mac + '" /media/' + this.mounted_storage; | |
| gSTB.ExecAction('mount_dir '+mount_cmd); | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| }; | |
| this.Umount = function(storage){ | |
| _debug('stb.Umount', storage); | |
| //_debug('stb.mounted_storage', this.mounted_storage); | |
| if (storage){ | |
| try{ | |
| gSTB.ExecAction('umount_dir /media/'+storage); | |
| //this.mounted_storage = ''; | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| } | |
| }; | |
| this.switchPower = function(){ | |
| _debug('stb.switchPower()'); | |
| if(this.power_off){ | |
| this.StandBy(0); | |
| this.power_off = false; | |
| keydown_observer.emulate_key(key.MENU); | |
| this.clock && this.clock.show && this.clock.show(); | |
| }else{ | |
| keydown_observer.emulate_key(key.MENU); | |
| this.StandBy(1); | |
| this.power_off = true; | |
| this.setFrontPanel(''); | |
| } | |
| }; | |
| this.get_image_version = function(){ | |
| _debug('get_image_version'); | |
| var ver = ''; | |
| try{ | |
| var full_ver = stb.RDir('Img_Ver'); | |
| _debug('full_ver:', full_ver); | |
| var pattern = /ImageVersion:\s([^\s]*)\s(.*)/; | |
| var short_ver = full_ver.replace(pattern, "$1"); | |
| if (short_ver.length < 30){ | |
| ver = short_ver.clearnl(); | |
| } | |
| _debug('ver:', ver); | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| return ver; | |
| }; | |
| this.check_graphic_res = function(){ | |
| _debug('check_graphic_res'); | |
| try{ | |
| //var gres = stb.RDir('gmode'); | |
| //_debug('gres:', gres); | |
| var res = { | |
| "r480" :{ | |
| "w" : 720, | |
| "h" : 480, | |
| "window_w" : 720, | |
| "window_h" : 480, | |
| "prefix" : '_480' | |
| }, | |
| "r576" :{ | |
| "w" : 720, | |
| "h" : 576, | |
| "window_w" : 720, | |
| "window_h" : 576, | |
| "prefix" : '' | |
| }, | |
| "r720" : { | |
| "w" : 1280, | |
| "h" : 720, | |
| "window_w" : 1280, | |
| "window_h" : 720, | |
| "prefix" : '_720' | |
| }, | |
| "r1080" : { | |
| "w" : 1920, | |
| "h" : 1080, | |
| "window_w" : 1280, | |
| "window_h" : 720, | |
| "prefix" : '_720' | |
| } | |
| }; | |
| //if (gres == 'tvsystem_res'){ | |
| var gres = screen.height; | |
| //} | |
| this.graphic_mode = gres; | |
| _debug('gres', gres); | |
| //if (gres == '720'){ | |
| if (res["r"+gres]){ | |
| resolution_prefix = res["r"+gres].prefix; | |
| window.resizeTo(res["r"+gres].window_w, res["r"+gres].window_h); | |
| _debug('window.moveTo', (res["r"+gres].w - res["r"+gres].window_w)/2, (res["r"+gres].h - res["r"+gres].window_h)/2); | |
| window.moveTo((res["r"+gres].w - res["r"+gres].window_w)/2, (res["r"+gres].h - res["r"+gres].window_h)/2); | |
| //window.resizeTo(res["r"+gres].window_w, res["r"+gres].window_h); | |
| if (gres == 1080 && !window.referrer){ | |
| stb.ExecAction('graphicres 1280'); | |
| }else{ | |
| return 1; | |
| } | |
| }else{ | |
| stb.ExecAction('graphicres 720'); | |
| } | |
| _debug('Reboot'); | |
| stb.ExecAction('reboot'); | |
| return 0; | |
| /*if (gres != '720'){ | |
| _debug('window.referrer', window.referrer); | |
| if (stb.type == 'MAG200'){ | |
| if (window.referrer){ | |
| window.resizeTo(720, 576); | |
| if (res["r"+gres]){ | |
| _debug('window.moveTo', (res["r"+gres].w - 720)/2, (res["r"+gres].h - 576)/2); | |
| window.moveTo((res["r"+gres].w - 720)/2, (res["r"+gres].h - 576)/2); | |
| } | |
| }else{ | |
| //_debug('Reboot'); | |
| //stb.ExecAction('graphicres 720'); | |
| //stb.ExecAction('reboot'); | |
| //return 0; | |
| } | |
| } | |
| }*/ | |
| }catch(e){ | |
| _debug(e); | |
| return 1; | |
| } | |
| }; | |
| this.load_channels = function(){ | |
| this.load( | |
| { | |
| 'type' : 'itv', | |
| 'action': 'get_all_channels' | |
| }, | |
| function(result){ | |
| _debug('all_channels', result); | |
| stb.loader.add_pos(this.load_step, 'channels loaded'); | |
| this.player.channels = result.data || []; | |
| this.channels_loaded(); | |
| }, | |
| this | |
| ) | |
| }; | |
| this.load_fav_channels = function(){ | |
| this.load( | |
| { | |
| 'type' : 'itv', | |
| 'action': 'get_all_fav_channels', | |
| 'fav' : 1 | |
| }, | |
| function(result){ | |
| _debug('all_fav_channels', result); | |
| stb.loader.add_pos(this.load_step, 'fav_channels loaded'); | |
| this.player.fav_channels = result.data || []; | |
| this.channels_loaded(); | |
| }, | |
| this | |
| ) | |
| }; | |
| this.load_fav_itv = function(){ | |
| this.load( | |
| { | |
| 'type' : 'itv', | |
| 'action' : 'get_fav_ids' | |
| }, | |
| function(result){ | |
| _debug('fav_itv_ids', result); | |
| this.player.fav_channels_ids = result || []; | |
| if (this.player.fav_channels_ids.length == 0){ | |
| this.user.fav_itv_on = 0; | |
| } | |
| this.channels_loaded(); | |
| }, | |
| this | |
| ) | |
| }; | |
| this.channels_loaded = function(){ | |
| /*if (this.channels_inited){ | |
| return; | |
| } | |
| if (typeof(this.player.channels) != 'undefined' && | |
| typeof(this.player.fav_channels) != 'undefined' && | |
| typeof(this.player.fav_channels_ids) != 'undefined'){ | |
| if (this.user.fav_itv_on){ | |
| this.player.f_ch_idx = this.player.fav_channels.getIdxById(this.user.last_itv_id); | |
| if (this.player.f_ch_idx === null){ | |
| this.player.f_ch_idx = 0; | |
| } | |
| var channel = this.player.fav_channels[this.player.f_ch_idx]; | |
| }else{ | |
| this.player.ch_idx = this.player.channels.getIdxById(this.user.last_itv_id); | |
| if (this.player.ch_idx === null){ | |
| this.player.ch_idx = 0; | |
| } | |
| var channel = this.player.channels[this.player.ch_idx]; | |
| } | |
| this.player.need_show_info = 1; | |
| this.player.play(channel); | |
| this.key_lock = false; | |
| this.channels_inited = 1; | |
| }*/ | |
| }; | |
| this.log_stream_error = function(ch_id, event){ | |
| this.load( | |
| { | |
| "type" : "stb", | |
| "action" : "set_stream_error", | |
| "ch_id" : ch_id, | |
| "event" : event | |
| }, | |
| function(result){ | |
| }, | |
| this | |
| ); | |
| }; | |
| this.epg_loader = { | |
| timeout : 21600000, // 6h | |
| timer_id : 0, | |
| epg : [], | |
| start : function(){ | |
| _debug('epg_loader.start'); | |
| this.load(); | |
| var self = this; | |
| this.timer_id = window.setInterval(function(){self.load()}, this.timeout); | |
| }, | |
| stop : function(){ | |
| _debug('epg_loader.stop'); | |
| window.clearInterval(this.timer_id); | |
| }, | |
| load : function(){ | |
| _debug('epg_loader.load'); | |
| stb.load( | |
| { | |
| "type" : "itv", | |
| "action" : "get_epg_info" | |
| }, | |
| function(result){ | |
| this.set_epg(result.data); | |
| }, | |
| this | |
| ) | |
| }, | |
| set_epg : function(data){ | |
| _debug('epg_loader.set_epg', data); | |
| this.epg = data; | |
| _debug('typeof(this.epg)', typeof(this.epg)); | |
| }, | |
| get_epg : function(ch_id){ | |
| _debug('epg_loader.get_epg', ch_id); | |
| ch_id = ''+ch_id; | |
| _debug('typeof(ch_id)', typeof(ch_id)); | |
| var now = Date.parse(new Date())/1000; | |
| var result = ''; | |
| _debug('now', now); | |
| _debug('this.epg[ch_id]', this.epg[ch_id]); | |
| _debug('typeof this.epg[ch_id]', typeof(this.epg[ch_id])); | |
| try{ | |
| if (typeof(this.epg[ch_id]) == 'object' && this.epg[ch_id].length > 0){ | |
| _debug('this.epg[ch_id].length: '+this.epg[ch_id].length); | |
| for (var i=0; i < this.epg[ch_id].length; i++){ | |
| _debug('i', i); | |
| if (this.epg[ch_id][i]['start_timestamp'] < now){ | |
| _debug('continue'); | |
| }else if (this.epg[ch_id][i]['start_timestamp'] == now){ | |
| _debug('=='); | |
| result = this.epg[ch_id][i].t_time + ' ' + this.epg[ch_id][i].name; | |
| if (typeof(this.epg[ch_id][i+1]) == 'object'){ | |
| result += '<br>'+this.epg[ch_id][i+1].t_time + ' ' + this.epg[ch_id][i+1].name; | |
| } | |
| return result; | |
| }else{ | |
| if (typeof(this.epg[ch_id][i-1]) == 'object'){ | |
| result = this.epg[ch_id][i-1].t_time + ' ' + this.epg[ch_id][i-1].name; | |
| if (typeof(this.epg[ch_id][i]) == 'object'){ | |
| result += '<br>'+this.epg[ch_id][i].t_time + ' ' + this.epg[ch_id][i].name; | |
| } | |
| }else{ | |
| result = this.epg[ch_id][i].t_time + ' ' + this.epg[ch_id][i].name; | |
| } | |
| return result; | |
| } | |
| } | |
| } | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| return ''; | |
| } | |
| }; | |
| this.cut_off = function(msg){ | |
| _debug('stb.cut_off'); | |
| if (module.blocking.on){ | |
| return; | |
| } | |
| _log('cut_off()'); | |
| this.key_lock = false; | |
| this.player.stop(); | |
| if(this.cur_layer){ | |
| this.cur_layer.on = false; | |
| } | |
| stb.SetDefaultFlicker && stb.SetDefaultFlicker(1); | |
| /*var text_msg = create_block_element('cut_off_text', this.cut_off.dom_obj); | |
| text_msg.innerHTML = get_word('cut_off_msg');*/ | |
| module.blocking.show(msg); | |
| }; | |
| this.cut_on = function(){ | |
| _debug('stb.cut_on'); | |
| if (module.blocking.on){ | |
| stb.ExecAction('reboot'); | |
| } | |
| }; | |
| this.set_cur_place = function(place){ | |
| this.cur_place = place; | |
| }; | |
| this.reset_cur_place = function(place){ | |
| this.cur_place = ''; | |
| }; | |
| this.set_cur_layer = function(obj){ | |
| this.cur_layer = obj; | |
| }; | |
| this.get_current_place = function(){ | |
| var cur_place_num = 0; | |
| _debug('stb.player.media_type', this.player.media_type); | |
| _debug('stb.cur_place', this.cur_place); | |
| if(this.player.media_type == 'stream'){ // TV | |
| if (this.player.on){ | |
| if (this.cur_place == 'tv'){ | |
| cur_place_num = 1; | |
| }else if(this.cur_place == 'radio'){ // Radio | |
| cur_place_num = 5; | |
| }else{ | |
| cur_place_num = 1; | |
| } | |
| } | |
| }else if(this.player.media_type == 'file'){ | |
| if (this.player.on){ | |
| if (this.cur_place == 'vclub'){ // Video Club | |
| cur_place_num = 2; | |
| }else if(this.cur_place == 'karaoke'){ // Karaoke | |
| cur_place_num = 3; | |
| }else if(this.cur_place == 'audio_club'){ // Audio Club | |
| cur_place_num = 4; | |
| }else if(this.cur_place == 'video_clips'){ // Video Clips | |
| cur_place_num = 8; | |
| }else if(this.cur_place == 'ad'){ | |
| cur_place_num = 9; | |
| }else if(this.cur_place == 'media_browser'){ | |
| cur_place_num = 10; | |
| }else if (this.cur_place == 'epg_simple' || this.cur_place == 'epg'){ | |
| cur_place_num = 11; | |
| }else if (this.cur_place == 'remote_pvr'){ | |
| cur_place_num = 12; | |
| } | |
| } | |
| }else{ | |
| if (this.cur_place == 'city_info'){ | |
| cur_place_num = 20; | |
| }else if(this.cur_place == 'anec_page'){ | |
| cur_place_num = 21; | |
| }else if(this.cur_place == 'weather_page'){ | |
| cur_place_num = 22; | |
| }else if(this.cur_place == 'game_page'){ | |
| cur_place_num = 23; | |
| }else if(this.cur_place == 'horoscope_page'){ | |
| cur_place_num = 24; | |
| }else if(this.cur_place == 'course_page'){ | |
| cur_place_num = 25; | |
| } | |
| } | |
| return cur_place_num; | |
| }; | |
| this.clock = { | |
| start : function(){ | |
| _debug('clock.start()'); | |
| if (this.t_clock){ | |
| _debug('exit clock.start'); | |
| return; | |
| } | |
| this.tick(); | |
| var self = this; | |
| try{ | |
| this.t_clock = window.setInterval(function(){self.tick()}, 30000); | |
| this.t_clock_s = window.setInterval(function(){self.tick_s()}, 1000); | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| }, | |
| stop : function(){ | |
| _debug('clock.stop'); | |
| _debug('self.t_clock', this.t_clock); | |
| var self = this; | |
| try{ | |
| window.clearInterval(self.t_clock); | |
| window.clearInterval(self.t_clock_s); | |
| }catch(e){ | |
| _debug(e); | |
| } | |
| }, | |
| tick_s : function(){ | |
| this.timestamp = Math.round(new Date().getTime() / 1000); | |
| }, | |
| tick : function(){ | |
| this.current_date = new Date(); | |
| this.year = this.current_date.getFullYear(); | |
| this.month = this.current_date.getMonth(); | |
| this.date = this.current_date.getDate(); | |
| this.day = this.current_date.getDay(); | |
| this.hours = this.current_date.getHours(); | |
| this.hours = this.current_date.getHours(); | |
| if (this.hours > 11){ | |
| this.ap_mark = 'PM'; | |
| }else{ | |
| this.ap_mark = 'AM'; | |
| } | |
| if (this.hours > 12){ | |
| this.ap_hours = this.hours - 12; | |
| }else{ | |
| this.ap_hours = this.hours; | |
| } | |
| if (this.ap_hours == 12){ | |
| this.ap_hours = 0 | |
| } | |
| this.minutes = this.current_date.getMinutes(); | |
| if (this.minutes<10){ | |
| this.minutes = '0'+this.minutes; | |
| } | |
| this.show(); | |
| }, | |
| show : function(){ | |
| if (typeof(main_menu) != 'undefined' && main_menu && main_menu.time && main_menu.date && main_menu.on){ | |
| main_menu.time.innerHTML = get_word('time_format').format(this.hours, this.minutes, this.ap_hours, this.ap_mark); | |
| main_menu.date.innerHTML = get_word('date_format').format(get_word('week_arr')[this.day], this.date, get_word('month_arr')[this.month], this.year); | |
| } | |
| if (stb.player && stb.player.info && stb.player.info.on && stb.player.info.clock){ | |
| stb.player.info.clock.innerHTML = get_word('time_format').format(this.hours, this.minutes, this.ap_hours, this.ap_mark); | |
| } | |
| if (module && module.tv && module.tv.on && module.tv.clock_box){ | |
| module.tv.clock_box.innerHTML = get_word('time_format').format(this.hours, this.minutes, this.ap_hours, this.ap_mark); | |
| } | |
| if (!stb.player.on || (stb.player.on && !stb.player.is_tv)){ | |
| stb.setFrontPanel(this.hours + '' + this.minutes, true); | |
| } | |
| this.triggerCustomEventListener("tick", this); | |
| } | |
| } | |
| } | |
| var screensaver = { | |
| on : false, | |
| init : function(){ | |
| //_debug('screensaver.init'); | |
| //return; | |
| if (this.dom_obj){ | |
| _debug('exit screensaver.init'); | |
| return; | |
| } | |
| this.build(); | |
| var self = this; | |
| keydown_observer.addCustomEventListener("keypress", function(event){ | |
| //_debug('screensaver keypress', event); | |
| if (self.on){ | |
| self.hide(); | |
| self.restart_timer.call(self); | |
| return false; | |
| } | |
| self.restart_timer.call(self); | |
| return true; | |
| }); | |
| this.restart_timer(); | |
| stb.player.addCustomEventListener("onplay", function(event){ | |
| if (self.on){ | |
| self.hide(); | |
| } | |
| }); | |
| stb.clock.addCustomEventListener("tick", function(date){ | |
| if (self.on){ | |
| self.clock.innerHTML = get_word('time_format').format(date.hours, date.minutes, date.ap_hours, date.ap_mark); | |
| } | |
| }); | |
| }, | |
| restart_timer : function(){ | |
| //_debug('screensaver.restart_timer'); | |
| var self = this; | |
| window.clearTimeout(this.activate_timer); | |
| if (stb.user['screensaver_delay'] > 0){ | |
| this.activate_timer = window.setTimeout(function(){ | |
| self.show.call(self); | |
| }, stb.user['screensaver_delay'] * 60000); | |
| //}, 30000); | |
| } | |
| }, | |
| build : function(){ | |
| //_debug('screensaver.build'); | |
| this.dom_obj = create_block_element("screensaver"); | |
| this.clock = create_block_element("screensaver_clock", this.dom_obj); | |
| this.hide(); | |
| }, | |
| show : function(){ | |
| _debug('screensaver.show'); | |
| window.clearTimeout(this.activate_timer); | |
| if (stb.player.on){ | |
| _debug('stb.player.on', stb.player.on); | |
| this.restart_timer(); | |
| return; | |
| } | |
| //stb.cur_layer && stb.cur_layer.dom_obj.hide(); | |
| this.dom_obj.show(); | |
| this.on = true; | |
| this.clock.innerHTML = get_word('time_format').format(stb.clock.hours, stb.clock.minutes, stb.clock.ap_hours, stb.clock.ap_mark); | |
| this.move(); | |
| var self = this; | |
| this.move_timer = window.setInterval(function(){self.move.call(self)}, 5000); | |
| }, | |
| hide : function(){ | |
| _debug('screensaver.hide'); | |
| //stb.cur_layer && stb.cur_layer.dom_obj.show(); | |
| this.dom_obj.hide(); | |
| this.on = false; | |
| window.clearInterval(this.move_timer); | |
| }, | |
| toggle : function(){ | |
| _debug('screensaver.toggle'); | |
| if (this.on){ | |
| this.hide(); | |
| }else{ | |
| window.setTimeout(function(){screensaver.show()}, 500); | |
| } | |
| }, | |
| move : function(){ | |
| _debug('screensaver.start'); | |
| var top = Math.floor(Math.random() * (screen.height - this.clock.offsetHeight)); | |
| var left = Math.floor(Math.random() * (screen.width - this.clock.offsetWidth)); | |
| _debug('top', top); | |
| _debug('left', left); | |
| this.clock.moveX(left); | |
| this.clock.moveY(top); | |
| } | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment