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 () {