-
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
-
92
-
93
// Copyright 2025 Shota FUJI
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// SPDX-License-Identifier: Apache-2.0
namespace PlacGtkAdwaita {
private const string CONNECTED_SERVER_ID = "connected-server-id";
private const string CONNECTED_SERVER_TOKEN = "connected-server-token";
private const string CONNECTED_SERVER_ADDR = "connected-server-addr";
private const string CONNECTED_SERVER_PORT = "connected-server-port";
public class Settings {
public const string DISCOVERY_UDP_PORT = "discovery-udp-port";
public const string LABEL_PARSING_ENABLED = "label-parsing-enabled";
public const string SHOW_SEEK_BY_10SECS = "show-seek-by-10secs";
public const string SHOW_STOP_BUTTON = "show-stop-button";
public const string SEEK_STEP_SIZE = "seek-step-size";
public const string SEEK_PAGE_SIZE = "seek-page-size";
public const string SHOW_BROWSE_ITEM_SEPARATORS = "show-browse-item-separators";
public const string FOCUS_BROWSE_ITEMS_ON_LOAD = "focus-browse-items-on-load";
public const string DISABLE_CSD = "disable-csd";
public const string STARTUP_CATEGORY = "startup-category";
public GLib.Settings settings;
public Settings() {
settings = new GLib.Settings(Config.PLAC_APP_ID);
}
public uint16 discovery_udp_port {
owned get {
var value = settings.get_uint(DISCOVERY_UDP_PORT);
if (value > uint16.MAX) {
return 0;
}
return (uint16) value;
}
set { settings.set_uint(DISCOVERY_UDP_PORT, value); }
}
public string connected_server_id {
owned get { return settings.get_string(CONNECTED_SERVER_ID); }
set { settings.set_string(CONNECTED_SERVER_ID, value); }
}
public string connected_server_token {
owned get { return settings.get_string(CONNECTED_SERVER_TOKEN); }
set { settings.set_string(CONNECTED_SERVER_TOKEN, value); }
}
public string connected_server_addr {
owned get { return settings.get_string(CONNECTED_SERVER_ADDR); }
set { settings.set_string(CONNECTED_SERVER_ADDR, value); }
}
public uint16 connected_server_port {
owned get { return (uint16) settings.get_uint(CONNECTED_SERVER_PORT); }
set { settings.set_uint(CONNECTED_SERVER_PORT, value); }
}
public bool label_parsing_enabled {
owned get { return settings.get_boolean(LABEL_PARSING_ENABLED); }
set { settings.set_boolean(LABEL_PARSING_ENABLED, value); }
}
public bool focus_browse_items_on_load {
owned get { return settings.get_boolean(FOCUS_BROWSE_ITEMS_ON_LOAD); }
set { settings.set_boolean(FOCUS_BROWSE_ITEMS_ON_LOAD, value); }
}
public bool disable_csd {
owned get { return settings.get_boolean(FOCUS_BROWSE_ITEMS_ON_LOAD); }
set { settings.set_boolean(FOCUS_BROWSE_ITEMS_ON_LOAD, value); }
}
public Roon.Browse.Hierarchy startup_category {
owned get { return Roon.Browse.Hierarchy.from_int(settings.get_int(STARTUP_CATEGORY)); }
set { settings.set_int(STARTUP_CATEGORY, value); }
}
}
}