X-Git-Url: https://git.wh0rd.org/?p=chrome-ext%2Fmusic-player-client.git;a=blobdiff_plain;f=main.js;h=1de6b6a4c18e8f254be18dbcc6acb6971c9220ef;hp=08efb7289631455ab61597c35011b54d6091429c;hb=4ed31ba857752d2d550dde24200a751574ffce8f;hpb=50dafc4c60cfd4183bdedcd86fcd9b6b932c6a0b diff --git a/main.js b/main.js index 08efb72..1de6b6a 100644 --- a/main.js +++ b/main.js @@ -3,6 +3,7 @@ /* Globals to allow easy manipulation via javascript console */ var mpc; var tcpclient; +var refresh_id = NaN; function TcpClientSender(tcpclient) { this.tcpclient = tcpclient; @@ -24,12 +25,13 @@ window.onload = function() { 'sync', ]; var sync_keys = [ - 'host', 'port', + 'host', 'port', 'refresh', ]; var options = { 'host': '192.168.0.2', 'port': 6600, 'sync': true, + 'refresh': 5, }; chrome.storage.local.get(local_keys, function(settings) { @@ -77,7 +79,10 @@ function mpc_connect(host, port) { tcpclient.addResponseListener(tramp_mpc_recv); mpc = new Mpc(mpc_sender, update_ui); console.log('connected to ' + host + ':' + port); + console.log('protip: use the "mpc" object to poke mpd directly.\n' + + 'you can also do mpc.set_debug(3) to see traffic'); mpc_refresh(); + update_refresh_timer(); }); } @@ -142,6 +147,19 @@ function show_page(page) { } } +function do_refresh() { + mpc_refresh(); + refresh_id = window.setTimeout(do_refresh, window['opts_refresh'].value * 1000); +} + +function update_refresh_timer() { + if (!isNaN(refresh_id)) + window.clearTimeout(refresh_id); + var rate = window['opts_refresh'].value * 1000; + if (rate > 0) + refresh_id = window.setTimeout(do_refresh, rate); +} + function update_local_settings() { var setting = {}; setting[this.id] = this.checked; @@ -153,6 +171,12 @@ function update_sync_settings() { setting[this.id] = this.value; var storage = sync_storage(window['opts_sync'].checked); storage.set(setting); + + switch (this.id) { + case 'refresh': + update_refresh_timer(); + break; + } } function init_ui(local_keys, sync_keys, options) { @@ -171,7 +195,7 @@ function init_ui(local_keys, sync_keys, options) { 'seekcur', 'setvol', 'single', 'stop', ].forEach(function(id) { var ele = window['ui_mpc_' + id] = document.getElementById(id); - ele.onclick = window['tramp_mpc_' + id]; + ele.onchange = ele.onclick = window['tramp_mpc_' + id]; ele.title = id; }); @@ -217,7 +241,12 @@ function update_ui(state, cmd) { return; } - var time = state.time.split(':'); + var time; + if ('time' in state) + // When stopped, there is no time field at all. + time = state.time.split(':'); + else + time = [0, 0]; window['ui_mpc_seekcur'].max = time[1]; window['ui_mpc_seekcur'].value = time[0];