[gnome-software/wip/hughsie/notify-firmware-requires-update] Show a notification when just one firmware is installed
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/hughsie/notify-firmware-requires-update] Show a notification when just one firmware is installed
- Date: Fri, 17 May 2019 16:06:11 +0000 (UTC)
commit 7b1f22da79c120828a22fcfca52c37281d62521a
Author: Richard Hughes <richard hughsie com>
Date: Fri May 17 17:04:50 2019 +0100
Show a notification when just one firmware is installed
This means we show the same UI if the user installs all the firmware updates or
just one of them. We don't want the user to think the update was done live.
src/gs-common.c | 26 ++++++++++++++++++++++++++
src/gs-common.h | 1 +
src/gs-page.c | 7 +++++++
src/gs-updates-section.c | 14 ++------------
4 files changed, 36 insertions(+), 12 deletions(-)
---
diff --git a/src/gs-common.c b/src/gs-common.c
index 06577994..a0723f60 100644
--- a/src/gs-common.c
+++ b/src/gs-common.c
@@ -607,3 +607,29 @@ gs_utils_list_has_app_fuzzy (GsAppList *list, GsApp *app)
}
return FALSE;
}
+
+void
+gs_utils_reboot_notify (GsAppList *list)
+{
+ g_autoptr(GNotification) n = NULL;
+
+ if (gs_app_list_length (list) == 1) {
+ /* TRANSLATORS: we've just live-updated some apps */
+ n = g_notification_new (_("An update has been installed"));
+ /* TRANSLATORS: the new apps will not be run until we restart */
+ g_notification_set_body (n, _("A restart is required for it to take effect."));
+ } else {
+ /* TRANSLATORS: we've just live-updated some apps */
+ n = g_notification_new (_("Updates have been installed"));
+ /* TRANSLATORS: the new app will not work until we restart */
+ g_notification_set_body (n, _("A restart is required for them to take effect."));
+ }
+
+ /* TRANSLATORS: button text */
+ g_notification_add_button (n, _("Not Now"), "app.nop");
+ /* TRANSLATORS: button text */
+ g_notification_add_button_with_target (n, _("Restart"), "app.reboot", NULL);
+ g_notification_set_default_action_and_target (n, "app.set-mode", "s", "updates");
+ g_notification_set_priority (n, G_NOTIFICATION_PRIORITY_URGENT);
+ g_application_send_notification (g_application_get_default (), "restart-required", n);
+}
diff --git a/src/gs-common.h b/src/gs-common.h
index 7b5e9acd..89e6db59 100644
--- a/src/gs-common.h
+++ b/src/gs-common.h
@@ -43,5 +43,6 @@ gchar *gs_utils_build_unique_id_kind (AsAppKind kind,
const gchar *id);
gboolean gs_utils_list_has_app_fuzzy (GsAppList *list,
GsApp *app);
+void gs_utils_reboot_notify (GsAppList *list);
G_END_DECLS
diff --git a/src/gs-page.c b/src/gs-page.c
index 5c6ee138..a596bed5 100644
--- a/src/gs-page.c
+++ b/src/gs-page.c
@@ -214,6 +214,13 @@ gs_page_app_installed_cb (GObject *source,
return;
}
+ /* the single update needs system reboot, e.g. for firmware */
+ if (gs_app_has_quirk (helper->app, GS_APP_QUIRK_NEEDS_REBOOT)) {
+ g_autoptr(GsAppList) list = gs_app_list_new ();
+ gs_app_list_add (list, helper->app);
+ gs_utils_reboot_notify (list);
+ }
+
/* only show this if the window is not active */
if (gs_app_is_installed (helper->app) &&
helper->action == GS_PLUGIN_ACTION_INSTALL &&
diff --git a/src/gs-updates-section.c b/src/gs-updates-section.c
index 384b5ae2..5806371a 100644
--- a/src/gs-updates-section.c
+++ b/src/gs-updates-section.c
@@ -14,6 +14,7 @@
#include "gs-app-list-private.h"
#include "gs-app-row.h"
#include "gs-page.h"
+#include "gs-common.h"
#include "gs-progress-button.h"
#include "gs-update-dialog.h"
#include "gs-updates-section.h"
@@ -314,18 +315,7 @@ _perform_update_cb (GsPluginLoader *plugin_loader, GAsyncResult *res, gpointer u
/* when we are not doing an offline update, show a notification
* if any application requires a reboot */
} else if (helper->do_reboot_notification) {
- g_autoptr(GNotification) n = NULL;
- /* TRANSLATORS: we've just live-updated some apps */
- n = g_notification_new (_("Updates have been installed"));
- /* TRANSLATORS: the new apps will not be run until we restart */
- g_notification_set_body (n, _("A restart is required for them to take effect."));
- /* TRANSLATORS: button text */
- g_notification_add_button (n, _("Not Now"), "app.nop");
- /* TRANSLATORS: button text */
- g_notification_add_button_with_target (n, _("Restart"), "app.reboot", NULL);
- g_notification_set_default_action_and_target (n, "app.set-mode", "s", "updates");
- g_notification_set_priority (n, G_NOTIFICATION_PRIORITY_URGENT);
- g_application_send_notification (g_application_get_default (), "restart-required", n);
+ gs_utils_reboot_notify (self->list);
}
out:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]