diff --git a/README.md b/README.md
index 47c4aa6d4..4c4f4c751 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ You'll need the following dependencies:
- libgranite-7-dev >=7.4.0
- libgtk-4-dev
- libgee-0.8-dev
- - libadwaita-1-dev >=1.0.0
+ - libadwaita-1-dev >=1.4.0
- libjson-glib-dev
- libpwquality-dev
- libxml2-dev
diff --git a/meson.build b/meson.build
index b48486ec3..8f1a847ff 100644
--- a/meson.build
+++ b/meson.build
@@ -19,7 +19,7 @@ gtk_dep = dependency('gtk4')
gee_dep = dependency('gee-0.8')
gio_dep = dependency('gio-2.0')
granite_dep = dependency('granite-7', version: '>=7.4.0')
-adw_dep = dependency('libadwaita-1', version: '>=1.0.0')
+adw_dep = dependency('libadwaita-1', version: '>=1.4.0')
json_glib_dep = dependency('json-glib-1.0')
xml2_dep = dependency('libxml-2.0')
pwquality_dep = dependency('pwquality')
diff --git a/src/Views/AbstractInstallerView.vala b/src/Views/AbstractInstallerView.vala
index 943e8fc3a..7ffb33f9e 100644
--- a/src/Views/AbstractInstallerView.vala
+++ b/src/Views/AbstractInstallerView.vala
@@ -1,21 +1,9 @@
-/*-
- * Copyright 2017–2021 elementary, Inc. (https://elementary.io)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+/*
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ * SPDX-FileCopyrightText: 2017-2024 elementary, Inc. (https://elementary.io)
*/
-public abstract class AbstractInstallerView : Gtk.Box {
+public abstract class AbstractInstallerView : Adw.NavigationPage {
public bool cancellable { get; construct; }
public signal void cancel ();
@@ -86,6 +74,6 @@ public abstract class AbstractInstallerView : Gtk.Box {
main_box.append (box);
main_box.append (action_area);
- append (main_box);
+ child = main_box;
}
}
diff --git a/src/Views/CheckView.vala b/src/Views/CheckView.vala
index a9d3efe86..947bccb4b 100644
--- a/src/Views/CheckView.vala
+++ b/src/Views/CheckView.vala
@@ -47,7 +47,9 @@ public class Installer.CheckView : AbstractInstallerView {
valign = Gtk.Align.END
};
- var title_label = new Gtk.Label (_("Before Installing")) {
+ title = _("Before Installing");
+
+ var title_label = new Gtk.Label (title) {
valign = Gtk.Align.START
};
diff --git a/src/Views/DiskView.vala b/src/Views/DiskView.vala
index 817413093..6d92fa70a 100644
--- a/src/Views/DiskView.vala
+++ b/src/Views/DiskView.vala
@@ -43,7 +43,9 @@ public class Installer.DiskView : AbstractInstallerView {
};
image_overlay.add_overlay (install_badge);
- var install_label = new Gtk.Label (_("Select a Drive"));
+ title = _("Select a Drive");
+
+ var install_label = new Gtk.Label (title);
var install_desc_label = new Gtk.Label (
_("This will erase all data on the selected drive. If you have not backed your data up, you can cancel the installation and use Demo Mode.")
diff --git a/src/Views/DriversView.vala b/src/Views/DriversView.vala
index ac02f53bc..16d3fee88 100644
--- a/src/Views/DriversView.vala
+++ b/src/Views/DriversView.vala
@@ -23,7 +23,9 @@
pixel_size = 128
};
- var title_label = new Gtk.Label (_("Additional Drivers"));
+ title = _("Additional Drivers");
+
+ var title_label = new Gtk.Label (title);
var description_label = new Gtk.Label (_("Broadcom® Wi-Fi adapters, NVIDIA® graphics, and some virtual machines may not function properly without additional drivers. Most devices do not require additional drivers.")) {
max_width_chars = 1, // Make Gtk wrap, but not expand the window
diff --git a/src/Views/EncryptView.vala b/src/Views/EncryptView.vala
index 8a08bfe40..9694527c5 100644
--- a/src/Views/EncryptView.vala
+++ b/src/Views/EncryptView.vala
@@ -47,7 +47,9 @@ public class EncryptView : AbstractInstallerView {
};
overlay.add_overlay (overlay_image);
- var title_label = new Gtk.Label (_("Enable Drive Encryption"));
+ title = _("Enable Drive Encryption");
+
+ var title_label = new Gtk.Label (title);
var details_label = new Gtk.Label (_("Encrypt this device's drive if required for added protection, but be sure you understand:")) {
hexpand = true,
diff --git a/src/Views/ErrorView.vala b/src/Views/ErrorView.vala
index 0957e4d67..bffdfc6bf 100644
--- a/src/Views/ErrorView.vala
+++ b/src/Views/ErrorView.vala
@@ -28,7 +28,9 @@ public class ErrorView : AbstractInstallerView {
pixel_size = 128
};
- var title_label = new Gtk.Label (_("Could Not Install"));
+ title = _("Could Not Install");
+
+ var title_label = new Gtk.Label (title);
var description_label = new Gtk.Label (_("Installing %s failed, possibly due to a hardware error. The device may not restart properly. You can try the following:").printf (Utils.get_pretty_name ())) {
margin_bottom = 12,
diff --git a/src/Views/KeyboardLayoutView.vala b/src/Views/KeyboardLayoutView.vala
index d392af729..5148723a9 100644
--- a/src/Views/KeyboardLayoutView.vala
+++ b/src/Views/KeyboardLayoutView.vala
@@ -27,7 +27,9 @@ public class KeyboardLayoutView : AbstractInstallerView {
valign = Gtk.Align.END
};
- var title_label = new Gtk.Label (_("Select Keyboard Layout")) {
+ title = _("Select Keyboard Layout");
+
+ var title_label = new Gtk.Label (title) {
valign = Gtk.Align.START
};
diff --git a/src/Views/LanguageView.vala b/src/Views/LanguageView.vala
index 8cfbca683..3139bbe46 100644
--- a/src/Views/LanguageView.vala
+++ b/src/Views/LanguageView.vala
@@ -270,6 +270,7 @@ public class Installer.LanguageView : AbstractInstallerView {
}
unowned string label_text = LocaleHelper.lang_gettext (N_("Select a Language"), ((LangRow) row).lang_entry.get_code ());
+ title = label_text;
select_label = new Gtk.Label (label_text);
select_stack.add_child (select_label);
select_stack.set_visible_child (select_label);
diff --git a/src/Views/PartitioningView.vala b/src/Views/PartitioningView.vala
index 8a279a4e3..24574cdf4 100644
--- a/src/Views/PartitioningView.vala
+++ b/src/Views/PartitioningView.vala
@@ -49,7 +49,9 @@ public class Installer.PartitioningView : AbstractInstallerView {
mounts = new Gee.ArrayList ();
luks = new Gee.ArrayList ();
- var title_label = new Gtk.Label (_("Select Partitions"));
+ title = _("Select Partitions");
+
+ var title_label = new Gtk.Label (title);
var format_row = new DescriptionRow (
_("Selecting “Format” will erase all data on the selected partition."),
diff --git a/src/Views/ProgressView.vala b/src/Views/ProgressView.vala
index 254b1e579..26dd5ba7a 100644
--- a/src/Views/ProgressView.vala
+++ b/src/Views/ProgressView.vala
@@ -15,7 +15,7 @@
* along with this program. If not, see .
*/
-public class ProgressView : Gtk.Box {
+public class ProgressView : Adw.NavigationPage {
public signal void on_success ();
public signal void on_error ();
@@ -87,7 +87,8 @@ public class ProgressView : Gtk.Box {
content_area.attach (terminal_button, 1, 1);
content_area.attach (progressbar, 0, 2, 2);
- append (content_area);
+ title = _("Installing");
+ child = content_area;
terminal_button.toggled.connect (() => {
if (terminal_button.active) {
diff --git a/src/Views/SuccessView.vala b/src/Views/SuccessView.vala
index 46b991bfc..8384ef50b 100644
--- a/src/Views/SuccessView.vala
+++ b/src/Views/SuccessView.vala
@@ -25,7 +25,9 @@ public class SuccessView : AbstractInstallerView {
pixel_size = 128
};
- var title_label = new Gtk.Label (_("Continue Setting Up"));
+ title = _("Continue Setting Up");
+
+ var title_label = new Gtk.Label (title);
var primary_label = new Gtk.Label (_("%s has been installed").printf (Utils.get_pretty_name ())) {
hexpand = true,
diff --git a/src/Views/TryInstallView.vala b/src/Views/TryInstallView.vala
index f5f94976e..ef3f09fe6 100644
--- a/src/Views/TryInstallView.vala
+++ b/src/Views/TryInstallView.vala
@@ -24,7 +24,9 @@ public class Installer.TryInstallView : AbstractInstallerView {
pixel_size = 128
};
- var type_label = new Gtk.Label (_("Try or Install"));
+ title = _("Try or Install");
+
+ var type_label = new Gtk.Label (title);
// Force the user to make a conscious selection, not spam "Next"
var no_selection = new Gtk.CheckButton () {