mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-09 13:07:03 +03:00
Enable live EQ preview in Material skin (and Classic/EN)
* add JavaScript to submit the changes before storing them * add input validation * fix settings page loading in case of networking issues (which I suffered from when I tried to implement the above :-))
This commit is contained in:
@@ -63,6 +63,9 @@ sub initFirmwareDownload {
|
|||||||
$cb->() if $cb;
|
$cb->() if $cb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
elsif ($cb) {
|
||||||
|
$cb->();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
sub {
|
sub {
|
||||||
my ($http, $error) = @_;
|
my ($http, $error) = @_;
|
||||||
@@ -119,10 +122,15 @@ sub prefetchFirmware {
|
|||||||
|
|
||||||
$cb->($releaseInfo, _gh2lmsUrl($url), $customFwUrl) if $cb;
|
$cb->($releaseInfo, _gh2lmsUrl($url), $customFwUrl) if $cb;
|
||||||
}
|
}
|
||||||
|
elsif ($cb) {
|
||||||
|
$cb->();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
sub {
|
sub {
|
||||||
my ($http, $error) = @_;
|
my ($http, $error) = @_;
|
||||||
$log->error("Failed to get releases from Github: $error");
|
$log->error("Failed to get releases from Github: $error");
|
||||||
|
|
||||||
|
$cb->() if $cb;
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
timeout => 10,
|
timeout => 10,
|
||||||
|
|||||||
@@ -1,3 +1,55 @@
|
|||||||
|
[% IF useExtJS; extJsScripts = BLOCK %]
|
||||||
|
<script type="text/javascript">
|
||||||
|
Ext.onReady(function () {
|
||||||
|
new Ext.util.TaskRunner().start({
|
||||||
|
run: checkEq,
|
||||||
|
interval: 1000
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function checkEq() {
|
||||||
|
var eqValues = [];
|
||||||
|
this.lastValues = this.lastValues || [];
|
||||||
|
|
||||||
|
for (var x = 0; x < 10; x++) {
|
||||||
|
eqValues[x] = Ext.get('pref_equalizer.' + x).dom.value || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eqValues.join() != this.lastValues.join()) {
|
||||||
|
this.lastValues = eqValues;
|
||||||
|
SqueezeJS.Controller.request({
|
||||||
|
params: ['[% playerid %]', ['squeezeesp32', 'seteq', eqValues.join()]]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
[% END; ELSIF !useExtJS; pageHeaderScripts = BLOCK %]
|
||||||
|
<script type="text/javascript">
|
||||||
|
setInterval(checkEq, 1000);
|
||||||
|
|
||||||
|
function checkEq() {
|
||||||
|
var eqValues = [];
|
||||||
|
this.lastValues = this.lastValues || [];
|
||||||
|
|
||||||
|
for (var x = 0; x < 10; x++) {
|
||||||
|
eqValues[x] = $('pref_equalizer.' + x).value || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eqValues.join() != this.lastValues.join()) {
|
||||||
|
this.lastValues = eqValues;
|
||||||
|
new Ajax.Request('/jsonrpc.js', {
|
||||||
|
method: 'post',
|
||||||
|
postBody: JSON.stringify({
|
||||||
|
id: 1,
|
||||||
|
method: 'slim.request',
|
||||||
|
params: ['[% playerid %]', ['squeezeesp32', 'seteq', eqValues.join()]]
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
[% END; END %]
|
||||||
|
|
||||||
[% PROCESS settings/header.html %]
|
[% PROCESS settings/header.html %]
|
||||||
|
|
||||||
[% WRAPPER setting title="PLUGIN_SQUEEZEESP32_FIRMWARE" desc="" %]
|
[% WRAPPER setting title="PLUGIN_SQUEEZEESP32_FIRMWARE" desc="" %]
|
||||||
@@ -59,62 +111,36 @@
|
|||||||
<div>[% "PLUGIN_SQUEEZEESP32_EQUALIZER_SAVE" | string %]</div>
|
<div>[% "PLUGIN_SQUEEZEESP32_EQUALIZER_SAVE" | string %]</div>
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|
||||||
<script TYPE="text/javascript">
|
|
||||||
if (Ext) {
|
|
||||||
Ext.onReady(function () {
|
|
||||||
new Ext.util.TaskRunner().start({
|
|
||||||
run: checkEq,
|
|
||||||
interval: 1000
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
function checkEq() {
|
|
||||||
var eqValues = [];
|
|
||||||
this.lastValues = this.lastValues || [];
|
|
||||||
|
|
||||||
for (var x = 0; x < 10; x++) {
|
|
||||||
eqValues[x] = Ext.get('pref_equalizer.' + x).dom.value || 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eqValues.join() != this.lastValues.join()) {
|
|
||||||
this.lastValues = eqValues;
|
|
||||||
SqueezeJS.Controller.request({
|
|
||||||
params: ['[% playerid %]', ['squeezeesp32', 'seteq', eqValues.join()]]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
[% WRAPPER settingSection %]
|
[% WRAPPER settingSection %]
|
||||||
[% WRAPPER settingGroup title='31Hz' desc="" %]
|
[% WRAPPER settingGroup title='31Hz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.0" id="pref_equalizer.0" value="[% pref_equalizer.0 %]" size="2"">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.0" id="pref_equalizer.0" value="[% pref_equalizer.0 || 0 %]" size="2"">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% WRAPPER settingGroup title='62Hz' desc="" %]
|
[% WRAPPER settingGroup title='62Hz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.1" id="pref_equalizer.1" value="[% pref_equalizer.1 %]" size="2">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.1" id="pref_equalizer.1" value="[% pref_equalizer.1 || 0 %]" size="2">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% WRAPPER settingGroup title='125Hz' desc="" %]
|
[% WRAPPER settingGroup title='125Hz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.2" id="pref_equalizer.2" value="[% pref_equalizer.2 %]" size="2">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.2" id="pref_equalizer.2" value="[% pref_equalizer.2 || 0 %]" size="2">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% WRAPPER settingGroup title='250Hz' desc="" %]
|
[% WRAPPER settingGroup title='250Hz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.3" id="pref_equalizer.3" value="[% pref_equalizer.3 %]" size="2">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.3" id="pref_equalizer.3" value="[% pref_equalizer.3 || 0 %]" size="2">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% WRAPPER settingGroup title='500Hz' desc="" %]
|
[% WRAPPER settingGroup title='500Hz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.4" id="pref_equalizer.4" value="[% pref_equalizer.4 %]" size="2">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.4" id="pref_equalizer.4" value="[% pref_equalizer.4 || 0 %]" size="2">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% WRAPPER settingGroup title='1kHz' desc="" %]
|
[% WRAPPER settingGroup title='1kHz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.5" id="pref_equalizer.5" value="[% pref_equalizer.5 %]" size="2">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.5" id="pref_equalizer.5" value="[% pref_equalizer.5 || 0 %]" size="2">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% WRAPPER settingGroup title='2kHz' desc="" %]
|
[% WRAPPER settingGroup title='2kHz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.6" id="pref_equalizer.6" value="[% pref_equalizer.6 %]" size="2">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.6" id="pref_equalizer.6" value="[% pref_equalizer.6 || 0 %]" size="2">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% WRAPPER settingGroup title='4kHz' desc="" %]
|
[% WRAPPER settingGroup title='4kHz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.7" id="pref_equalizer.7" value="[% pref_equalizer.7 %]" size="2">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.7" id="pref_equalizer.7" value="[% pref_equalizer.7 || 0 %]" size="2">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% WRAPPER settingGroup title='8kHz' desc="" %]
|
[% WRAPPER settingGroup title='8kHz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.8" id="pref_equalizer.8" value="[% pref_equalizer.8 %]" size="2">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.8" id="pref_equalizer.8" value="[% pref_equalizer.8 || 0 %]" size="2">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% WRAPPER settingGroup title='16kHz' desc="" %]
|
[% WRAPPER settingGroup title='16kHz' desc="" %]
|
||||||
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.9" id="pref_equalizer.9" value="[% pref_equalizer.9 %]" size="2">
|
<input type="text" class="stdedit sliderInput_-13_20" name="pref_equalizer.9" id="pref_equalizer.9" value="[% pref_equalizer.9 || 0 %]" size="2">
|
||||||
[% END %]
|
[% END %]
|
||||||
[% END %]
|
[% END %]
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|||||||
@@ -112,6 +112,21 @@ sub initPrefs {
|
|||||||
artwork => undef,
|
artwork => undef,
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
$prefs->setValidate({
|
||||||
|
validator => sub {
|
||||||
|
my ($pref, $new, $params, $old, $client) = @_;
|
||||||
|
|
||||||
|
$new ||= [(0) x 10];
|
||||||
|
|
||||||
|
foreach (0..9) {
|
||||||
|
return 0 if $new->[$_] < $client->minBass;
|
||||||
|
return 0 if $new->[$_] > $client->maxBass;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}, 'equalizer');
|
||||||
|
|
||||||
$client->SUPER::initPrefs;
|
$client->SUPER::initPrefs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package Plugins::SqueezeESP32::PlayerSettings;
|
|||||||
use strict;
|
use strict;
|
||||||
use base qw(Slim::Web::Settings);
|
use base qw(Slim::Web::Settings);
|
||||||
use JSON::XS::VersionOneAndTwo;
|
use JSON::XS::VersionOneAndTwo;
|
||||||
use List::Util qw(first);
|
use List::Util qw(first min max);
|
||||||
|
|
||||||
use Slim::Utils::Log;
|
use Slim::Utils::Log;
|
||||||
use Slim::Utils::Prefs;
|
use Slim::Utils::Prefs;
|
||||||
@@ -79,9 +79,10 @@ sub handler {
|
|||||||
|
|
||||||
if ($client->can('depth') && $client->depth == 16) {
|
if ($client->can('depth') && $client->depth == 16) {
|
||||||
my $equalizer = $cprefs->get('equalizer');
|
my $equalizer = $cprefs->get('equalizer');
|
||||||
for my $i (0 .. $#{$equalizer}) {
|
foreach (0 .. 9) {
|
||||||
$equalizer->[$i] = $paramRef->{"pref_equalizer.$i"} || 0;
|
$equalizer->[$_] = min($client->maxBass, max($client->minBass, $paramRef->{"pref_equalizer.$_"} || 0))
|
||||||
}
|
}
|
||||||
|
$equalizer = [ splice(@$equalizer, 0, 10) ];
|
||||||
$cprefs->set('equalizer', $equalizer);
|
$cprefs->set('equalizer', $equalizer);
|
||||||
$client->update_tones($equalizer);
|
$client->update_tones($equalizer);
|
||||||
}
|
}
|
||||||
@@ -97,6 +98,7 @@ sub handler {
|
|||||||
$paramRef->{'pref_equalizer'} = $cprefs->get('equalizer') if $client->can('depth') && $client->depth == 16;
|
$paramRef->{'pref_equalizer'} = $cprefs->get('equalizer') if $client->can('depth') && $client->depth == 16;
|
||||||
$paramRef->{'player_ip'} = $client->ip;
|
$paramRef->{'player_ip'} = $client->ip;
|
||||||
|
|
||||||
|
require Plugins::SqueezeESP32::FirmwareHelper;
|
||||||
Plugins::SqueezeESP32::FirmwareHelper::initFirmwareDownload($client, sub {
|
Plugins::SqueezeESP32::FirmwareHelper::initFirmwareDownload($client, sub {
|
||||||
my ($currentFWInfo, $newFWUrl, $customFwUrl) = @_;
|
my ($currentFWInfo, $newFWUrl, $customFwUrl) = @_;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user