]> wagnertech.de Git - mfinanz.git/blob - SL/Helper/UserPreferences/DisplayPreferences.pm
kivitendo 3.9.2-0.2
[mfinanz.git] / SL / Helper / UserPreferences / DisplayPreferences.pm
1 package SL::Helper::UserPreferences::DisplayPreferences;
2
3 use strict;
4 use parent qw(Rose::Object);
5
6 use SL::Helper::UserPreferences;
7
8 use Rose::Object::MakeMethods::Generic (
9   'scalar --get_set_init' => [ qw(user_prefs) ],
10 );
11
12 sub get_longdescription_dialog_size_percentage {
13   $_[0]->user_prefs->get('longdescription_dialog_size_percentage');
14 }
15
16 sub store_longdescription_dialog_size_percentage {
17   $_[0]->user_prefs->store('longdescription_dialog_size_percentage', $_[1]);
18 }
19
20 sub get_layout_style {
21   my $value   = $_[0]->user_prefs->get('layout_style');
22   $value    //= $::instance_conf->get_layout_style;
23   return $value;
24 }
25
26 sub store_layout_style {
27   my ($self, $style) = @_;
28
29   if (!$style) {
30     $self->user_prefs->delete('layout_style');
31     return;
32   }
33
34   if ( !($style eq 'desktop' || $style eq 'mobile' || $style eq 'auto') ) {
35     die "unknown layout style '$style'";
36   }
37
38   $self->user_prefs->store('layout_style', $style);
39 }
40
41 sub init_user_prefs {
42   SL::Helper::UserPreferences->new(
43     namespace => $_[0]->namespace,
44   )
45 }
46
47 # read only stuff
48 sub namespace     { 'DisplayPreferences' }
49 sub version       { 1 }
50
51 1;
52
53 __END__
54
55 =pod
56
57 =encoding utf-8
58
59 =head1 NAME
60
61 SL::Helper::UserPreferences::DisplayPreferences - preferences intended
62 to store user settings for various display settings.
63
64 =head1 SYNOPSIS
65
66   use SL::Helper::UserPreferences::DisplayPreferences;
67   my $prefs = SL::Helper::UserPreferences::DisplayPreferences->new();
68
69   $prefs->store_longdescription_dialog_size_percentage(25);
70   my $value = $prefs->get_longdescription_dialog_size_percentage;
71
72 =head1 DESCRIPTION
73
74 This module manages storing the user's choise for settings for
75 various display settings.
76
77 =head2 These settings are supported:
78
79 =over 4
80
81 =item longdescription_dialog_size_percentage
82
83 The preferred procentual size of the edit-dialog for longdescriptions
84 of positions can be stored.
85
86 =item layout_style
87
88 Here the layout style can be forced to be 'desktop' or 'mobile'
89 regardless of the user agend string. If this user setting is unset
90 then the setting from the client configuration will be used.
91
92 =back
93
94 =head1 BUGS
95
96 None yet :)
97
98 =head1 AUTHOR
99
100 Bernd Bleßmann E<lt>bernd@kivitendo-premium.deE<gt>
101
102 =cut