Skip to content

Commit 749362b

Browse files
authored
FirmwareView: use Adw.NavigationView (#381)
1 parent fb6b064 commit 749362b

2 files changed

Lines changed: 32 additions & 48 deletions

File tree

src/Views/FirmwareReleaseView.vala

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/*
22
* SPDX-License-Identifier: GPL-3.0-or-later
3-
* SPDX-FileCopyrightText: 2021-2023 elementary, Inc. (https://elementary.io)
3+
* SPDX-FileCopyrightText: 2021-2025 elementary, Inc. (https://elementary.io)
44
*
55
* Authored by: Marius Meisenzahl <mariusmeisenzahl@gmail.com>
66
*/
77

8-
public class About.FirmwareReleaseView : Gtk.Box {
8+
public class About.FirmwareReleaseView : Adw.NavigationPage {
99
public signal void update (Fwupd.Device device, Fwupd.Release release);
1010

1111
private Fwupd.Device device;
@@ -22,29 +22,22 @@ public class About.FirmwareReleaseView : Gtk.Box {
2222
private Gtk.Label vendor_value_label;
2323
private Gtk.Label size_value_label;
2424
private Gtk.Label install_duration_value_label;
25-
private Adw.Leaflet? deck;
2625

2726
construct {
2827
var back_button = new Gtk.Button.with_label (_("All Updates")) {
29-
halign = START,
30-
margin_top = 6,
31-
margin_end = 6,
32-
margin_bottom = 6,
33-
margin_start = 6,
28+
action_name = "navigation.pop",
29+
halign = START
3430
};
3531
back_button.add_css_class (Granite.STYLE_CLASS_BACK_BUTTON);
3632

3733
title_label = new Gtk.Label ("") {
3834
ellipsize = END,
3935
use_markup = true
4036
};
37+
title_label.add_css_class ("title");
4138

4239
update_button = new Gtk.Button.with_label ("") {
4340
halign = END,
44-
margin_top = 6,
45-
margin_end = 6,
46-
margin_bottom = 6,
47-
margin_start = 6,
4841
sensitive = false
4942
};
5043
update_button.add_css_class (Granite.STYLE_CLASS_SUGGESTED_ACTION);
@@ -53,12 +46,13 @@ public class About.FirmwareReleaseView : Gtk.Box {
5346
child = update_button
5447
};
5548

56-
var header_box = new Gtk.CenterBox () {
49+
var header_bar = new Gtk.HeaderBar () {
5750
hexpand = true,
58-
start_widget = back_button,
59-
center_widget = title_label,
60-
end_widget = update_button_revealer
51+
show_title_buttons = false,
52+
title_widget = title_label
6153
};
54+
header_bar.pack_start (back_button);
55+
header_bar.pack_end (update_button_revealer);
6256

6357
summary_label = new Gtk.Label ("") {
6458
halign = START,
@@ -151,20 +145,20 @@ public class About.FirmwareReleaseView : Gtk.Box {
151145
stack.add_child (placeholder);
152146
stack.add_child (scrolled_window);
153147

154-
orientation = VERTICAL;
155-
add_css_class (Granite.STYLE_CLASS_VIEW);
156-
append (header_box);
157-
append (new Gtk.Separator (HORIZONTAL));
158-
append (stack);
148+
var toolbarview = new Adw.ToolbarView () {
149+
content = stack,
150+
top_bar_style = RAISED_BORDER
151+
};
152+
toolbarview.add_top_bar (header_bar);
159153

160-
back_button.clicked.connect (() => {
161-
go_back ();
162-
});
154+
child = toolbarview;
163155

164156
update_button.clicked.connect (() => {
165-
go_back ();
157+
activate_action ("navigation.pop", null);
166158
update (device, release);
167159
});
160+
161+
bind_property ("title", title_label, "label");
168162
}
169163

170164
public void update_view (Fwupd.Device device, Fwupd.Release? release) {
@@ -173,7 +167,7 @@ public class About.FirmwareReleaseView : Gtk.Box {
173167

174168
var device_name = device.get_name ();
175169

176-
title_label.label = "<b>%s</b>".printf (device_name);
170+
title = device_name;
177171
update_button_revealer.reveal_child = release != null;
178172

179173
if (release == null) {
@@ -233,12 +227,4 @@ public class About.FirmwareReleaseView : Gtk.Box {
233227
).printf (duration_minutes);
234228
}
235229
}
236-
237-
private void go_back () {
238-
if (deck == null) {
239-
deck = (Adw.Leaflet) get_ancestor (typeof (Adw.Leaflet));
240-
}
241-
242-
deck.navigate (BACK);
243-
}
244230
}

src/Views/FirmwareView.vala

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
public class About.FirmwareView : Switchboard.SettingsPage {
2323
private Gtk.Stack stack;
24-
private Adw.Leaflet deck;
24+
private Adw.NavigationView navigation_view;
2525
private FirmwareReleaseView firmware_release_view;
2626
private Granite.Placeholder progress_alert_view;
2727
private Granite.Placeholder placeholder_alert_view;
@@ -60,20 +60,18 @@ public class About.FirmwareView : Switchboard.SettingsPage {
6060
child = update_list
6161
};
6262

63+
var update_page = new Adw.NavigationPage (update_scrolled, _("All Updates"));
64+
6365
firmware_release_view = new FirmwareReleaseView ();
6466

65-
deck = new Adw.Leaflet () {
66-
can_navigate_back = true,
67-
can_unfold = false
68-
};
69-
deck.append (update_scrolled);
70-
deck.append (firmware_release_view);
71-
deck.visible_child = update_scrolled;
67+
navigation_view = new Adw.NavigationView ();
68+
navigation_view.add (update_page);
69+
navigation_view.add_css_class (Granite.STYLE_CLASS_VIEW);
7270

7371
stack = new Gtk.Stack () {
7472
transition_type = Gtk.StackTransitionType.SLIDE_LEFT_RIGHT
7573
};
76-
stack.add_child (deck);
74+
stack.add_child (navigation_view);
7775
stack.add_child (progress_alert_view);
7876

7977
var frame = new Gtk.Frame (null) {
@@ -120,7 +118,7 @@ public class About.FirmwareView : Switchboard.SettingsPage {
120118
placeholder_alert_view.description = _("Please make sure “fwupd” is installed and enabled.");
121119
}
122120

123-
stack.visible_child = deck;
121+
stack.visible_child = navigation_view;
124122
}
125123

126124
private void add_device (Fwupd.Device device) {
@@ -161,7 +159,7 @@ public class About.FirmwareView : Switchboard.SettingsPage {
161159
if (widget is Widgets.FirmwareUpdateRow) {
162160
var row = (Widgets.FirmwareUpdateRow) widget;
163161
firmware_release_view.update_view (row.device, row.release);
164-
deck.visible_child = firmware_release_view;
162+
navigation_view.push (firmware_release_view);
165163
}
166164
}
167165

@@ -170,7 +168,7 @@ public class About.FirmwareView : Switchboard.SettingsPage {
170168

171169
add_device (device);
172170

173-
stack.visible_child = deck;
171+
stack.visible_child = navigation_view;
174172
}
175173

176174
private void on_device_removed (Fwupd.Client client, Fwupd.Device device) {
@@ -245,7 +243,7 @@ public class About.FirmwareView : Switchboard.SettingsPage {
245243
if (response == Gtk.ResponseType.ACCEPT) {
246244
continue_update.begin (device, release);
247245
} else {
248-
stack.visible_child = deck;
246+
stack.visible_child = navigation_view;
249247
return;
250248
}
251249
});
@@ -293,7 +291,7 @@ public class About.FirmwareView : Switchboard.SettingsPage {
293291
show_error_dialog (device, e.message);
294292
}
295293

296-
stack.visible_child = deck;
294+
stack.visible_child = navigation_view;
297295
update_list_view.begin ();
298296
}
299297

0 commit comments

Comments
 (0)