-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprefs.js
More file actions
126 lines (108 loc) · 4.16 KB
/
prefs.js
File metadata and controls
126 lines (108 loc) · 4.16 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import { ExtensionPreferences,gettext } from "resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js";
import Adw from "gi://Adw";
import Gio from "gi://Gio";
import GLib from "gi://GLib";
import Gtk from "gi://Gtk";
const schema = 'org.gnome.shell.extensions.netStatus';
var settings,config;
export default class netStatusPreferences extends ExtensionPreferences {
fillPreferencesWindow(window) {
settings = this.getSettings(schema);
config={
refreshTime:settings.get_int('refreshtime'),
history:JSON.parse(settings.get_string('history')),
days:settings.get_int('days'),
bit:settings.get_boolean('bit')
};
const page = new Adw.PreferencesPage();
const group = new Adw.PreferencesGroup();
page.add(group);
const refreshtimeRow = new Adw.ActionRow({
title: gettext("refreshSettings"),
subtitle: gettext("refreshInterval")
});
group.add(refreshtimeRow);
const refreshtime = new Gtk.SpinButton({
adjustment: new Gtk.Adjustment({
lower: 1,
upper: 60,
step_increment: 1,
page_increment: 10
}),
valign: Gtk.Align.CENTER,
hexpand: true,
numeric: true,
snap_to_ticks: true,
value: config.refreshTime
});
settings.bind("refreshtime", refreshtime, "value", Gio.SettingsBindFlags.DEFAULT);
refreshtimeRow.add_suffix(refreshtime);
refreshtimeRow.activatable_widget = refreshtime;
const daysRow = new Adw.ActionRow({
title: gettext("statisticsSettings"),
subtitle: gettext("statisticsRange")
});
group.add(daysRow);
const days = new Gtk.SpinButton({
adjustment: new Gtk.Adjustment({
lower: 1,
upper: 60,
step_increment: 1,
page_increment: 10
}),
valign: Gtk.Align.CENTER,
hexpand: true,
numeric: true,
snap_to_ticks: true,
value: config.days
});
settings.bind("days", days, "value", Gio.SettingsBindFlags.DEFAULT);
daysRow.add_suffix(days);
daysRow.activatable_widget = days;
const bitRow = new Adw.ActionRow({
title: gettext("displaySettings"),
subtitle: gettext("bitUnitsMode")
});
group.add(bitRow);
const bit = new Gtk.Switch({
active: config.bit,
valign: Gtk.Align.CENTER,
});
settings.bind("bit",bit,"active",Gio.SettingsBindFlags.DEFAULT);
bitRow.add_suffix(bit);
bitRow.activatable_widget = bit;
let ifaces=[];
try{
let input_file = Gio.file_new_for_path('/proc/net/dev');
let [, contents, etag] = input_file.load_contents(null);
contents = new TextDecoder().decode(contents);
let lines = contents.split('\n');
for (let line of lines) {
line = line.trim();
let fields = line.split(/\W+/);
if (fields.length <= 2) break;
if(!isNaN(parseInt(fields[1])) && !ifaces.includes(fields[0]))ifaces.push(fields[0]);
}
}catch(e){}
ifaces.sort();
ifaces.unshift(gettext("default"));
const ifaceRow = new Adw.ActionRow({
title: gettext("ifaceSettings"),
subtitle: gettext("ifaceSelect")
});
group.add(ifaceRow);
let selectedId=ifaces.indexOf(settings.get_string("ifacewhitelist"));
if(selectedId<0)selectedId=0;
const ifaceList = new Gtk.DropDown({
valign: Gtk.Align.CENTER,
model: Gtk.StringList.new(ifaces),
selected: selectedId
});
ifaceList.connect('notify::selected', widget => {
settings.set_string('ifacewhitelist', widget.selected>0?ifaces[widget.selected]:"");
});
ifaceRow.add_suffix(ifaceList);
ifaceRow.activatable_widget = ifaceList;
window.add(page);
}
}