-
Notifications
You must be signed in to change notification settings - Fork 3
/
PlayerSettings.pm
91 lines (72 loc) · 2.39 KB
/
PlayerSettings.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package Plugins::DomoticzControl::PlayerSettings;
use strict;
use base qw(Slim::Web::Settings);
use Slim::Utils::Prefs;
use Slim::Utils::Alarm;
my $pluginprefs = preferences('plugin.DomoticzControl');
my $serverprefs = preferences('server');
sub needsClient {
return 1;
}
sub name {
return Slim::Web::HTTP::CSRF->protectName('PLUGIN_DOMOTICZCONTROL_PLAYER_SETTINGS');
}
sub page {
return Slim::Web::HTTP::CSRF->protectURI('plugins/DomoticzControl/settings/player.html');
}
sub prefs {
my ($class, $client) = @_;
return ($pluginprefs->client($client), Plugins::DomoticzControl::Plugin::getPrefNames());
}
sub handler {
my ($class, $client, $paramRef) = @_;
my ($prefsClass, @prefs) = $class->prefs($client);
my @alarmsObj = Slim::Utils::Alarm->getAlarms($client);
my %savedAlarms;
my %savedSnoozes;
# Data::Dump::dump(%domoAlarmsId);
# Data::Dump::dump(%domoSnoozesId);
# $Template::Stash::PRIVATE = undef;
if ($paramRef->{'saveSettings'}) {
# set undefined to 0, we don't wand undefined to be saved because it will be overwritten by default values
foreach my $pref (@prefs) {
if (! defined $paramRef->{'pref_' . $pref}) {
$paramRef->{'pref_' . $pref} = 0;
}
}
foreach my $alarm (@alarmsObj) {
my $id = $alarm->id();
$savedAlarms{$id} = $paramRef->{'alarmId' . $id};
$savedSnoozes{$id} = $paramRef->{'snoozeId' . $id};
}
$prefsClass->set('alarms', \%savedAlarms);
$prefsClass->set('snoozes', \%savedSnoozes);
Plugins::DomoticzControl::Plugin::resetPref($client);
}
else {
my $prefsAlarms = $prefsClass->get('alarms');
my $prefsSnoozes = $prefsClass->get('snoozes');
if ($prefsAlarms) {
%savedAlarms = %{ $prefsAlarms };
}
if ($prefsSnoozes) {
%savedSnoozes = %{ $prefsSnoozes };
}
}
# Data::Dump::dump(%savedAlarms);
# Data::Dump::dump(%savedSnoozes);
my @alarms;
foreach my $alarm (@alarmsObj) {
my $id = $alarm->id();
my %rec;
$rec{"id"} = $id;
$rec{"alarm"} = $savedAlarms{$id};
$rec{"snooze"} = $savedSnoozes{$id};
push @alarms, \%rec;
}
$paramRef->{'alarms'} = \@alarms;
# Data::Dump::dump(\@alarms);
return $class->SUPER::handler($client, $paramRef);
}
1;
__END__